When was the last time you had an in-person meeting? Let’s face it: today’s work rendezvous are becoming increasingly more electronic. While online or virtual meetings can be convenient, they also detract from participant accountability by providing more room to lose people’s attention. When people are distracted, meetings lose focus and require more time for repetition.
To keep your meetings—and your schedule—on track, consider these six tips and transform your routine.
- Agenda action—Whether your meeting participants are located across the building or the world, it’s important to get everyone on the same page. While formal agendas may not be as in vogue as they once were, reinstate the practice. Include the meeting’s topics in the body of your calendar invite or email out a document 24-48 hours before the designated time. This will provide all parties the chance to set their expectations regarding the meeting goals. And yes—if you’re the recipient of a meeting agenda, read it! Even if you’re familiar with the project or discussion topics, you may learn important information about the perspectives or concerns on the table, and it’s never fun being blindsided.
- Prep your (Ps and) Qs—Whether your meeting has a set agenda or not, make sure you know what your goals are. Before the meeting, compile any notes or background information you may need to reference as well as any questions. Having a prepared list or set of bullet points will relieve the pressure of thinking of any questions on the spot as well as allowing you to engage with the discussion at hand. Feel free to jot down questions on the agenda if there is one, or set up your notes document ahead of time with initial goals or thoughts at the top. No matter your preparation style, following this preparation practice will ensure you’re reminded of your own agenda the day of the meeting.
- Troubleshoot your tech—Whether it’s your first online meeting or your millionth, make sure you know how to use your technology. Confirm how to dial in and that your speakers work. If you need internet to access your conference or your (meeting-related) email or notes, check that Wi-Fi! Initial frustrations often develop when that one person needs one more minute to access the conference line. Don’t be that cause—get to your conference room early and dial in. Even if you set your phone to mute until other people join, at least you can focus on the content of your talk rather than getting there in the first place.
- Sharing is caring—If you are reviewing any information with accompanying visuals or statistics or if you’re referencing external documents, make sure everyone can follow along. Set up a screen share so that you can direct your audience’s attention and keep everyone on the same page. This step may alleviate the “Wait! Where are we?” questions as well as the “Hold on, I have to get to the right page.” Sharing your screen eliminates the need for those pauses and moments of confusion. Just remember: if you’re sharing your screen, make sure to turn off any email, phone or messaging programs or notifications to avoid any uncomfortable announcements.
- Be direct—One of the challenges of online meetings is knowing who is about to speak or who needs to jump in. Based on the meeting participants and their personalities, virtual meetings can range on the spectrum of everyone talking over each other to long pauses after someone’s finished speaking. To avoid indistinct vocal jumbles or empty air time, frame questions specifically to other meeting participants. If people are working together or relying on other steps in the process to move forward, don’t be afraid to ask them specifically if they have anything to add or additional questions. By being direct with turning the conversation, you’ll ensure that you’ve maximized meeting time while allowing everyone to be heard.
- Personality perks—Online, phone or virtual meetings can be a drag—you don’t have body language to read how people are responding or whether they’re following along. To remedy the possibility of losing people’s focus, keep your personality primed. Be as personable as you would be in person—or more so, as the meeting requires. High energy will engage your audience and keep them tuned in to the topics at hand. They wouldn’t want to lose track, especially if you have a habit of asking people directly how they respond to a point. With everyone involved at the top of their meeting game, your meeting points will be addressed quickly, and you’ll cover more material in less time.
No matter the meeting format, there’s no need to get lost in the virtual shuffle. By being prepared and engaging your colleagues, your meetings will be clear and on target with your goals. Download The Ultimate Meeting Guide to get the info you need to hold meetings that people want to attend.
- Learn how to run large virtual meetings like a pro.
- Get The Ultimate Meeting Guide and learn how to hold meetings that people actually want to attend.
The Windows Subsystem for Linux was announced as a beta feature at //Build 2016. Since then, we have explored an architectural overview, how Pico Processes work, System Calls redirection and File System support. Today we explore a new WSL feature: the ability for WSL to call Windows executables, and for Windows to call Ubuntu binaries. Ben Hillis will deep dive into the inner workings of our most requested feature and show how these two environments can complement each other in some very interesting ways.
For those deploying Microsoft’s Surface Dock devices in the organization, there’s a utility called the Surface Dock Updater Tool that allows IT Pros to put the dock on the latest firmware prior to deploying them to business users.
The tool has just been updated and according to Microsoft, v2 offers the following improvements:
· More reliable Ethernet
Last month I had the pleasure of participating in a panel discussion at the Microsoft Ignite conference where we discussed mobile app development. I spoke about Visual Studio’s Tools for Apache Cordova (a.k.a. “TACO” for short) side-by-side with James Montemagno of Xamarin fame, Ankit Asthana from the Visual Studio C++ team, and Daniel Jacobson from the UWP team. I heard a lot of really good questions from the audience. Some of these questions are so common that I figure many of our Visual Studio blog readers may find them interesting. In this post I’m going to share the answers to our most common TACO questions. (Sorry, no definitive answer to the most pressing question of all: hard or soft shell tacos?)
Feel free to ask new questions via the comments section at the bottom of this post! If I get a strong response, I may even look at writing a follow-up post to answer them.
- What is TACO?
- I have both .NET and web development skills, should I use Xamarin or Cordova to go mobile?
- I have an existing web app; how can I use Cordova to make it mobile?
- Using Apache Cordova, can I use native features such as push notifications?
- How can I make a mobile app that will live for 5-10 years?
What is TACO?
- Visual Studio TACO – a complete IDE for building and debugging Apache Cordova apps. You can download it for free from the Visual Studio website.
- The Cordova Tools extension for Visual Studio Code – an extension for Visual Studio Code that provides IntelliSense, debugging, and build support for Apache Cordova and Ionic projects.
I have both .NET and web development skills, should I use Xamarin or Cordova to go mobile?
Many of our blog readers, myself included, have experience building with both .NET and web-based technologies. Consequently, both Xamarin (which lets you take your .NET skills mobile) and Apache Cordova (taking your web skills mobile) may be appealing for mobile development. That’s why this has been our #1 most asked question for years, and even more so now that Xamarin has joined Microsoft and is included for free in Visual Studio!
The short answer is that “it depends” – not all apps or development teams are the same, so you want to look at where the two technologies excel and consider the skills of your existing team (which may just be you). Both products make it possible for you to share nearly 100% of your code across iOS, Android, and Windows applications.
Cordova is great if you:
- Already have web sites/content that you’d like to re-use in a mobile app.
- Plan to use the most common device features, like the camera.
- Want to take advantage of services like CodePush, which give you the ability to publish bug fixes and incremental updates to your app without resubmitting to the stores.
While you could build just about any mobile app using Cordova, I’d say you generally wouldn’t use Cordova to build a graphics or data processing intense application like a game; nor would you want to use it to build an app with the richest native-app user experience and animations (though there are frameworks that you can use to build an app that feels just about as good as native). Among the customers we’ve spoken with, a common use for Cordova is to take existing “line of business” or data entry/forms-based web applications and make them mobile. These can be apps like expense and time tracking, retail inventory management, or investment portfolio tracking.
Both Xamarin and Cordova provide you a way to get at native device features, but there’s a big difference in how they work. Xamarin has built-in support for all native APIs on devices, but in Cordova you have to navigate the ecosystem of open source plugins (read more about plugins, below). Plugins can vary in quality and may not be updated as quickly as Xamarin. Companies like Adobe and Microsoft are vigilantly maintaining the plugins most often used by businesses/enterprises to make sure they work great, but other plugins are the domain of the larger community.
Xamarin is great if you:
- Want to have full access to native API features.
- Need to build apps using the latest user interface guidelines.
- Prefer working with C#, .NET, XAML (In the case of Xamarin.Forms) and frameworks built on top of that tech.
- Already have .NET libraries (like JSON.NET) or other .NET assets you’d like to re-use in a mobile app.
- Want to take advantage of the full performance of a device.
Xamarin offers the ability to use existing .NET ecosystem technologies, such as NuGet, to build a fully native application that runs with the same performance that is expected from a native app. As Xamarin utilizes the APIs for each platform, Xamarin also offers the ability to use the latest and greatest of what each platform has to offer. Any app that you could build using the native platforms, you can build using Xamarin.
Regardless of your choice
No matter which way you go, I do recommend trying out the tools first and build a prototype or two to see what comfortably suits your development style and application needs.
I have an existing web app; how can I use Cordova to make it mobile?
The simplest thing you can do to take your existing web application to mobile is to build something called a hosted web application. This is a Cordova application that has all its content hosted on a web server, instead of stored locally on the device. It follows the traditional web server hosted model that web developers know and love today. This means you can leverage your existing web assets and create an app that can be loaded to an app store. You can learn more about this technique in the Create a hosted web app using Apache Cordova tutorial on the TACO documentation site. The hosted web app model goes a step further than just hosting a website in the application, it also makes it possible for you to enable the hosted web application to access native device capabilities by leveraging the Cordova plugin model.
With this model you do have some downsides – you still must do extra work if you want to have an application that can work offline/with no network connectivity (because, you wouldn’t be able to get the app’s content from a web server when there’s no network connection).
You might also consider building a separate version of your application tailored just to mobile devices, but still share some common code – see below for some suggestions there.
How does Cordova compare to the new Progressive Web Apps model?
Progressive Web Apps, or “PWA” for short, allow you to build a mobile version of your website that end users can add on their dev’s home screen. This PWA app will run from a web server, but has added capabilities to handle offline caching, send push notifications, and make background content updates. Using web standard APIs already available today, such as Geolocation, you can pretty simply make a web experience that functions like a native app without having to go through an app store. (take a look at this article from our friend’s in the Ionic team, to learn more).
I’d say the three key differences between PWAs in their current form, and Apache Cordova, are:
- PWAs do not provide you access to full native device features; only those supported by standard web APIs today. Cordova makes it possible to get at all device capabilities, as long as a plugin has been created to provide that functionality.
- A PWA cannot be discovered through app stores; if you want to build an app that can be discovered through an app store, you’d want to use Cordova to create that app. Note: The Microsoft Edge team is exploring how PWAs could be listed through the Windows Store.
- Mobile platform support for PWAs are currently limited; neither iOS nor Windows devices currently support the PWA model, only recent versions of Android and Chrome provide support. As of this writing, you can use PWAs with the Chrome browser and as an experimental feature in Firefox and Opera web browsers. Microsoft Edge has also announced work to support PWAs going forward. If you want to reach the broadest sets of end users across all the major device manufacturers and form factors, you’ll want to stick with Cordova for now.
Using Apache Cordova, can I use native features such as push notifications?
Yes! Using plugins with Apache Cordova, you can use a variety of native device features. Plugins exist for device features such as the camera, battery status, and push notifications. You can find a wide variety of plugins for the most common device features by searching the Cordova plugin repository. To work with push notifications, specifically, you can read about how to add push notifications to your Cordova app using Azure App Services.
In creating a plugin, the author provides:
- The native code implementation for each supported platform (e.g. Swift code for iOS, Java for Android, and C# for Windows).
Our team at Microsoft is helping to make sure that the plugins most important to business are working well; while an active community of Cordova developers work on building out other features. We make sure that the core/most important plugins are working well on Android, iOS, and Windows devices, so long as those platforms support the technology.
How can I make a mobile app that will live for 5-10 years?
I know there are projects I’ve worked on in the past where we were building a solution that was expected to last 5 or more years with relatively little maintenance required from a developer team. I’ve heard from many of you that have had similar experiences and the question has come up if you can make a mobile app that would last this long. If you’ve built a mobile web application that can last this long, then you certainly build that same app as a mobile application using Cordova.
My answer is different if you’re building a more complex application with multiple screens that accesses native device features and works with 3rd party services for features like push notifications. For this type of application, you’d need to not only design for the devices available today, but have an eye toward where you think devices will be in those 5-10 years. How will the UI behave on these future devices and what device features will still be supported? You’d also need to select services that you know can still be rely on in the future. I think for many of us, these future requirements would be too hard for us to predict.
During our mobile panel discussion at the Microsoft Ignite conference, we generally agreed that it’s not possible to predict the future of mobile apps this far out whether you’re using Cordova, Xamarin, Objective-C, Swift, Java or something else. Instead, you should focus on building a service layer that can scale to support future requirements and mobile device changes. For example, instead of coding business logic into the application directly, create a backend service layer that is called by the application (e.g. via RESTful APIs) to handle that same logic. Then, as your application needs change over time, or new mobile apps are created, your existing service layer can still be used by those apps without having to modify that code.
In support of the service layer of your app, you may want to consider the following Microsoft services to see how well they’d work for you:
- Setup a mobile backend using Azure App Services.
- Write and deploy test scripts to run on Xamarin Test Cloud.
- Distribute beta apps using HockeyApp.
- Automate your DevOps lifecycle using Visual Studio Team Services.
Have more questions? Share them with us!
While these are the most common questions I hear from developers, I suspect you have some more. Feel free to ask them in the comments below, or send us a direct email. If you have some questions about Cordova issues or best practice our visual-studio-cordova tag on Stack Overflow is also a great place to ask them. Also, be sure to check out documentation site to learn more about TACO!
|Jordan Matthiesen (@JMatthiesen)
Program Manager, Tools for Apache Cordova
You have hundreds, thousands, perhaps even millions of sensors in your stores, factories, pipelines. And something goes wrong. You need software that can make intelligent decisions in real time, perhaps coordinating hundreds of devices: stop the assembly line, reroute the flow.
Or you’ve created a SaaS service that’s suddenly become wildly successful, with tens of thousands of users online at any given time. Your site is groaning under the strain. Your users demand real-time response, you need resiliency, you can’t wait on SQL databases – and you need it to be easy to program so your developers can get it to market fast.
There’s a solution, and it’s been “battle-tested” in a surprising place: online video games, in particular, the best-selling “Halo” franchise from Microsoft. “Actor frameworks” make massive scale for millions of interacting users (or devices) a straightforward thing.
Think about it: when you log on to Halo online, there’s a little piece of code running in the cloud – it represents you; and there may be hundreds of thousands of other players online simultaneously, all with their own little piece of code. That little code object is your “actor,” and it keeps track of where you are in the game, your score, your weapons.
It’s you in the cloud.
The same concept can be used for managing IoT sensors, cars, customers – any scenario where you have to keep track of lots of things at once. Little code objects that represent something real. Not you (or your sensor or your customer): but code in the cloud that acts on your behalf. An actor.
Which server is your actor running on? Where is your opponent’s? What if the server fails? How do you scale? Your developers don’t have to care: the framework takes care of all the low-level infrastructure, scale, networking, and failover.
The point: massive, distributed scale – which used to be a Hard Problem – isn’t anymore. Your developers focus on business logic – adding value to your business.
The “actor frameworks” in Halo were originally developed by Microsoft Research and 343 Industries. But there’s been such demand for a “productized” version that we’ve incorporated the actor model into our comprehensive next-generation microservice cloud application framework, called Service Fabric, available in Azure (and on-premises as well) today. Service Fabric is equally battle-hardened, being the evolution of the application infrastructure used in mission-critical applications like Skype for Business, Cortana, and a number of Azure services. It includes auto-scaling, integrated health monitoring, service healing, orchestration and automation for microservices of all kinds – actors, as well as containerized (like Docker) applications.
Because developers focus only on business logic, not infrastructure, actors accelerate your time to market. Dr. Gregory Athas, principal software architect at BMW, who implemented Service Fabric actors for their BMW Connected application, says, “We’ve found actors to be a natural way to model users in our system. They allow us to focus on our core functionality while inherently supporting persistence, scalability, and resiliency.” Similarly, Stephen Berard of Schneider Electric adds, “Service Fabric reliable actors enabled us to build a scalable solution for implementing our device logic within EcoStruxure.io.”
You may have detected a theme in our recent posts: that increasingly the cloud permits developers and analysts to focus on business logic, and not infrastructure. Actor-model is a great example of this: the cloud provides hyperscale, failover, and all sorts of other benefits, while your developers focus on adding value to your business.
That’s what enterprise computing in the 21st century is all about.
* * *
Oh, and a postscript: You can do all sorts of things with actors. One of my colleagues, Barry Briggs, wrote an actor-based spreadsheet – where each cell is an actor — a few years ago as a technology demonstration running in Azure. Using several hundred cores he was able to load and model the world’s historical weather records – into one sheet.
Here he is demonstrating (with a nice technical description of actor model):
Severity Rating: Critical
Revision Note: V1.0 (October 11, 2016): Bulletin published.
Summary: This security update resolves a vulnerability in Microsoft Windows. The vulnerability could allow remote code execution if an attacker successfully convinces a user of an affected system to visit a malicious or compromised website. Note that you must install two updates to be protected from the vulnerability discussed in this bulletin: The update in this bulletin, MS16-116, and the update in MS16-104.
Microsoft Security Bulletins