Turn insight into deep, meaningful action using Microsoft Flow and Power BI
We’ve added 21 new 3rd party apps to the Azure AD App Gallery!
Howdy folks,
Many of you probably associate Azure AD with Office 365 & Microsoft Azure. That makes a lot of sense. Those are the cloud services our customers use the most with Azure AD.
But you might be surprised to learn that customers use Azure AD with a TON of applications built by 3rd party developers. This is one of our most popular and fastest growing capabilities. This month alone our customers used Azure AD with more than 170,000 3rd party applications!
Given how popular this capability is, I’m excited to announce that working with our ISV partners, we’ve just added 22 new 3rd party apps to the Azure AD app gallery! Let’s take a quick tour of the apps we added.
HR apps:
FirmPlay: Employee Advocacy for Recruitingmanages your employee Advocacy program with powerful software that lets you curate, collect, create, and share employee generated content with prospective talent. FirmPlay app allows you to easily collect employee insights and turn them into engaging, shareable recruiting content the kind that resonates with top talent.
Patheer Coachprovides the tools for employees to continually grow and develop skills, it also empowers leaders to drive performance. The Patheer Coach app allows leaders to capture and analyze their talent landscape, such as identifying high-performing employees, forecasting talent and skill capability gaps to build a strong talent pipeline.
Pingboardis the place for everything you need to know about the people you work with. You can quickly build your org chart and share it with your team. Everyone will always know who’s who and who does what. Pingboard is the employee directory, org chart and out of office calendar.
PlanMyLeave is an HRIS and online leave management system designed to scale easily from small to medium businesses to large enterprises. PlanMyLeave helps you customize leave types and set up complex leave policies for any country.
Business Management apps:
Cavintek’s Cflowis a cloud-basedbusiness process management app that helps streamline and automate business process in SMBs. Cflow moves organization from emails and spreadsheets to using business apps and secures all communication.
Contract Rebates by Xen Computers Limited managescontractual pricing agreements between indirect customers and wholesalers, providing validataion and payment of rebates together with financial control and reporting capabilities.
Lecorpio Intellectual Property Management provides a secure, web-based portal that centrally manages the entire IP lifecycle from the submission of disclosures all the way through to the payment of annuities, and ongoing opposition filings, enforcement actions, arbitration, litigation, contracts, license agreements and more. Lecorpio is trusted by the world’s most innovative companies.
Collaboration apps:
Fuzeoffers unified communication service that enables efficient collaboration at work. Fuze combines voice, video, messaging, and content sharing in a single app with great user experience.
MaxxPoint brings together your unified communication apps from West UC with a secure and easy-to-use interface. MaxxPoint app gives you the visibility across your enterprise and the tools to manage your UC services.
Teamwork Projectsis acollaborative project managementapp designed to streamline processes and connect your team. The Teamwork Projects app keeps all your team’s tasks in one place, so your team can collaborate in real time for great results.
Works Mobile Chat Serviceoffers business messenger service for users to talk with their contact list freely. Users can easily send photos and videos while talking and can also share contact and location information. Works Mobile is the only business chat to connect with LINE. LINE Works also contacts customers and business partners for easy communication.
Content Management apps:
Azure DockItis a SaaS solution that automatically generates technical documentation of your Azure environment. Azure DockIt can generate a complete documentation of your Microsoft Azure Subscrtipion in less than 5 minutes.
Evernoteallows you to capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at any time from any devices. Evernote helps users collaborate in a single workspace.
Inkling offers a mobile platform that brings policies and procedures to life for deskless worker. The Inkling collaborative authoring tools let users select content types, drag and drop widgets, automate import of old files, and allow multiple authors edit the content simultaneously.
Developer Services apps:
GitHubis a development platform inspired by the way developers work. GitHub hosts code, manages projects, and builds software alongside millions of developers. GitHub brings teams together to work through problems, move ideas forward, and learn from each other along the way.
Facility Management apps:
ServiceChannelprovides facilities and contractor management platform that enables complete service automation and repair and maintenance management at all locations. ServiceChannel isin the process of transforming the Facilities Management industry and assisting companies to be better in running their operations.
Finance apps:
Land Gorilla Client appprovides the construction loan software and lending solutions that streamline post-closing construction administration services, so customers can easily scale and control their pipeline as they increase loan volume. Construction lenders trust Land Gorilla.
Healthcare apps:
Cerner Centralis a web portal for client IT administrators to manage identity federation, access management, and auditing capabilities for Cerner’s cloud platforms: Healthe Intent and Millennium. Cerner Central is the hub that securely connects your enterprise to the Cerner Cloud for app access, authentication token management, audit reports, device access, user accounts and more.
Desk Yogioffers a wellnesssolution and provides fitness, yoga, nutrition and stress reduction right at your desk. Desk Yogi helps you improve
your health and happiness with 3 to 10-minute video lessons taught by expert teachers.
Productivity apps:
Adobe Creative Cloudgives you everything that you need to turn your brightest ideas into your best work across your desktop and mobile devices and share it with the world. Creative Cloud provides the essential tools like Photoshop to innovative new tools like Adobe DX. You also get build-in templates to jump-start your designs and step-by-step tutorials to help you get up to speed quickly and sharpen your skills. It is your entire creative world, all in one place.
Project Management apps:
P2ware PPM solution combines leading project portfolio management techniques with 7*24 cloud availability. P2ware Project Manager is a project manage app that embraces all aspects of real world project management from planning to execution.
Security apps:
Zscaler Private Access (ZPA)
delivers policy-based, secure access to applications and assets without the hassle or security risks of a VPN. The Zscaler approach is more secure than VPN because it reduces the potential attack surface and doesn’t require hardware infrastructure.
If you want to suggest a new SaaS app, please submit your request using the Azure AD Application Request forum. We are actively reviewing the requests and working to release new SaaS app.
Best Regards,
Alex Simons (Twitter: @Alex_A_Simons)
Director of Program Management
Microsoft Identity Division
Helping communities bridge the digital divide with Office 365
Saeed Jabbar has spent the last two years building Inclusion—a non-profit determined to close the digital divide in his community of Queens, New York. By providing equal access to technology and job training, Jabbar is opening the information economy to those who are often overlooked.
“Forty-seven percent of the workforce is [facing] some kind of automation in the next 25 years,” Jabbar says. “A lot of people are going to lose jobs, and we need to do something immediately to resolve that issue. Giving people coding skills is one of the first steps on that path, so they can understand the language and the technology needed to survive in this new world.”
With training in Microsoft Excel, Word and PowerPoint, Inclusion provides students with tools to complement their education in programming and help them get hired.
“Microsoft is the standard,” Jabbar says. “These students are going into the workforce, and chances are, they’re going to work in a Word document [or] a PowerPoint presentation… If they go into the data side of things, they’re going to be interacting with Excel spreadsheets in one way or another.”
Jabbar depends on Microsoft Office 365 for keeping organized and growing his business. Although he started with just 50 applicants, Jabbar is now guiding more than 300 students through the Inclusion curriculum.
Excel is the backbone of Inclusion
When building budgets in Excel, Jabbar can accurately project the numbers for achieving his mission at scale and reduce the price for each student. To offer a comprehensive coding education to more people, Inclusion depends on Excel to predict and lower costs, and to set it apart from competitors.
“Excel saves us money and time on training staff, since most people already come in with some prior experience using the software,” Jabbar says. “Rather than waste extra resources with complicated CRMs, we store or import data into a spreadsheet for things like donor information, financial reporting, forecasting and budgeting.”
In fact, Inclusion is very close to reducing the cost-per-student to less than $1,000, which is unheard of in coding academies. It’s about 90 percent less than the industry average, which is about $15,000.
Jabbar says in the classroom, Excel is the go-to for data and analytics training. His program teaches students how to clean and sanitize data in spreadsheets using formulas like @TRIM, @PROPER and @TEXT. Students then learn how to tell visually compelling stories with bodies of data, and to outline conclusions based on the numbers.
Jabbar’s favorite Excel features are @VLOOKUP, which allows for finding and cross-referencing data in a matter of seconds, and data rendering, which uses graphs to breakdown data in a variety of ways.
Office 365 puts everyone on the same page
Office 365 allows students and team members to work seamlessly across all locations and Microsoft products, and to easily accomplish tasks without the hassle of loading screens, file formats and hardware compatibility. With Office 365, Jabbar’s team can take the powerful features they love in the desktop version of Office and use it wherever the job takes them––keeping everyone on the same page.
“Having the power of the Microsoft Cloud on the go allows us to accomplish our tasks with focus and efficiency,” Jabbar says. “Planes, trains and buses have become our new workspaces, saving time that would have otherwise been wasted commuting.”
Jabbar appreciates the design features within Word for making quick, easy and stylish-looking professional documents, and also values the ability to export documents in multiple formats.
Inclusion students also depend on Word for creating visually appealing, one-page resumes using the programs pre-existing design templates, as well as creating cover letters. Jabbar sees how the spelling and grammar check consistently supports his pupils, offering corrections that other editorial programs often miss.
PowerPoint helps Inclusion save time and earn investment
PowerPoint is critical to Inclusion’s creative process as they reach out to new communities, investors and partners. The ability to export PowerPoint presentations in a variety of formats, across any device, is extremely helpful, and Inclusion’s fundraising presentations have helped the organization earn investment and in-kind services from a variety of major tech companies.
“PowerPoint gives us extreme confidence knowing that our presentation will be seamless and won’t break during important meetings,” Jabbar says. “It also complements Excel nicely, as PowerPoint allows us to share, communicate and report findings from big data sources in a visually compelling manner.”
Jabbar teaches his students to create and design 10-page slideshows to communicate the products they’re coding in class, and to use PowerPoint’s built-in image editing tools to crop and manage images with ease. Students then pitch the products they build to a panel of prominent industry judges, and directly depend upon their acquired skills in PowerPoint to relay their ideas.
In remaining true to the purpose of his organization (and in guiding each student’s success in and outside the classroom), Office 365 makes Jabbar’s customized approach to coding education possible.
What will you do with your next 365? Visit products.office.com to get started.
The post Helping communities bridge the digital divide with Office 365 appeared first on Office Blogs.
Change Block Tracking needs to be reset if another backup product has protected a VMWare VM prior to DPM
In this scenario, the VMWare Host\VCenter server has successfully been connected in DPM. However, Replica creation, Consistency Checks, Recovery points fail with the noted error below (Some other similar errors but with same resolution).
DPMUI Error:
DPM encounterd error from VMware while trying to get ChangeTracking information. Server – 10.10.10.10 ErrorCode – FileFaultFault (ID 33621 Details: Internal error code: 0x80990EF3)
DPMRA Log on DPM server:
vmwarehelpers.h(25) WARNING VMWareErrorCode = FileFaultFault, Message = Error caused by file /vmfs/volumes/53dc5a20-ce9ee1ed-635b-288023aad568/Servername/Servername.vmdk
NOTE: If you are getting these errors, but have NOT protected a VMWare VM with any other product prior to DPM, this post may be helpful.
Review the “Steps to reset Change Block Tracking” section below if the VMWare VM has been protected prior to DPM backup. The article below has details. However, the steps I confirmed are slightly different, as step for step in the KB did not resolve the issue.
Environment Setup
- DPM must meet the prerequisites for protecting VMWare servers. (Link Below)https://technet.microsoft.com/en-us/library/mt742097(v=sc.12).aspx
- Add the VMWare ESXI host or vCenter server in DPM. This can be done via the Agents tab under Management in the DPM console. The TechNet article Manage VMware with DPM has step by step instructions.
- To protect VMWare VMs “change block tracking” must be enabled on the desired VM within VMWare. Both the VM and the disks need this feature enabled. This needs to be performed on all VMs needing protection. See https://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1031873 .
Steps to reset Change Block Tracking
- Log in to vSphere\vCenter
- Shut down the desired VM
- If you are not sure about the VM being protected before, steps 3-5 will confirm. In vSphere locate the desired VM. On the Summary tab under resources you’ll see Storage. The items listed under storage are the VMWare Data Stores. Right click on the Data Store and “Browse Data Store”
4. The list on the left will contain all servers associated with this particular data store. Locate the desired VM in the list and double click to open the Data Store file.
WARNING:
Step 5 can cause outages for the VM if the correct VMDK is not identified.
Brief description of VMWare VMDK files:
In VMware a VMDK serves the same purpose as a Windows VHD. The VMDK is the VMs virtual disk. In the data store you’ll see several VMDK files and this is why we need to be cautious as renaming the running virtual disk can cause issues.
5. In the Data Store, locate the CTK.VMDK (checkpoint VMDK). The article says to delete this file. To be safe it can be renamed until backups are working. Then you may want to consider deleting this file as it will continue to consume space in the Data Store. Exit the Data Store
6. In the vSphere console a list of servers will populate under your host. Locate the desired VM, right click, Edit Settings, Options Tab, Configuration Parameters.
7. Within the Configuration Parameters locate the two below rows and set the value to false.
scsi0:0.ctkEnabled
ctkEnabled
Apply, and exit VM Settings.
NOTE: The following steps are not mentioned in the VMWare article. I was not able to get a successful Change Block Tracking reset without the next set of reboots.
8. Power on the VM
9. After the VM boots, perform another shut down
10. Once the VM has been shut down, Right click on the VM, Edit Settings, Options Tab, Configuration Parameters. Within the Configuration Parameters locate the two below rows and set the value to True.
scsi0:0.ctkEnabled
ctkEnabled
Apply, and exit VM Settings.
11.Enable protection for the VM in DPM.
Links to VMWare and DPM documentation:
Enable CBT: https://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1031873
DPM Prerequisites:
https://technet.microsoft.com/en-us/library/mt742097(v=sc.12).aspx
DPM Manage VMWare:
https://technet.microsoft.com/en-us/library/mt742101(v=sc.12).aspx
-- Josh Gulick, Support Engineer, Microsoft
PR filtering by people and improved Azure resource group template parameter experience – Mar 29
Note: The features discussed in this post will be rolling out over the next three weeks.
We have several exciting new features this sprint, including Pull Request and Release Management improvements. Let’s get into the details!
Work item search for discussions
Work item search now supports searching the discussion field. Users can discover relevant content in discussions both by full text search and by applying the discussion filter (discussion:) to the search query.
Pull Request filtering by people
It’s now easier to find pull requests! We’ve added new filtering options to allow you to find PRs created by a specific author or assigned to a specific reviewer.
Simply select a user from the author or reviewer filter, and the list will be updated to show only the PRs that match the filter.
Reason required when bypassing pull request policies
Users that are bypassing pull request policies must now specify a reason. In the Complete pull request dialog, users will see a new Reason field, if they choose to bypass.
After entering the reason and completing the pull request, the message will be displayed in the Overview.
Add and view Git tags
View git tags on commits
If your team has been using Git tags to mark a specific point in the history of your repository, then your commits will now show the tags that you have created. You will be able view tags for a specific commit in the commit list view and the details page.
Add tags to commits
Instead of creating tags from the command line and pushing the tags to the repository, you can now simply go to a commit and add a tag. The tag creation dialog will also let you tag any other ref on the repo.
The commit list view also supports a context menu. No need to go to the commit details page to create tags and create new branches.
Coming soon:
- Tags page that shows all tags in a repository
- Ability to delete tags
Updated Changeset and Shelveset pages
We have modernized the changeset and shelveset pages in TFVC. Both pages are made more accessible for our customers who use assistive technologies. The new pages also have a new header that contains the changeset title and associated information about the changeset, such as author details.
Both changeset and shelveset pages also host the a new markdown discussion control that will allow to type comments in markdown, @mention users, associate work items using #, and easily attach files and images.
Import repositories from TFVC to Git
Users can migrate code from their TFVC repositories to Git repositories in the same account. To start migration, select Import Repository from the repository selector drop-down.
Individual folders or branches can be imported to the Git repository, or the entire TFVC repository can be imported (minus the branches). Users can also import up to 180 days of history.
Multiple recipients included on the same email (preview)
With this feature enabled, the recipients of an email notification are combined on the TO line of a single email. Previously, individual emails were sent to each recipient. This made it difficult to know who else received the notification and to have a conversation about the activity over email. Also, if you are a member of multiple groups that receive a notification, you will now only get one email, instead of one per group.
This feature applies to default (out of the box) and team subscriptions that are capable of targeting multiple recipients. For example, with this and the Out of the box notifications feature enabled, all reviewers (except for those that have opt’ed out) of an updated pull request will be included on a single email.
This feature can be enabled by an account admin by switching on the account-level Combine email recipients via the Preview features panel under the user menu.
Conditional build tasks
If you’re looking for more control over your build tasks, such as a task to clean things up or send a message when something goes wrong, we’re now offering four built-in choices for you to control when a task is run:
If you are looking for more flexibility, such as a task to run only for certain branches, with certain triggers, under certain conditions, you can express your own custom conditions:
and(failed(), eq(variables['Build.Reason'], 'PullRequest'))
See Specify conditions for running a task.
Package Management adds npm READMEs and download button
You can now see the README of any npm package that includes a README.md in the package. READMEs can help your team document and share knowledge about your packages.
You can also download any npm package using the Download button in the command bar.
Updated Package Management experience available to all accounts
After some additional tuning and some bug fixes, we’ve made the updated Package Management experience available to all accounts. Learn more about the update here, or turn it on using the toggle in the Packages hub.
Override template parameters in Azure resource group deployments
Currently in Azure resource group deployment tasks, users select the template.json and the parameters.json and provide the override parameter values in a text box, following a specific syntax. This experience is now enhanced so the template parameters are rendered in a grid which allows them to be edited and overridden. Users can access this feature by clicking the ... next to the override parameters field, which opens a dialog with the template parameters along with their default values and allowed values (if defined in the template and parameter .json files). This feature requires that CORS rules are enabled at the source. If template and parameter json files are in Azure storage blob, refer to this documentation to enable CORS.
Continuous Delivery in the Azure portal supports any Git repo
You can now configure a continuous delivery (CD) workflow for the Azure App Service no matter which Git repository you use to manage your code. Until now, you could select an App Service in the Azure Portal and setup continuous delivery for that service in just a few clicks, but only if you managed your code either in a Visual Studio Team Services Git repository or in GitHub. You can now get the same simple experience for any public or private Git repository, provided that repository is accessible from the Internet. With a few clicks in the Azure portal, you can set up a build and release definition in Team Services that will periodically check your Git repository for any changes, sync those changes, run an automated build and test, followed by a deployment to Azure App Service. As your needs evolve, you can customize these definitions to support multiple environments, more complex testing, or deployment upon manual approval.
Separation of duties for deployment requester and approvers
Previously, environment owners could restrict release creators from approving deployments of the release to an environment. Users could, however, manually start deployment of a release created by another user, and approve it themselves.
We have now filled this gap by considering the deployment creator as a separate user role for deployments. Either the release creator or deployment creator can be restricted from approving the deployments.
Set maximum number of parallel deployments
This feature gives you control on how multiple pending releases are deployed into a given environment. For example, if your release pipeline performs validation of builds in a QA environment and the rate of generation of builds is faster than the rate of completion of the deployments, you may configure multiple agents and as many builds to get validated in parallel. That means each of the builds generated gets validated, and the wait time is dependent in the number of available agents.
With this feature, we let you optimize validations by enabling you to perform validation on the n most recent builds in parallel and cancel the older deployment requests.
Q&A support for Marketplace extensions
Users can now post questions for any extension on the Marketplace from the item details page and have one-on-one public conversations with publishers of that extension. Email notifications are sent to publishers (owners and contributor roles) and users when a question is posted or responded to. With this, users now have two distinct feedback channels: one to rate or review an extension and the other to ask questions and receive answers from publishers.
Enhancements to display publisher’s terms, license, and privacy policy in Marketplace
It is now mandatory for all paid extensions on Marketplace to have a License and Privacy Policy. The License and Privacy Policy can be defined in the manifest file under the links property. More details are available at https://www.visualstudio.com/en-us/docs/integrate/extensions/develop/manifest.
The License and Privacy Policy is also available in the extension details page and presented when the user downloads the extension.
Improved sign-out
In the past, users have been unable to completely Sign out of their account when clicking Sign out. With these changes, users will be able to globally sign out from all Visual Studio resources. The vast majority of users should see no impact from this change, but we have found that some customers may experience issues signing into the product due to group policy–based security settings around trusted sites. This only affects sign in/out using Edge and Internet Explorer. Other browsers will be unaffected.
During sign-in, if you are redirected back to the sign-in page again, you are likely encountering this problem and you can either switch browsers or add an entry into your Internet Options trusted sites zone. In addition, organizations experiencing this can correct the group policy for their entire organization in a similar manner. More information can be found in the KB article.
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
Cows can be so silly
Last week, we had some visitors from Redmond visiting us in North Carolina. I invited a few of them out to my house for dinner – they were interested in seeing this farm that I talk about from time to time.
After we got to my house I herded everyone into my car to drive up to the barn. As we got to the top of the hill, I could tell something wasn’t right. I saw a pile of hay and a bunch of cows (yearlings) but no hay ring. The person sitting next to me in the car, apparently, could see by the look on my face that something was wrong and asked me about it. I told them I wasn’t sure but this isn’t the way it’s supposed to be.
We got out of the car and I surveyed the field and, immediately, I knew what it was. Sure enough, half way down the field was one of our calves with the hay ring stuck on its back hips. Jeez. Younger animals will go through the holes in the hay ring to stand inside it. If they are big enough, when they try to get out they will sometimes get the hay ring stuck on their rear hip bones.
You may remember a story from some years ago about how I almost ended up in a pond because I got into the middle of the hay ring to try to get it off a cow and the cow took off running, pulling the hay ring and me with it. This time, I had learned. I did not make the mistake of climbing into the hay ring and, instead, stood beside it and lifted it just high enough for the cow to get its hips out. Fortunately, it only took a few minutes and the cow stayed reasonably calm. All was restored to normalcy and no hard was done. But I do have to wonder how long that cow walked around that field dragging the hay ring It couldn’t have been more than a few hours (because someone checks on them a couple of times a day, at least), but it could have been a few hours
Here’s a picture Aaron took of me rolling the hay ring back after I got it off the cow. Unfortunately, we didn’t get a picture of the hay ring stuck on the cow – I was too focused on safely getting it off
I guess my friends, at least, have a new appreciation for how off my life can be
Brian
Trying ASP.NET Core on the Google Cloud Platform "App Engine Flexible Environment"
Last week I used Zeit and "now" to deploy an ASP.NET Core app (via a container) to the Zeit cloud. Tonight the kids are asleep so I thought I'd deploy to the Google Cloud. They've got beta support for open source ASP.NET so it's a perfect time. Google even has Google Cloud Tools for Visual Studio (2015).
I'll install the Google Cloud SDK. I checked "beta" as well.
Install it, login to your Google account and setup/select a project. I make a new folder and put an "app.yaml" in there with this inside as a directive to the Google Cloud Platform.
runtime: aspnetcore
env: flex
Here's a gratuitous screenshot:
I did a dotnet new, dotnet restore, and finally a:
dotnet publish -c Release
which makes a publish folder that will get sent up to the cloud.
IMPORTANT NOTE: I initially tried to push a .NET Core app using the .NET Core 1.1 runtime but Google Cloud's beta support in the flexible environment is set up for the 1.0.3 runtime (using their own custom docker base image) as of the time of this blog post, so you'll want to "dotnet new mvc --framework netcoreapp1.0" and set the "RuntimeFrameworkVersion" to get that specific shared LTS (Long Term Support) version. As soon as the Google Cloud flex runtime has the latest LTS (1.0.4, at the time of this writing) then apps would just roll forward.
netcoreapp1.0 1.0.3
Otherwise you'll get errors. Fortunately those errors are very clear.
The walkthrough on Google Cloud suggests you copy the app.yaml file using a standard CLI copy command. However, since you're going to need that app.yaml EVERY publish, just add it to the csproj like this:
This way it'll end up in publish automatically. You can then publish to the "AppEngine flexible environment:
dotnet restore
dotnet publish -c Release
gcloud beta app deploy .\bin\Release\netcoreapp1.0\publish\app.yaml
gcloud app browse // THIS IS JUST TO VISIT IT AFTER IT'S PUBLISHED
NOTE: You may get an ERROR that billing isn't enabled, or that the cloudbuild.googleapis.com aren't enabled. You'll need to ensure you have an active Free Trial, then go to the API Manager in the Google Cloud Platform dashboard and enable "Google Cloud Container Builder API." I also had to manually enable the API for the "Flexible" Environment and confirm I had a valid billing account.
Once I enabled a few APIs, I just did a standard "gcloud beta app deploy" as above:
Pretty cool stuff! Here is my ASP.NET Core app running on GCP's Flex engine:
You can "tail" your app with "gcloud app logs tail -s default" and you'll see the output from .NET Core and ASP.NET (and Kestrel) in the Google Cloud!
Or online in the Google "Stackdriver" logging page:
Go read up more on the Google Cloud Platform Blog. They even support Kubernetes clusters with ASP.NE Core apps packaged as Docker containers.
Sponsor: Thanks to Redgate! Track every change to your database! See who made changes, what they did, & why, with SQL Source Control. Get a full version history in your source control system. See how.
© 2017 Scott Hanselman. All rights reserved.
Team Services Update – Mar 29 2017
This week we begin rolling out our sprint 115 work. You can read the release notes for details. As usual, this is a forewarning of the changes, it could take up to 2 weeks before all the changes are visible in your account. The update should go live in the first public accounts today.
Overall, there’s not any single thing that stands out for me in this release. A lot of good stuff but nothing revolutionary.
- We continue to make the pullrequest/code review experience better. Every sprint we are taking feedback and implementing it. We’re still not very close to done yet but the experience is pretty darned good now – I’d argue that it’s the best PR experience in any product available today.
- The new package management UI refresh went live this sprint and I think it has some nice improvements.
- CI/CD remains, probably, our biggest aggregate investment right now and makes a lot of progress every sprint. Some stuff we are targeting for the //Build conference in May where I think we’ll be able to unveil a whole bunch of significant advancements in this space.
There are also a couple of themes driving work we are doing right now that I’d like to talk about.
- Compliance – Increasingly the VSTS code pipeline PR -> CI -> Test -> Release is getting used, both internally and externally, by team with strict compliance requirements. We’re building more and more compliance supporting features into the pipeline and you can see several in this sprint – the PR review policy changes and the Release management initiator/approver role segmentation are good examples.
- Accessibility – Something that didn’t really even show up in the release notes but is, none-the-less, a pretty big investment right now is accessibility. I think it doesn’t show up for a couple of reasons – 1) It’s mostly manifested as bug fixes and 2) It’s work in flight so it’s not done yet. But, it’s something that will get better every sprint. A few months ago, we had a blind engineer come and demonstrate for me what using VSTS/TFS was like for someone who is visually impaired. I have to say it was a humbling experience for me. We kicked off a significant effort across the product to substantially improve and it’s already getting much better. I expect this effort will continue until mid-summer, at which point, the product should be very usable by people with visual disabilities.
Thanks and feedback is always welcome,
Brian
Become a Mobile Developer with Visual Studio 2017 and Xamarin University
Millions of developers around the world use the power of C# and .NET to deliver amazing apps. Whether you’re building for desktop with Windows Forms or UWP, or for the web with ASP.NET WebForms, or MVC, .NET’s flexible tools and frameworks help you ship software that solves almost any problem. In the mobile world, Visual Studio Tools for Xamarin enable .NET developers to easily apply their existing expertise to build, test, distribute, and monitor native apps for all the major connected platforms, including Android, iOS, UWP, tvOS, and more, all from Visual Studio 2017.
Our team of mobile experts at Xamarin University have taught thousands of developers—from experienced enterprise team leads to recent grads—how to expand their desktop and web development experience to mobile. Now, we’re making it even easier to jumpstart your mobile development skills with flexible monthly subscription options.
Available immediately, you can sign up for Xamarin University from the Visual Studio Marketplace, which offers monthly payment options and the ability to use Azure subscriptions. Starting at $83.25 per month (less than $3 per day), you receive unlimited access to constantly updated curriculum, with topics such as C# for beginners, to classes covering the latest in navigation styles and controls for Android and iOS.
As a monthly subscriber, you can:
- Select from 80+ virtual and on-demand classes and videos
- Join live sessions across multiple time zones led by mobile experts and featuring hands-on labs and demos
- Get advice, code reviews, and best practices for your projects during 1:1 Office Hours
- Collaborate and learn from peers
- Get certified as a Xamarin Mobile Certified Developer
- Access exclusive on-demand videos from industry leaders covering the latest mobile topics and challenges, from new platform APIs to testing and deploying on physical devices
As you learn mobile best practices and UI design, our courses grow with you, offering intermediate and advanced classes on how to performance tune and test your apps, diagnose memory issues, and use a variety of design patterns and techniques to maximize code-sharing across Android, iOS, and UWP apps.
To get started today, visit the Visual Studio Marketplace and subscribe to Xamarin University to get immediate, unlimited access to courses, hands-on labs, 1:1 office hours, and more. If you haven’t had a chance to try Xamarin University, start your free 30-day trial today to experience everything Xamarin University has to offer. If you have any questions, we’re always available at training@xamarin.com.
Mark Smith, Principal Program Manager Mark leads Xamarin University, where he helps developers learn how to utilize their .NET skills to build amazing mobile apps for Android, iOS, Windows and beyond. Prior to his career at Microsoft and Xamarin (acquired by Microsoft), Mark ran a consulting business, specializing in custom development |
Five reasons to run SQL Server 2016 on Windows Server 2016 – No. 2: Performance and cost
This is the second blog in a five-part series. Keep an eye out for upcoming posts and read the first post in the series, Five reasons to run SQL Server 2016 on Windows Server 2016, part 1.
Imagine you’ve just bought a super powerful car with built-in advanced technology to make it perform at its highest. You want to take full advantage of all that horsepower and even turbocharge it, while at the same time get great mileage. That’s what you get when you run SQL Server 2016 on Windows Server 2016: unmatched performance at the lowest cost.
By modernizing both your SQL Server data platform and your Windows Server OS, you can gain major cost savings and unprecedented performance boosts for workloads such as storage, business intelligence, and analytics. The strength of this combination has been shown in independent benchmark testing. As you can see in Figure 1, SQL Server 2016 on Windows Server 2016 leads the industry in both performance and price/performance ratio.
Figure 1: Best-in-class performance and price/performance ratio [1]
You can get these amazing results from a few key features that are built into the new versions:
- On the data platform side, SQL Server 2016 delivers in-memory performance, which gives you the power to run queries faster than ever before.
- Windows Server 2016 turbocharges this with Persistent Memory (aka Storage Class Memory), which provides 3x latency improvement.
- Storage Spaces Direct in Windows Server 2016 allows use of industry-standard servers with local storage as a highly available, scalable alternative to expensive storage area networks (SANs) — with read speeds that can exceed 25 GB/second.
SQL Server 2016 in-memory OLTP and 24 TB of Windows Server 2016 memory built in
In-memory processing was introduced in SQL Server 2014, and improvements in SQL Server 2016 make it much easier to accelerate your new, and now also your existing, applications. Revving up the speed potential of in-memory, Windows Server 2016 has built-in capability to provide in-memory with 24 terabytes of available server memory. Plus, new CPU maximums have been increased by three times so that you can run up to 640 CPU cores.
Windows Server 2016 Persistent Memory and Storage Spaces Direct
SQL Server professionals know that database transactions can be gated by log write speed. If the log is faster, more database updates are possible. Windows Server 2016 helps solve this with Persistent Memory, again adding direct value when you run SQL Server 2016 on Windows Server 2016.
When you think about significant cost savings over traditional storage, you’ll be interested to know that the new Windows Server 2016 Storage Spaces Direct lets you use local storage to create highly scalable and flexible storage solutions as shown in Figure 2. The ability to aggregate locally attached storage across the nodes in a failover cluster means you can deploy very large and highly available pools of storage from types of devices that you could not use before, such as inexpensive SATA SSD, and cutting-edge solutions like NVMe flash, which can plug directly into the PCIe bus inside the machine to create an NVMe fabric. Now SQL Server can scale to huge memory.
Figure 2: Enormous cost savings and blazing speed with Storage Spaces Direct
Persistent memory is a state-of the-art new technology, and Windows Server 2016 is exposing it for the first time. SQL Server is in lockstep with the innovation so you can exploit it to gain the fastest speed at the lowest cost. If you’re tied to hugely expensive third-party solutions, you can certainly appreciate the enormous value this brings.
Get it all!
SQL Server 2016 features are built in. You get great performance at less than one-tenth of the total cost of using Oracle to run the same transactional, data warehouse, data integration, business intelligence, and advanced analytics workloads. [2] With a Windows Server 2016 license, you also get everything built in: Hyper-V and advanced storage capabilities with no need to buy separate third-party storage solutions or virtualization technologies.
It’s all built right in. By listening to customers and creating new capabilities in both SQL Server 2016 and Windows Server 2016, Microsoft is tuning up your super vehicle to help get top performance and winning efficiency. Let ‘er rip!
To learn more, read the SQL Server + Windows Server Better Together white paper. Or try it out for yourself:
- SQL Server 2016 free evaluation
- SQL Server virtual labs
- Windows Server 2016 free evaluation
- Windows Server 2016 virtual labs
Don’t miss the earlier blog post in this series: Five reasons to run SQL Server 2016 on Windows Server 2016, part 1.
_____________________________________________________
[1] Qualifications and references for TPC-H results: These are for nonclustered TPC-H results and are valid as of March 1, 2017. The first bar is for the Cisco result . The second bar is for the Lenovo result. The third bar is for the HPE result. The price/performance references are valid as of March 1, 2017, and details on the referenced results can be found at:
#1 nonclustered 1TB performance
#1 nonclustered 3TB performance
#1 nonclustered 30TB performance
#1 nonclustered 1TB price/performance
#1 nonclustered 3TB price/performance
#1 nonclustered 10TB price/performance
#1 nonclustered 30TB price/performance
#1 TPC-E price/performance
[2] http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf
Remote Desktop clients – March 2017 update
This post is authored by David Belanger, Senior Program Manager and Eva Seydl, Program Manger.
We, the Remote Desktop Services (RDS) Team, have a number of updates on the Remote Desktop apps for Windows, Android, iOS and Mac to share with you. This blog highlights the latest feature additions and improvements.
Follow these links if you would like to try out the improvements on your device right away:
You can find a comparison of different capabilities between the different apps on TechNet.
New functionality in the Windows 10 Universal app
Here are the new features recently added to the Windows 10 app.
Be more productive with multiple concurrent sessions
You now have the ability to connect and interact with multiple remote PCs simultaneously and easily navigate between them using the in-session menus. Active connections are highlighted on the Connection Center and can be disconnected from the connection menu.
Figure 1: Switching sessions
Tailor the session to your needs
You can now choose the session resolution and scaling factor for each connection allowing you to use applications with specific requirements or to keep the native resolution of the remote PC.
Note: The scaling factor only takes effect on new connections and not when reconnecting to an existing session and it only applies to connections to Windows 8.1 or above.
Greatly improved windowed mode experience
Weve made it a lot easier to use the Remote Desktop app in windowed mode instead of full screen so you can easily keep track of local and remote applications and easily move the session around between monitors.
You can:
- Choose to start sessions in full screen or not from the global settings.
- Select the behavior when resizing the app window from the global settings.
- Allow the remote resolution to be dynamically updated from the connection settings for connections to Windows 8.1 or above.
Manage all your connections with custom groups
Some of you have a lot of connections and it can quickly become overwhelming with all of them simply listed alphabetically. You now have the ability to create your own groups and assign connections to them to tidy up the Connection Center.
Figure 2: Groups on the Connection Center
Improvements to our preview for macOS
Our latest improvements to the app focus on multimonitor set-ups to align with the behavior you are familiar with from our full featured app. Apart from that, the app has a lighter look and feel as we removed the accent color on the Connection Center window.
Easily find and launch your remote apps or desktops on iOS
For our users on iOS 10 we have Spotlight search. Once you have saved the connection to your remote PC or any published apps and desktops in the app launch that connection directly from the OS search. No need to launch the remote desktop application first.
In-session improvements on our app on Android
One of the most requested features on Android which has surfaced in our UserVoice forum is the need for portrait mode. We have answered this ask by enabling the remote desktop session dynamically follow your device orientation. Users connecting to Windows 8.1 or later benefit from dynamic display resolution and have the best experience. On rotation, the screen resolution adapts dynamically to your screen.
Figure 3: In-session dynamic orientation on Windows 10
For users connecting to Windows 8 or below, on rotation the remote desktop session is letterboxed as those operating systems do not benefit from the latest RDP protocol improvements.We recommend that you rotate your device to the preferred orientation before launching a session. Optionally set the preferred orientation mode for remote desktop sessions in the app settings (Go to Settings > Display).
Another improvement addresses the keyboard extension which contains all additional keys that you might need when navigating through Windows. You can scroll this extension by dragging left or right to reach all the keys you need or to switch to the numpad.
Figure 4: Keyboard extension in portrait mode
How to provide feature suggestions?
To provide feedback on the Windows 10 app, open the Feedback Hub and submit feedback for the Apps and Games category and the Remote Desktop subcategory.
To provide feedback for the apps on other platforms, post your idea in UserVoice after selecting the appropriate forum on the right side.
How to get help?
You can also post your issues on our TechNet forum to get help from the RDS community.
Five reasons to run SQL Server 2016 on Windows Server 2016, part 2
This is the second blog in a five-part series. Keep an eye out for upcoming posts and read the first post in the series,Five reasons to run SQL Server 2016 on Windows Server 2016, part 1.
Imagine youve just bought a super powerful car with built-in advanced technology to make it perform at its highest. You want to take full advantage of all that horsepower and even turbocharge it, while at the same time get great mileage. Thats what you get when you run SQL Server 2016 on Windows Server 2016: unmatched performance at the lowest cost.
By modernizing both your SQL Server data platform and your Windows Server OS, you can gain major cost savings and unprecedented performance boosts for workloads such as storage, business intelligence, and analytics. The strength of this combination has been shown in independent benchmark testing. As you can see in Figure 1, SQL Server 2016 on Windows Server 2016 leads the industry in both performance and price/performance ratio.
Figure 1: Best-in-class performance and price/performance ratio1
You can get these amazing results from a few key features that are built into the new versions:
- On the data platform side, SQL Server 2016 delivers in-memory performance, which gives you the power to run queries faster than ever before.
- Windows Server 2016 turbocharges this with Persistent Memory (aka Storage Class Memory), which provides 3x latency improvement.
- Storage Spaces Direct in Windows Server 2016 allows use of industry-standard servers with local storage as a highly available, scalable alternative to expensive storage area networks (SANs) with read speeds that can exceed 25 GB/second.
SQL Server 2016 in-memory OLTP and 24 TB of Windows Server 2016 memory built in
In-memory processing was introduced in SQL Server 2014, and improvements in SQL Server 2016 make it much easier to accelerate your new, and now also your existing, applications. Revving up the speed potential of in-memory, Windows Server 2016 has built-in capability to provide in-memory with 24 terabytes of available server memory. Plus, new CPU maximums have been increased by three times so that you can run up to 640 CPU cores.
Windows Server 2016 Persistent Memory and Storage Spaces Direct
SQL Server professionals know that database transactions can be gated by log write speed. If the log is faster, more database updates are possible. Windows Server 2016 helps solve this with Persistent Memory, again adding direct value when you run SQL Server 2016 on Windows Server 2016.
When you think aboutsignificant cost savings over traditional storage, youll be interested to know that the new Windows Server 2016 Storage Spaces Direct lets you use local storage to create highly scalable and flexible storage solutions as shown in Figure 2. The ability to aggregate locally attached storage across the nodes in a failover cluster means you can deploy very large and highly available pools of storage from types of devices that you could not use before, such as inexpensive SATA SSD, and cutting-edge solutions like NVMe flash, which can plug directly into the PCIe bus inside the machine to create an NVMe fabric. Now SQL Server can scale to huge memory.
Figure 2: Enormous cost savings and blazing speed with Storage Spaces Direct
Persistent memory is a state-of the-art new technology, and Windows Server 2016 is exposing it for the first time. SQL Server is in lockstep with the innovation so you can exploit it to gain the fastest speed at the lowest cost. If youre tied to hugely expensive third-party solutions, you can certainly appreciate the enormous value this brings.
Get it all!
SQL Server 2016 features are built in. You get great performance at less than one-tenth of the total cost of using Oracle to run the same transactional, data warehouse, data integration, business intelligence, and advanced analytics workloads.2With a Windows Server 2016 license, you also get everything built in: Hyper-V and advanced storage capabilities with no need to buy separate third-party storage solutions or virtualization technologies.
Its all built right in. By listening to customers and creating new capabilities in both SQL Server 2016 and Windows Server 2016, Microsoft is tuning up your super vehicle to help get top performance and winning efficiency. Let er rip!
To learn more, read the SQL Server + Windows Server Better Together white paper. Or try it out for yourself:
- SQL Server 2016 free evaluation
- SQL Server virtual labs
- Windows Server 2016 free evaluation
- Windows Server 2016 virtual labs
Dont miss the earlier blog post in this series: Five reasons to run SQL Server 2016 on Windows Server 2016, part 1.
_____________________________________________________
1 Qualifications and references for TPC-H results These are for non-clustered TPC-H results and are valid as of March 1, 2017. The first bar is for the Cisco result. The second bar is for the Lenovo result.The third bar is for the HPE result. The price performance references are valid as of March 1, 2017, and details on the referenced results can be found at:
#1 non-clustered 1TB performance
#1 non-clustered 3TB performance
#1 non-clustered 30TB performance
#1 non-clustered 1TB price/performance
#1 non-clustered 3TB price/performance
#1 non-clustered 10TB price/performance
#1 non-clustered 30TB price/performance
#1 TPC-E price/performance
2 http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf
Episode 124 on getting started with Office 365 development—Office 365 Developer Podcast
In Episode 124 of the Office 365 Developer Podcast, Richard diZerega and Andrew Coates discuss the resources available for getting started with Office 365 Development.
Weekly updates
- SharePoint PnP webcast—what is the SharePoint PnP JavaScript core library? by the PnP team
- SharePoint Framework Roadmap by the SharePoint team
- Registration open for Microsoft Ignite 2017 by Microsoft
- Rencore webinar—building client-side web parts with the SharePoint Framework by Rencore
- Free SharePoint Framework training by Voitanos/Andrew Connell
- Troubleshooting and fixing the “out of the blue, my SharePoint Framework projects won’t build!” by Andrew Connell
- Azure AD B2C access tokens by Paul Schaeflein
- Controlling Groups creation in a tenant using the AAD V2 PowerShell module by Mikael Svenson
- Get the SharePoint site behind an Office 365 Group via the Microsoft Graph by Elio Struyf
- The SharePoint admin bot by Rick Van Rousselt
- Microsoft Bot Framework—contextual authentication with the webchat control in SharePoint by Rick Van Rousselt
Show notes
- Modern JavaScript for ancient web developers
- Create an insane developer workstation in the cloud
- Office 365 dev program
- Getting Started with Microsoft Graph
- Microsoft Graph on GitHub
- Getting started with Office add-ins
- Getting started with SharePoint add-ins
- Getting started with the SharePoint Framework
- Getting started with Office UI Fabric
- Getting started with Office 365 Connectors
- Getting started with Microsoft Teams
- Getting started with Skype development
- GitHub training content
Got questions or comments about the show? Join the O365 Dev Podcast on the Office 365 Technical Network. The podcast RSS is available on iTunes or search for it at “Office 365 Developer Podcast” or add directly with the RSS feeds.feedburner.com/Office365DeveloperPodcast.
About the hosts
Richard is a software engineer in Microsoft’s Developer Experience (DX) group, where he helps developers and software vendors maximize their use of Microsoft cloud services in Office 365 and Azure. Richard has spent a good portion of the last decade architecting Office-centric solutions, many that span Microsoft’s diverse technology portfolio. He is a passionate technology evangelist and a frequent speaker at worldwide conferences, trainings and events. Richard is highly active in the Office 365 community, popular blogger at aka.ms/richdizz and can be found on Twitter at @richdizz. Richard is born, raised and based in Dallas, TX, but works on a worldwide team based in Redmond. Richard is an avid builder of things (BoT), musician and lightning-fast runner.
A Civil Engineer by training and a software developer by profession, Andrew Coates has been a Developer Evangelist at Microsoft since early 2004, teaching, learning and sharing coding techniques. During that time, he’s focused on .NET development on the desktop, in the cloud, on the web, on mobile devices and most recently for Office. Andrew has a number of apps in various stores and generally has far too much fun doing his job to honestly be able to call it work. Andrew lives in Sydney, Australia with his wife and two almost-grown-up children.
Useful links
- Office 365 Developer Center
- Office 365 main blog
- dev.office.com blog
- Slack channel
StackOverflow
Yammer Office 365 Technical Network
- O365 Dev Podcast
- O365 Dev Apps Model
- O365 Dev Tools
- O365 Dev APIs
- O365 Dev Migration to App Model
- O365 Dev Links
- UserVoice
The post Episode 124 on getting started with Office 365 development—Office 365 Developer Podcast appeared first on Office Blogs.
The Microsoft Data Insights Summit is back – check out our full session catalog today!
In February, we announced that our Microsoft Data Insights Summit will return for the second year, and invited you to register and join us June 12-13, 2017 in Seattle, WA. This is THE user conference for Power BI, SQL Server BI, Excel, PowerApps, and Flow.
Building on last year’s success, we are expanding the content for this year’s event to include:
A pre-day on June 11 to provide in-depth technical training on:
- Advanced Data Visualization and Modeling: full-day workshop covering the art and science of data visualization
- App-in-a-Day with PowerApps, Flow, and Common Data Service: full-day workshop on creating business applications using PowerApps and Flow without writing a line of code!
- Dashboard-in-a-Day 101: full-day workshop on connecting to data, creating interactive reports/dashboards, exploring data with visualization, and sharing insights with others
- Data Modeling with Power BI: full-day workshop introducing techniques of shaping data models in Power BI
- Modern Analytics in Excel: full-day workshop on extracting, transforming, and modeling data using shared advanced analytics features in Excel and Power BI—by Rob Collie, founder of PowerPivotPro
- Power BI Dev-in-a-Day: full-day workshop for app developers to author interactive reports in Power BI Desktop, provision them in Azure, and embed them in an application
9 tracks:
- Administration and Governance: sessions on managing modern BI while continuing to meet your organization’s unique regulatory, security, and policy requirements
- Advanced Analytics: sessions on predictive and prescriptive analytics transforming data into intelligent action
- Business Applications for Connected Data: sessions on leveraging Power BI and additional data sources to automate processes, enhancing collaboration and increasing productivity—using PowerApps and Flow
- Customer Stories: sessions on best practices, successes, failures and course corrections from customers who have ben early adopters of Power BI
- Dashboards/Reports and Design: sessions on designing interactive dashboards and visual reports to monitor and analyze your most important data
- Data Prep and Modeling: sessions on cleaning and preparing data for visualization and analytics
- Developers: sessions on developing apps and services leveraging Power BI, Excel, etc.
- Distribution and Deployment: sessions on deploying Power BI solutions including deep dives on critical considerations like security and capacity planning
- General Overview / Intro: sessions on Microsoft’s comprehensive set of tools and services that are helping organizations develop a data culture and democratize access to data and insights
4 hands-on workshops:
- DAX 101: 2-hour workshop introducing the basics of the DAX language—by Alberto Ferrari.
- Mini App-in-a-Day with PowerApps, Flow, and Common Data Service: 2-hour workshop on creating business applications using PowerApps and Flow without writing a line of code!
- Mini Dashboard-in-a-Day: 2-hour workshop on connecting to data, creating interactive reports/dashboards, exploring data with visualization, and sharing insights with others
- Mini Modern Analytics in Excel: 2-hour workshop on extracting, transforming, and modeling data using shared advanced analytics features in Excel and Power BI—by Rob Collie
View our full session catalog here on our event website today, and check back often for the latest updates!
We hope you’ll join us at the Microsoft Data Insights Summit in Seattle this June 12 – 13. Be sure to register today as space is limited and filling up quickly!
Update 1703 for Configuration Manager Technical Preview Branch – Available Now!
Hello everyone! We are happy to let you know that update 1703 for the Technical Preview Branch of System Center Configuration Manager has been released. Technical Preview Branch releases give you an opportunity to try out new Configuration Manager features in a test environment before they are made generally available. This months new preview features include:
- Windows Analytics Commercial ID and Windows telemetry levels You can specify the Windows Analytics Commercial ID and configure telemetry, commercial data, and Internet Explorer data collection settings in Client Settings for use with Upgrade Analytics.
- In-place UEFI conversion– You can customize a Windows 10 in-place upgrade task sequence to include the Windows 10 UEFI conversion tool.
- Collapsible task sequence groups– Groups in the task sequence editor can be collapsed or expanded.
- Azure Services wizard– The Azure Services wizard provides a common configuration for the cloud Azure services you use with ConfigMgr. This is done by using Azure web apps to provide the common subscription and configuration details that administrators would otherwise have to re-enter for each additional cloud Azure cloud service you use.
- Direct links to applications in Software Center– You can now provide end users with a direct link to an application in Software Center. This means they no longer must open Software Center and search for an application before they can install it.
This release also includes the following improvement for customers using System Center Configuration Manager connected with Microsoft Intune to manage mobile devices:
- Apple Volume Purchase Program (VPP) enhancements – Support has been added to tag education vs business volume purchase program tokens, device licensing, and adding multiple volume purchase program tokens.
Update 1703 for Technical Preview Branch is available in the Configuration Manager console. In addition, we willupdate the baseline version of Configuration Manager Technical Preview Branch available on TechNet Evaluation Center. It will be based on the Technical Preview Branch version 1703. Baseline bits are used for new installations.
We would love to hear your thoughts about the latest Technical Preview! To provide feedback or report any issues with the functionality included in this Technical Preview, please use Connect. If theres a new feature or enhancement you want us to consider for future updates, please use the Configuration Manager UserVoice site.
Thanks,
The System Center Configuration Manager team
Configuration Manager Resources:
Documentation for System Center Configuration Manager Technical Previews
Try the System Center Configuration Manager Technical Preview Branch
Documentation for System Center Configuration Manager
System Center Configuration Manager Forums
Regular cadence for PowerShell Core Community Call
tl;dr: PowerShell Core Community Calls are on the third Thursday of every month at 9:30am Pacific Time (note, this is currently PDT). Use this .ics file to avoid missing one.
Hi everyone! After three successful PowerShell Core Community Calls, we’re switching to a more standard cadence so that you can plan ahead and join us! For those of you that haven’t heard of the PowerShell Core Community Call, it’s a one hour meeting where the PowerShell Committee gets together to talk with you to help us make decisions on the evolving design of PowerShell 6.
We discuss RFCs, feature requests, and contentious bugs, in addition to giving you a quick update about the status of the project and the direction we’re headed.
If you want to catch up on our last three calls to get a feel for what they’re like, you can find some notes, chat transcripts, and YouTube recordings in a folder marked CommunityCall in the PowerShell-RFC repository.
Typically, we start by discussing the following:
- RFCs tagged as
Review - Committee
- Issues tagged as
Review - Committee
- PRs tagged as
Review - Committee
- Anything else you want to bring to the table!
Join us on Skype on the 3rd Thursday of every month @ 9:30am PDT (Pacific Daylight Time, GMT -0700):
Join Skype Meeting
Join by phone (US): +1 (866) 641-7188 or find a local number
Conference ID: 4334578
And if there’s anyone else you know that might be interested in getting more involved in PowerShell development, feel free to invite them to the call!
Optimizing Workforce Staffing to Improve Profitability with Cortana Intelligence
This post is by Francesca Lazzeri and Hong Lu, Data Scientists, and Ilan Reiter, Principal Data Science Manager, at Microsoft.
Introduction and Business Domain
Recent advancements in machine learning and big data technologies are allowing companies to apply better staffing strategies by taking advantage of historical data. Ensuring that the right people get assigned to the right projects is critical not only for the success of a given project but also for the overall profitability of an organization. At most companies, project staffing is typically done manually by project managers, based on staff availability and prior knowledge of individuals’ past performance. This process is not only time-consuming but the results can often be sub-optimal. The same process can be done much more effectively by taking advantage of historical data and advanced ML techniques.
We recently developed a recommendations-based staff allocation solution for Baker Tilly Virchow Krause, LLP, a professional services company. Baker Tilly is a full-service accounting and advisory firm with a focus on industry and services specialization. The solution we have built recommends optimal staff composition as well as individual staff with the right experience and expertise for Baker Tilly’s new projects. By aligning staff experience with project needs, we help project managers at Baker Tilly perform better and faster staff allocation.
The end goal of our solution is to improve profitability at Baker Tilly. Based on our offline evaluation, we expect a 4-5% improvement on profits for the projects that employ our solution. The final solution has been integrated with Baker Tilly’s internal practice management system and will be evaluated in a few pilot teams before being implemented across all teams.
Solution Overview
The solution developed is divided into the following two parts and the outputs of the two parts are combined to generate the final staff recommendations:
Part 1: Predict staff composition, e.g. one senior accountant and two accounting assistants, for a new project. In this part, we use K-Nearest Neighborhood (KNN) to perform prediction based on historical projects with similar properties like project type and industry.
Part 2: Compute Staff Fitness Score (Rating) for a new project. For this second part, we applied a content-based recommendation algorithm developed in R and executed by Execute R Script modules in Azure ML.
The figure below summarizes the workflow design of this Proof of Concept (PoC):
Baker Tilly Staff Allocation PoC Workflow
Solution Architecture
Baker Tilly has integrated the solution within their practice management tools – new projects in Baker Tilly’s database are processed daily by the Azure ML web service and results are consumed by project managers in Baker Tilly’s practice management system. The workforce placement recommendation results are also visualized on a real-time PowerBI dashboard that can be used by data analysts and executives at Baker Tilly to monitor project allocation and performance over time.
The figure below shows the solution architecture in detail:
Baker Tilly Solution Architecture
Experiment Design
Part 1: Predict Project Staff Composition
In this step, we used KNN to predict staff composition (i.e. numbers of each staff classification/title) on a new project, using historical project data. We split the dataset in the following way:
- Training data (historical projects): 2010-09-01 to 2015-09-01.
- Testing data (new projects): 2015-09-01 to Present.
We found historical projects similar to new projects based on project properties such as Project Type, Total Billing, Industry, Client, Revenue Range, etc. We assigned different weights to each project property based on business rules and standards. We also removed any data that had negative contribution margin (profit). For each staff classification, staff count is predicted by computing a weighted sum of similar historical projects’ staff counts of the corresponding staff classification. Using Accountant as an example:
The weight of each historical project is:
The final weights are normalized so that the sum of all weights are 1. Before calculating the weighted sum, we removed 10% outliers with high values and 10% outliers with low values.
Part 2: Predict Staff Fitness Score (Rating) Using Custom Content-Based Filtering
We implemented a content-based algorithm in R to predict how well a staff member’s experience matches a given project’s needs.
In a content-based filtering system, a user profile is usually computed based on the user’s historical ratings on items. This user profile describes the user’s taste and preference. To predict a staff member’s suitability for a new project, we created two staff profile vectors for each staff member, using historical data – one vector is based on the number of hours that describe the staff member’s experience and expertise across different types of projects; the other vector is based on contribution margin per hour (CMH) which describes the staff member’s profitability for different types of projects. Staff Fitness Scores for a new project are computed by taking the inner products between these two staff member profile vectors and a binary vector that describes the important properties of a project. Below is a screenshot of the experiment developed to predict Staff Fitness Score (Rating) using Custom Content-Based Filtering:
Experiment Created Using Azure ML
Offline Evaluation of Staff Recommendation Solution
To evaluate our staff recommendation solutions, we built an ML model (Gradient Boosting Trees) to predict the contribution margin per hour (CMH) of 5,000 randomly sampled projects, using our recommended staff. Based on this offline evaluation, we expect a 4-5% improvement of total contribution margin on projects that employ our solution.
To predict the CMH of a project we used different project features (e.g. Total Hours, Total Billing, Project Type, Industry Group, Revenue Range, State, etc.) and staff features (e.g. number of hours working on Project Type Group, number of hours working on Industry Group, average hourly contribution margin of historical projects of corresponding Project Type Group, average hourly contribution margin of historical projects of corresponding Industry Group).
To train the model, we used project features and staff features of actual allocated staff, and project actual CMH as labels. To evaluate our staff recommendation, we used the trained model to predict project CMH using project features and staff features of recommended staff. Then we compared the predicted CMH with actual project CMH to estimate the potential improvement in CMH using our solution.
The figure below captures the overall workflow of this evaluation approach:
Overall workflow of evaluation approach
The final evaluation metric we used is total contribution margin improvement percentage:
where N is the number of projects.
Note that this offline evaluation relies on two assumptions: First, we assume our recommended staff will always be available. Second, although our model for CMH prediction has 13% absolute error, we didn’t observe any bias in the model. Therefore, the positive improvement we observed is not likely to be the result of prediction error.
Conclusions
In any professional services organization, no resource is more critical or expensive than the human resources they employ. However, the human dimension can often seem too complex to turn into a statistic, with limited opportunities for quantitative observation, refinement or improvement. But what if the human element of an organization can, in fact, be quantified, transformed into real historical data that can then be used and deployed into an advanced analytics and machine learning -based solution?
By making use of a Cortana Intelligence -based framework, we built and deployed a workforce placement recommendation solution that recommends optimal staff composition and individual staff with the right expertise for new projects. Cortana Intelligence, with its collection of cloud-based tools, can help organizations build successful workforce analytics solutions that provide the basis for specific action plans and workforce -based investments. These solutions can address gaps or inefficiencies in organizations’ current staff allocation methods and can help drive better business outcomes. Organizations can gain a competitive edge by using workforce analytics to optimize their use of human capital.
Francesca, Hong & Ilan
You can contact Francesca at lazzeri@microsoft.com or @frlazzeri; Hong at honglu@microsoft.com; and Ilan at ireiter@microsoft.com.
What’s New in Visual Basic 2017
Visual Studio 2017 just shipped, and with it shipped a new version of Visual Basic. With the new language strategy of the .NET Languages, the focus is again on Visual Basic’s original virtue: Provide editor, debugging and refactoring tools as well as language feature to ease complex tasks and boost every VB’s developer productivity without distracting them from their domain specific excellence. After all, it always was first Visual Basic which put the ‘Visual’ into Visual Studio, and let developers get the work done efficiently, yet without compromises in quality!
Speed up Solution Loading times with Enable Lightweight Solution Load
One of the most important changes in Visual Studio 2017 is improved performance. In many areas, Visual Studio 2017 got considerable faster than Visual Studio 2015. In one discipline, however, you can speed up waiting time for your really big Visual Basic solutions a lot: You just need to Enable Lightweight Solution Load.
To this end,
- Open your large solution as you always do.
- From the Context menu of the solution in the solution explorer, click Enable Lightweight Solution Load.
- Restart Visual Studio, and reload your Solution to observe the differences in load time.
After a few seconds of preparation time, the solution loads and is there almost instantly. Notice though, when you do this for the first time, all the branches of the solution explorer tree view are closed. Visual Studio remembers also for solutions with lightweight loading, which branches were open when you closed the solution, and reopens them on next load. Keep in mind though, that projects get loaded, when their correlated branch is open – so the more branches you had open when you quit Visual Studio, the longer it takes to reload your solution on next start.
New IDE Features
As a Visual Basic developer, you attach importance to a productive IDE, which helps you focus on and speed up your daily VB development tasks. Visual Studio 2017 introduces a great deal of new features around IntelliSense, refactoring and navigation to that end.
Structure Guide Lines
One of the most obvious new aids you’ll notice after you started Visual Studio for the first time, are Structure Guide Lines. When you’re editing extensive methods, which are more than a screen page long, Structure Guide Lines help you to keep track of the structure indent level you’re currently seeing and editing. Just hover with the mouse over a guideline and let the editor give you an overview over the current structure levels.
IntelliSense filtering
Since Visual Basic 5.0, IntelliSense has always been a great source for finding and exploring types or all a type’s members. Visual Studio 2017 lets types become even more quickly discoverable by introducing IntelliSense filtering and highlighting. Imagine, for example, you wanted to find all the Async methods which a type provides, since you’re refactoring an app to become more responsive:
Press Space to open IntelliSense. At the bottom of the list you’ll find filter icons, each of which allowing you to limit the IntelliSense list to properties, methods, local variables, and much more. Click on an icon to add the filter category to the result list. Click another time to hide the category from the list. Continue typing to filter the list to the characters you already typed in – those characters get highlighted in the result list. You do not need the mouse to filter the IntelliSense list: When you hover over the filter icons, Visual Studio shows you the keyboard short cuts for the different categories for filtering the list without the mouse.
Configure IntelliSense
Apart from the Visual Basic IntelliSense standard settings, Visual Studio allows you to configure IntelliSense for usage in the Visual Basic code editor. To this end, from the Tools pulldown menu, pick Options, and in the Search box type in ‘IntelliSense’. Click on the entry IntelliSense under Text Editor/Basic.
Code Suggestions
The Visual Studio IDE helps you constantly improve your Visual Basic code. If your open a Visual Basic code file, look out for four gray dots in your code:
Move the cursor to the line. The Lightbulb shows up. Now either press Ctrl+. or Alt + Enter on the keyboard – alternatively hover the mouse over the Lightbulb, and open Quick Actions by clicking. Pick one of the offered code suggestions (e.g. Fix Name Violation: MoveButton_Click) from the menu, or Suppress the suggestion. If you want to suppress a code suggestion, you can do this for just this spot by letting Quick Actions surround the code line with a correlating #Disable Warning directive. If you don’t like to annotate your code with those directives, because you think too many of them are making the code hard to read, Quick Actions can also create or maintain a suppression file for the current project for you, in which all suppression spots are collected.
Configure Code Styles and Code Suggestions
If you want to configure coding style rules (and the resulting code suggestions) on a more global scale, Visual Studio 2017 offers you to configure rules to this end in two ways: Use the configuration dialog for Code Styles, which you can display by picking Options from the Tools pulldown menu. In the tree view, find the category Text Editor, Basic, Code Style.
Use Editor.config files
When you work on bigger solutions in a team, you need to configure your code style in a different way, because changes to the configuration need to affect the Editor’s behavior for that project of every team member. To this end, you can include Editor.config files which hold the code style settings either for the whole solution (you would need to put this file in a Solution folder) or a single project.
Kasey Uhlenhuth from the Visual Studio Team explains Editor.config files here in more detail.
New Debugging Aids
Visual Studio 2017 got a couple of new debugging aids for Visual Basic Developers. First: The exception helper dialog has been modernized and is now much easier to handle. And there is more!
New Exception Helper
The new Exception Helper is a great improvement, when you examine Exceptions during a Visual Basic debug session. One of the most helpful new features of this new Exception Helper is how it can assist you to find out, which part of an expression actually caused a NullReferenceException. The Exception Helper shows you the exact spot within the expression where the NullReferenceException occurred.
There are some limitations though: This does not work when you’re debugging JIT-optimized code (which results for example when you compile with the default Release setting), when expressions involve boxing/unboxing (ValueType via DirectCast or CType from Object), when Nullable types are involved or when you involve array references.
In addition, the exception helper is no longer a modal dialog like the Exception Assistant has been, so it is much easier to handle when you debug your application. And on top, if you open the exception details, you can evaluate the exception right in that dialog, and even add the exception expression to the current Watch tool window.
Run execution to here
Assume, you need to debug a very extensive method step-by-step. Of course, the first thing you do is setting breakpoints at those spots where you suspect bugs or faulty code to be. And now the challenge begins: While you are debugging the code, you need to skip over code parts, which are really time-consuming to debug step-by-step – like loops. What you had to do until now is setting temporary breakpoints at those spots, at which you wanted to continue debugging, then continue program execution (F5), and when the debugger hit such a temporary breakpoint, you would immediately delete it and continue debugging step-by-step. Or, you needed to set the cursor in that line, and from the menu or with a shortcut use the Debug Function Run to Cursor. In Visual Basic 2017 things got much easier, and you do not need to do that anymore – you can just use the Run to Click experience with the function Run execution to here: When you are debugging, in front of each line, you’ll find a little arrow. Click on it, and the debugger runs the app until it reaches that line – where it automatically breaks. If that line isn’t reached, the program runs to the end.
New Refactorings for VB
Visual Basic 2017 got some cool new Refactoring tools. Visual Basic 2010 already introduced the refactoring tool category Generate from Usage which helped you to use Classes, Interfaces, Properties and other Elements first, and let the IDE then generate the Code for those items you already used.
As an example, insert a line of code in a method using a class, which does not yet exist (make sure to start the class name with a capital letter, because otherwise the IDE won’t show the code generation options):
With Quick Actions, Visual Studio 2015 gave you already a bunch of options to create a new type.
Visual Basic 2017 lets you in addition…
Move Type to matching File
… move a type, which is defined along with other Classes or Structures in the same code file, automatically to its own code file with the corresponding filename.
Sync type and Filename
If you already have a separate code file for a Class, an Enum or a Module, but the filename ended up to be different from the element’s name in the code, with Visual Studio 2017 it’s just one click to sync both names:
Find all references
Previous versions of Visual Studio already introduced Find all References, so you could get a quick glance of where in your solution you used a certain class, method, property or other type items. To find a reference of an item, just click on that element in the code file, open the context menu and klick Find all References. In contrast to previous versions, the result list in Visual Studio 2017 is now much more useful and clearly arranged. Try it out:
New VB Language Features
In terms of language, Visual Basic 2017 also got new features – Tuples being the most important one. But there is also one new ability of the language which reflects the new language strategy for VB: VB does not need to get every single new feature C# gets. Rather, refining VB should address the VB target’s audience which is usually different from the C# audience and therefore demands different kind of language features and tooling. That said, it is very important, that Visual Basic will be able to use every aspect of a library which has been created in C# with features Visual Basic does neither have nor need itself. Ref Returns (see below) is a perfect sample for such a scenario.
Tuples
When you write methods in VB, which return values, you often find yourself in a situation, where you need to return more than one result value to the caller. If this happens, you got some options:
- Create a new Class or a new Structure to integrate the results, and return that Class or Structure.
- Work with ByRef Parameters, so you can return more than one variable.
- Work with Tuples!
The framework already has a couple of methods, which work with the ByRef alternative. Take a look at how the TryParse works, which you find on most of the primitive data types:
This is kind of cumbersome, don’t you think? If TryParse could return a Tuple, things would be much easier. Like this:
That is easy to use! Let’s see how Tuples work in detail. Tuple are not new to Visual Basic. They just weren’t very comfortable to use, yet. The new Tuple language feature in Visual Basic 2017 does rely on a different kind of type than Tuple(Of T). For those frameworks, which do not already contain the new type ValueTuple(Of T), you need to install a NuGet package to your project, before you can use this new language feature in your code. This is just for the time being. Later Framework versions will have them included automatically. To add the NuGet package, in the Solution Explorer open the context menu of your VB project, and click Manage NuGets. With the NuGet Manager, find and install the ValueTuple NuGet package into your project:
Before Visual Basic 2017, the only way you could use Tuples looked something like that:
As you can see, there wasn’t a nice way to infer the definition, and Tuple elements could also only be addressed by Item1, Item2, etc.
This is how you basically use Tuples now, and go back and forth between the old and the new Tuples versions in Visual Basic 2017:
Really cool is that you can name the Tuple elements for the current scope.
Tuples can also be used in expressions. For example, when you want to directly return them from a Function block…
…or when you use them with Select in an LINQ-Expression:
Binary Literals and Digit Separators
This is only a minor addition to Visual Basic, but it is helpful anyway, and it makes your code easier to read: You can use Binary Literals in VB from now on. You already had Hexadecimal Literals before – in the same way, Visual Studio now supports Binary Literals. On top, VB also got digit separators, so numbers with a lot of digits can be read more easily:
Ref Returns
We just learned, Tuples are great if you want to return more than one variable back to the caller. Before Tuples, you did this typically with variables which you passed to a method by reference. With a reference, the method cannot only retrieve the content of the variable, the calling method can also change it. Because it is the reference which get passed – a pointer to the actual content if you will – the method can also exchange the content: When that variable gets written, that change reflects to the variable which has been passed to the method.
In C# 7, methods can turn the tables on that. C# 7 can now return references of result values, which means: When you get the result of a method by reference, your calling code can change the content where this result is pointing to. Why C#? In Visual Basic, you cannot author methods which have this ability. But as of Visual Basic 2017 you can consume reference return values. Let’s take a closer look at a sample class written in C#, which provides a method to find and replace strings in a sentence:
You see here, FindNext returns the word which matches the start characters of the search string. Since FindNext returns that element by reference, we can not only read the returned value, we can also write it.
There is one catch, though: for this to work, we need local variables which can be declared ByRef. Unfortunately, Visual Basic does not let you do this, so a code like the following, which would work – if we translated it to C# – does not so in VB:
So, can we use C# Return by Reference methods in Visual Basic at all? Yes, we can! First, we could use a method or a property returning a value ByRef in VB directly. Like this:
Looks weird, doesn’t it? How come we can assign a value to a method? That’s not supposed to work. But if you take the signature into account, by whose tooltip you can recognize a method which is returning ByRef, by the way, it starts to make sense: You’re not assigning to the method, you are assigning to the variable the return value is pointing to.
The problem still is: this is not helping us. In our example, we’re supposed to assign our replacement string back to the reference only when we know we found the correct word. But testing the word means we’re losing the reference, because there is no way to store it. Or is it?
Well, with a trick, even in Visual Basic we can declare a local ByRef variable. Visual Basic allows to pass ByRef variables to methods, so we can easily declare a helper method which takes a variable ByRef, pass the result of the C#-ByRef-Function, and use the variable the same way as we would do it in C#. Like this:
That’s exciting! This version also uses Tuples to simplify the handling. Using this helper function now becomes easy:
We’re passing the search term to FindNext. FindNext returns the found word by reference along with a status, if something has been found (in didFind), back to us, and we feed those results directly to our helper method FindNextHelper– both the stringFound reference and the didFind variable. Since FindNext changes the content of didFind by reference, this reflects to the didFind value we use inside of FindNextHelper, which we eventually return to the caller via the Tuple.
With methods like this becoming possible in C#, we will see most likely library developers using them more often. So, wouldn’t it be since, if we could come up with a more generalized form of assigning values to local reference variables in Visual Basic? Well, let’s try this:
Here, we are basically doing the same trick: We are coming up with a way to read and write to a referenced variable by moving the actual code inside a method which retrieves the pointer ByRef. And then we use a Func delegate to also pass the code which is later used to assign to the ByRef variable. In contrast to what we had before, this alternative can be used for different scenarios. Here is ours:
Don’t you think that’s pretty close to the C# version?
Well, that’s all for now.
Go and try out all the new Features of Visual Basic 2017 by yourself! And don’t forget to tell your friends and colleagues what exciting new feature there are in Visual basic 2017!
So long, with best from Germany!
Klaus Löffelmann
(follow me on Twitter @loeffelmann)
Syscoin joins the Azure Ecosystem
I’m excited to announce that Syscoin and its parent company, Blockchain Foundry, have recently launched three blockchain products which are now LIVE on Azure.
Developers can now deploy:
- A full Syscoin node through Azure.
- Stand up and configure customized exchange rates for use in Syscoin’s distributed marketplace via Syscoin’s Price Peg Server.
- Access Syscoin’s entire suite of blockchain-based services and smart contracts via the Syscoin API.
Through Syscoin’s API product, developers can create blockchain-enabled applications using Syscoin’s suite of decentralized business services, including digital certificates, secure messaging, marketplace offers, payments and escrow transactions.
Syscoin and Blockchain Foundry are important partners on Azure. We are proud to welcome them to the platform and we look forward to an ongoing partnership with the team.
Syscoin’s suite of blockchain products can be deployed here: Syscoin Product Suite.
Team Services Extensions Roundup – March
February didn’t hold the title of best month on record long – it’s already passed that title to March! A huge thanks to our publishers and customers who continue to grow the ecosystem of extensions around Team Services. This month I’ve got extensions in our Agile and Work Item space that are pretty new and really great.
SpecMap
See it in the Marketplace: https://marketplace.visualstudio.com/items?itemName=techtalk.specmap
Story Maps provide a great tool for visualizing a user’s activities and the hierarchy of stories your team will need to deliver on to have the greatest impact. SpecMap brings Story Maps to Team Services and your Work Items are the Story Map elements.
What are Story Maps?
From SpecMap’s documentation: A typical story map has a hierarchic structure involving user activities and user stories. The story maps tell stories from the user’s perspective and represents the user’s progress through the system as a series of activities. The first step is to describe the user’s progress through the system using a narrative flow that can be depicted using user activities.
Once these user stories have been discussed and defined by your team, the next step is to prioritize development to deliver the biggest impact possible over the next development cycle. User stories are assigned to activities and arranged vertically by priority (higher priority items at the top). Finally the story map is divided into horizontal slices, with each slice typically representing a single iteration or sprint.
SpecMap takes what would normally be done with sticky notes or whiteboards and allows you to create Story Maps directly inside Team Services, linking the items to your backlog
Getting Started with SpecMap is easy, and is definitely worth a look!
Board Group
See it in the Marketplace: https://marketplace.visualstudio.com/items?itemName=ottostreifel.board-group
I’m a big fan of KanBan boards, and Board Group gives me a small optimization I have always thought is a good idea, the ability to modify the lane and column of a Work Item from the work item form. It also adds the ability to change the lane and column from the board without dragging and dropping. Definitely check this extension out if you’re a KanBan board user!
Are you using (or building) an extension you think should be featured here?
I’ll be on the lookout for extensions to feature in the future, so if you’d like to see yours (or someone else’s) here, then let me know on Twitter!