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

Microsoft Cognitive Services QnA Maker Helps Developers

$
0
0
As announced earlier this week on the Bot Framework Blog, the Microsoft Cognitive Services QnA Maker, is a free, easy-to-use, REST API- and web-based service that trains AI to respond to users’ questions in a conversational way. QnA Maker works in three steps: extraction, training, and publishing. To start, feed it anything from existing FAQ URLs to documents and editorial content.
 
Bot Makers determine the source of their knowledge base content and, by extracting semi-structured data in the form of questions and answers in an FAQ document or webpage, the QnA Maker Service can create a knowledge base within a matter of minutes. Read the full post on the Bing Developer blog.

-The Bing Team

CMake support in Visual Studio 2017 – what’s new in the RC.2 update

$
0
0

In case you missed the latest Visual Studio news, there is a new update for Visual Studio 2017 RC available. You can either upgrade your existing installation or, if you’re starting fresh, install it from the Visual Studio 2017 RC download page. This release comes with several enhancements in Visual Studio’s CMake experience that further simplify the development experience of C++ projects authored using CMake.

If you’re just getting started with CMake in Visual Studio, a better resource will be the overview blogpost for CMake suport in Visual Studio that will walk you through the full experience including the latest updates mentioned in this post. Additionally, if you’re interested in the “Open Folder” capability for C++ codebases that are not using CMake or MSBuild, check out the Open Folder for C++ overview blogpost.

This RC update adds support to the following areas:

Opening multiple CMake projects

You can now open folders with an unlimited number of CMake projects. Visual Studio will detect all the “root” CMakeLists.txt files in your workspace and configure them appropriately. CMake operations (configure, build, debug) as well as C++ IntelliSense and browsing are available to all CMake projects in your workspace.

cmake-rc2-multipleroots

When more than one CMake project uses the same CMake configuration name, all of them get configured and built (each in their own independent build root folder) when that particular configuration is selected. You also are able to debug the targets from all of the CMake projects that participate in that CMake configuration.

cmake-rc2-configurationdropdown

cmake-rc2-buildprojects

In case you prefer project isolation, you can still create CMake configurations that are unique to a specific CMakeLists.txt file (via the CMakeSettings.json file). In that case, when the particular configuration is selected, only that CMake project will be available for building and debugging and CMake-based C++ IntelliSense will only be available to its source files.

Editing CMake projects

CMakeLists.txt and *.cmake file syntax colorization. Now, when opening a CMake project file, the editor will provide basic syntax colorization and IntelliSense based on TextMate.

cmake-rc2-syntaxcolorization

Improved display of CMake warnings and errors in Error List and Output Window. CMake errors and warnings are now populated in Error List window and double-clicking on one in either Error List or Output Window will open the CMake file at the appropriate line.

cmake-rc2-errorlist

Configuring CMake

Cancel CMake generation. As soon as you open a folder with a CMake project or operate changes on a CMakeLists.txt file, the configuration step will automatically start. If for any reason, you don’t expect it to succeed yet, you can cancel the operation either from the yellow info-bar in the editor or by right-clicking on the root CMakeLists.txt and selecting the option “Cancel Cache Generation”

cmake-rc2-cancel-editorbar

Default CMake configurations have been updated. By default, VS offers a preset list of CMake configurations that define the set of switches used to run CMake.exe to generate the CMake cache. Starting with this release, these configurations are “x86-Debug”, “x86-Release”, “x64-Debug” and “x64-Release”. Note that if you already created a CMakeSettings.json file, you will be unaffected by this change.

CMake configurations can now specify configuration type (e.g. Debug, Release). As part of a configuration definition inside the CMakeSettings.json, you can specify which configuration type you want the build to be (Debug, MinSizeRel, Release, RelWithDebInfo). This setting is also reflected by C++ IntelliSense.

CMakeSettings.json example:
cmake-rc2-configurationtype

All CMake operations have been centralized under a “CMake” main menu. Now you can easily access the most common CMake operations for all the CMakeLists.txt files in your workspace from a central main menu called “CMake”.

cmake-rc2-cmake-mainmenu

Use “Change CMake Settings” command to create or edit the CMakeSettings.json file. When you invoke “Change CMake Settings” from either the main menu or the context menu for a CMakeLists.txt, the CMakeSettings.json corresponding to the selected CMakeLists.txt will be open in the editor. If this file does not exist yet, it will be created and saved in the same folder with the CMakeLists.txt.

More granular CMake cache operations are now available. Both in the main menu as well as in the CMakeLists.txt context menu, there are several new operations available to interact with the CMake cache:

  • Generate Cache: forces the generate step to rerun even if VS considers the environment up-to-date
  • Clean Cache: deletes the build root folder such that the next configuration runs clean
  • View Cache: opens the CMakeCache.txt file from the build root folder. You can technically edit the file and save, but we recommend using the CMakeSettings.json file to direct changes into the cache (as any changes to CMakeCache.txt are wiped when you clean the cache)
  • Open Cache Folder: Open an Explorer window to the build root folder

Building and debugging CMake targets

Build individual CMake targets. VS now allows you to select which target you want to build in addition to opting for a full build.

cmake-rc2-buildtarget

CMake install. The option to install the final binaries based on the rules described in the CMakeLists.txt files is now available as a separate command.

Debug settings for individual CMake targets. You can now customize the debugger settings for any executable CMake target in your project. When selecting “Debug and Launch Settings” context menu for a specific target, a file launch.vs.json is created that is prepopulated with information about the CMake target you have selected and allows you to specify additional parameters like arguments or debugger type.

cmake-rc2-debugsettings

Launch.vs.json:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "tests\\hellotest",
      "name": "tests\\hellotest with args",
      "args": ["argument after argument"]
    }
  ]
}

As soon as you save the launch.vs.json file, an entry is created in the Debug Target dropdown with the new name. By editing the launch.vs.json file, you can create as many debug configurations as you like for any number of CMake targets.

cmake-rc2-debugtarget

What’s next

Download Visual Studio 2017 RC.2 today, try it with your favorite CMake project and then share your experience. We’re interested in hearing both about the good and the bad as well as how you see this experience evolving beyond the upcoming Visual Studio 2017 RTM release.

We hope you enjoy these updates and you’ll keep the feedback coming.

AdDuplex – your one stop shop for Windows app and game marketing and monetization

$
0
0

From the early days of the Windows Phone 7 Marketplace to the modern days of Windows Store, AdDuplex was and is committed to providing top-notch advertising solutions for app and game developers, publishers and advertisers.

Premier cross-promotion network

Back in 2011, AdDuplex launched the first cross-promotion network for Windows Phone 7 apps and empowered thousands of independent developers to advertise their apps for free by helping fellow app and game creators. Apps that got initial attention in the early days of the ecosystem received an overall boost and enjoyed the early exposure for years to come. AdDuplex helped such apps by utilizing their ad space before they had reached a level of popularity that made monetization efforts worthwhile.

AdDuplex cross-promotion network works as an enabler of advertising exchange between participating apps and games. Developers place a line of code into their apps and start promoting other apps on the network. Those other apps return the favor. The exchange ratio is 10:8, meaning that for every 10 ad impressions your app shows, you are advertised eight times in other apps. The remaining two impressions are used by AdDuplex to help commercial advertisers reach their potential users and support future development of the platform.

Since 2011, more than 10,000 apps joined AdDuplex and use it to accelerate and amend their growth efforts.

User acquisition on Windows

Free cross-promotion is great, but it limits the velocity of your growth to a pretty linear scale. What if you want to grow faster and have a budget for that? AdDuplex provides an opportunity for app and game publishers to reach more users faster via paid advertising campaigns.

Publishers from all over the world use AdDuplex to both jumpstart their new apps and games, and acquire new users for their other apps and games.

Windows 10 era

The day after the initial public Windows 10 launch, AdDuplex was ready with an SDK for UWP apps. It lets developers use the same SDK and even the same ad units across desktop and mobile, and is now ready for your apps on Xbox One.

App developers and advertisers can target various versions of Windows Phone and Windows across all main device families and reach exactly the users they are looking for through either banner or full-screen ads.

Make money with your Windows apps and AdDuplex

The most recent development was a launch of ad monetization part of AdDuplex. While still in invite-only mode, every app and game developer is welcome to apply for and participate in a revenue-sharing scheme in which developers get 70 percent of the money that advertisers pay AdDuplex. And even when there are no paid campaigns to show, your ad space is not wasted – AdDuplex cross-promotion network kicks in and generates free advertising for your app or game.

Getting started with AdDuplex

Whether you are an independent app developer or an advertiser in search of scale, benefitting from AdDuplex services is really easy. Here are the basics you’ll need to get started (plus some nice extras):

The post AdDuplex – your one stop shop for Windows app and game marketing and monetization appeared first on Building Apps for Windows.

Windows Bridge for iOS: Customizing the Surface Dial Experience

$
0
0

In part one of the Windows Bridge for iOS series, we created a simple to-do list app in Xcode and used the iOS bridge to bring it over to Windows 10. In part two of the series, we went on a tour of Visual Studio for iOS developers. In part three, we used the Windows Bridge for iOS to convert an iOS calculator app created using Storyboards and Auto Layout to a Universal Windows Platform app that adjusts to various form factors on Windows 10. In part four, we discussed how to mix and match UIKit with XAML controls in a bridged UWP app.

Today, we explain how to customize the Surface Dial Experience for bridged UWP apps using Objective-C projections.

Getting Started

For today’s tutorial, you will need:

If you don’t have a Windows 10 PC, you can download one of our pre-built evaluation virtual machines from the Windows Bridge for iOS website. Download the package for your preferred virtualization environment and you’ll be up and running in no time.

Understanding the Project Structure

With the radial control sample initial code downloaded and unzipped on your Mac development environment, open the Xcode project and briefly explore the application. The application consists of:

  • AppDelegate– contains the UIApplicationInitialStartupMode Category that ensures the app scales properly on Windows 10 for a variety of form factors.
  • ViewController – provides the view management infrastructure for the app’s user interface, which consists of a slider, a label that is updated with the value of the slider and a switch.

Build and run the application in the simulator and move the slider to make sure everything is properly set up.

Using vsimporter

You are now ready to run the app through the vsimporter tool. To do so, you’ll need to copy your Xcode project files to your Windows Machine (or VM). With the files copied, follow the steps under the Using vsimporter section of part three of the blog series. Once you’re done, return to your radial control project directory, which should now contain a brand new Visual Studio solution file.

Open the Visual Studio solution by double-clicking on the RadialControlSample-WinStore10.sln file and build and run the application on your local machine by clicking on the Run button on the top menu. You’ll notice the same UI we saw running in the Xcode Simulator — you now have a native iOS app running on Windows. Try moving the slider and you’ll see its value label change.

Adding a New Menu Item to the Radial Controller Tool

You will now update this app to add a custom menu item to the radial controller tool that will respond to rotate and click actions by changing the slider value and toggling the switch.

To implement radial controller features in your app, you will need the public headers for the relevant UWP frameworks. In the bridge SDK you downloaded, go to the include\Platform\Universal Windows\UWP directory and take a look at what you find. Each header file represents a different namespace within the Windows Runtime APIs. For our purposes, you will need APIs from Windows.UI.Input since the radial controller is an input device and all of its classes are contained in that namespace.

To include this framework – and make sure it’s only included when the code is being run on Windows – start by adding an #ifdef and the #import macros to the top of the view controller implementation file:


#import "ViewController.h"
  
  #ifdef WINOBJC
  #import 
  #endif

To interact with the radial controller, you will need to add a property to the view controller of your app that will allow you to access it. In C++, wheel input devices are represented by the RadialController class. However, as you build using Objective-C projections, you will notice that the standard naming scheme for these objects has been modified to match Objective-C conventions, where classes are prefixed with the letters that constitute their containing namespace:

  • Windows.UI.Input.RadialController becomes WUIRadialController

As a result, add a WUIRadialController property to the @interface section of the view controller implementation file:


 @interface ViewController()

  @property UILabel *demoTitle;
  @property UILabel *demoInfo;
  @property UISlider *slider;
  @property UILabel *sliderLabel;
  @property UISwitch *switchControl;

  #ifdef WINOBJC
  @property WUIRadialController* radialController;
  #endif

  @end

Next, you need to get a reference to the WUIRadialController object with the CreateForCurrentView method as explained in the RadialController class documentation. Looking at the WindowsUIInput.h header you’ll find the equivalent Objective-C projection under the WUIRadialController class interface:


  @interface WUIRadialController : RTObject
  [...]
  + (WUIRadialController*)createForCurrentView;

Call this method at the end of the viewDidLoad method of the view controller file to instantiate the WUIRadialController property:


- (void)viewDidLoad {
    [...]

  #ifdef WINOBJC    
    // Create a reference to the radial controller
    self.radialController = [WUIRadialController createForCurrentView];
  #endif
  }

Now you need to get a reference to the radial controller menu and its items. This is done via the Menu property of the RadialController class that returns a RadialControllerMenu object. Looking back at the  WindowsUIInput.h header, you’ll find the equivalent Objective-C property under the WUIRadialController class interface that returns a WUIRadialControllerMenu object:


@interface WUIRadialController : RTObject
  [...]
  @property (readonly) WUIRadialControllerMenu* menu;

Call this property to get a reference to the radial controller menu:


- (void)viewDidLoad {
    [...]

  #ifdef WINOBJC    
    // Create a reference to the radial controller
    self.radialController = [WUIRadialController createForCurrentView];

    // Get the radial controller menu
    WUIRadialControllerMenu* menu = self.radialController.menu; 
  #endif
  }

The menu items are accessible via the Items property of the RadialControllerMenu class. As before, the interface of the WUIRadialControllerMenu class in the WindowsUIInput.h header gives you the equivalent Objective-C property:


  @interface WUIRadialControllerMenu : RTObject
  [...]
  @property (readonly) NSMutableArray* /* WUIRadialControllerMenuItem* */ items;

Call this property to get a reference to the menu items:


  - (void)viewDidLoad {
    [...]

    // Get the radial controller menu
    WUIRadialControllerMenu* menu = self.radialController.menu;

    // Get the menu items
    NSMutableArray* menuItems = menu.items;
  #endif
  }

Next, you need to create a new RadialControllerMenuItem object to add to the menu with the projection of the CreateFromKnownIcon class method:


@interface WUIRadialControllerMenuItem : RTObject
  + (WUIRadialControllerMenuItem*)createFromIcon:(NSString *)displayText icon:(WSSRandomAccessStreamReference*)icon;

Call this method to create the new menu item:


- (void)viewDidLoad {
    [...]

    // Get the menu items
    NSMutableArray* menuItems = menu.items;

    // Create a new menu item
    // To use your own custom icon for the menu item, use the createFromIcon method instead
    WUIRadialControllerMenuItem* newMenuItem = [WUIRadialControllerMenuItem createFromKnownIcon:@"Custom Tool" value:WUIRadialControllerMenuKnownIconRuler];
  #endif
  }

Note that we reused an existing icon for our tool from the RadialControllerMenuKnownIcon enumeration, but you can create your own and use the CreateFromIcon method instead.

Finally, add your new menu item to the menu items array:


  - (void)viewDidLoad {
    [...]

    // Create a new menu item
    // To use your own custom icon for the menu item, use the createFromIcon method instead
    WUIRadialControllerMenuItem* newMenuItem = [WUIRadialControllerMenuItem createFromKnownIcon:@"Custom Tool" value:WUIRadialControllerMenuKnownIconRuler];
  #endif

    // Add a new menu item
    [menuItems addObject:newMenuItem];
  }

That’s it! Now build and run your application and press and hold the Surface Dial to see the new menu item appear.

Adding a Handler for Click Input

In this section, you will add a handler for click input that will toggle the application switch control if the radial controller is clicked when the new tool you added to the menu is selected. Taking a look at the WindowsUIInput.h header, you’ll see you need the addButtonClickedEvent: method:


@interface WUIRadialController : RTObject
   [...]
   - (EventRegistrationToken)addButtonClickedEvent:(void(^)(WUIRadialController*, WUIRadialControllerButtonClickedEventArgs

Since the callback relies on Objective-C blocks, you need to mark the self reference with the __block keyword before using it to access the switch to avoid creating a retain cycle. Add the following code at the end of the viewDidLoad method to do this:


  - (void)viewDidLoad {
    [...]

    // Add a new menu item
    [menuItems addObject:newMenuItem];

    __weak ViewController* weakSelf = self; // Ensures self will not be retained
  }

Now you can safely toggle the switch in the radial controller click callback:


 - (void)viewDidLoad {
    [...]

    __weak ViewController* weakSelf = self; // Ensures self will not be retained

    // Add a handler for click input from the radial controller
    [self.radialController addButtonClickedEvent:^(WUIRadialController* controller, WUIRadialControllerButtonClickedEventArgs* args)
     {
         [weakSelf.switchControl setOn:!(weakSelf.switchControl.on) animated:YES];
     }];
  }

You can now build and run your application, select the new menu item, and click on the radial controller to see the switch toggle.

Adding a Handler for Rotation Input

In this section, you will add a handler for rotation input that will move the application slider control if the radial controller is rotated when the new tool you added to the menu is selected. Taking a look at the WindowsUIInput.h header, you’ll see that you need the addRotationChangedEvent: method:


  @interface WUIRadialController : RTObject
   [...]
   - (EventRegistrationToken)addRotationChangedEvent:(void(^)(WUIRadialController*, WUIRadialControllerRotationChangedEventArgs

As for the click event handler, simply call the method and update the slider value in the callback block:


  - (void)viewDidLoad {
    [...]

    __weak ViewController* weakSelf = self; // Ensures self will not be retained

    [...]

    // Add a handler for rotation input from the radial controller
    [self.radialController addRotationChangedEvent:^(WUIRadialController* controller, WUIRadialControllerRotationChangedEventArgs* args)
     {
         [weakSelf.slider setValue:(weakSelf.slider.value + ([args rotationDeltaInDegrees]/360.0f)) animated:YES];
     }];
  }

That’s it! Now build and run your application, select the new menu item and rotate the radial controller to see the slider value change.

Wrapping Up

Thanks for following along! You can download the complete Radial Control sample for the final project. Take a look at the following resources for more information:

Also, be sure to check out the other posts in our series:

The post Windows Bridge for iOS: Customizing the Surface Dial Experience appeared first on Building Apps for Windows.

Just released – Windows developer virtual machines – December 2016 build

$
0
0

We’re releasing the December 2016 edition of our evaluation and licensed Windows developer virtual machines (VM) on Windows Dev Center. The VMs come in Hyper-V, Parallels, VirtualBox and VMWare flavors.  The evaluation version will expire on 04/08/17.

Evaluation VM contain:

Licensed VM contain:

If you don’t currently have a Windows 10 Pro license, you can get one from the Microsoft Store. If you just want to try out Windows 10 and UWP, use the free evaluation version of the VMs. The evaluation copies will expire after a pre-determined amount of time.

The Azure portal also has virtual machines you can spin up with the Windows Developer tooling installed as well!

If you have feedback on the VMs, please provide it over at the Windows Developer Feedback UserVoice site.

The post Just released – Windows developer virtual machines – December 2016 build appeared first on Building Apps for Windows.

We Want You (to help us improve our blog)

$
0
0

Developers,

First of all, we can’t thank you enough for reading our blog. We put a lot of time and care into managing this site, and it means a lot that so many of you tune in regularly. That being said, we want to improve.

We want to make sure that we’re giving you more than just the best possible content. We want to give you all of the content that you want, too.

In order to make sure that every piece is something that you’ll want to read and share with your fellow developers, we need your input.

Do you like tutorials? Updates? Interviews? Jokes? All of it? None of it at all?

That’s exactly what we want to know. By learning more about the topics that interest you, we can tailor our content to your specific interests and hopefully help you become an even better developer. Our goal is to help you achieve your goals. And this survey is a good start to helping us help you.

Thank you in advance! We can’t wait to hear your feedback.

Ready to take the survey? Take it here: http://wndw.ms/bafw

The post We Want You (to help us improve our blog) appeared first on Building Apps for Windows.

ICYMI – AdDuplex, Windows Bridge for iOS, new Virtual Machine

$
0
0

It’s that time of the week, devs.

In case you missed our updates, here is an annotated list of the latest announcements coming from the Windows Developer team. We hope you enjoy them!

AdDuplex Monetization and Marketing

AdDuplex helps apps utilize app ad space before the app has reached a level of popularity that makes monetization efforts worthwhile. From there, AdDuplex can help devs continue managing, marketing and monetizing their apps.

Customize the Surface Dial

In this post, we explain how to customize the Surface Dial Experience for bridged UWP apps using Objective-C projections. It’s neat.

Virtual Machines Update

We’re releasing the December 2016 edition of our evaluation and licensed Windows developer virtual machines (VM) on Windows Dev Center. The VMs come in Hyper-V, Parallels, VirtualBox and VMWare flavors.  The evaluation version will expire on 04/08/17.

Other than that, have a great new year celebration! We’ll see you in 2017.

Download Visual Studio to get started.

The Windows team would love to hear your feedback.  Please keep the feedback coming using our Windows Developer UserVoice site. If you have a direct bug, please use the Windows Feedback tool built directly into Windows 10.

The post ICYMI – AdDuplex, Windows Bridge for iOS, new Virtual Machine appeared first on Building Apps for Windows.

Exploring the Tessel 2 IoT and robotics development board

$
0
0

13841-01I'm still on vacation and still on the mend from surgery. I'm continuing to play around with IoT devices on my staycation. Last week I looked at these devices:

Today I'm messing with the Tessel 2. You can buy it from SparkFun for the next few weeks for US$40. The  Tessel is pretty cool as a tiny device because it includes WiFi on the board as well as two USB ports AND on-board Ethernet. It includes a two custom "module" ports where you can pop in 10-pin modules like Accelerometers, Climate sensors, IR and more. There's also community-created Tessel modules for things like Color Sensing and Motion.

Tessel is programmable in JavaScript and runs Node. Here's the tech specs:

  • 580MHz Mediatek MT7620n
  • Linux built on OpenWRT
  • 802.11bgn WiFi
  • WEP, WPA, WPA2-PSK, WPA2-Enterprise
  • 64MB DDR2 RAM
  • 32MB Flash
  • 16 pins GPIO, 7 of which support analog in
  • 2 USB 2.0 ports with per-port power switching

Tessel isn't a company, it's a open source project! They are on Twitter at @tesselproject and on GitHub here https://github.com/tessel.

NOTE: Some users - including me - have had issues with some Windows machines not recognizing the Tessel 2 over USB. I spent some time exploring this thread on their support site and had to update its firmware but I haven't had issues since.

Once you've plugged your Tessel in, you talk to it with their node based "t2" command line:

>t2 list
INFO Searching for nearby Tessels...
USB Tessel-02A3226BCFA3
LAN Tessel-02A3226BCFA3

It's built on OpenWRT and you can even SSH into it if you want. I haven't needed to though as I just want to write JavaScript and push  projects to it. It's nice to know that you CAN get to the low-level stuff I you need to, though.

For example, here's a basic "blink an LED" bit of code:

// Import the interface to Tessel hardware
var tessel = require('tessel');
// Turn one of the LEDs on to start.
tessel.led[2].on();
// Blink!
setInterval(function () {
  tessel.led[2].toggle();
  tessel.led[3].toggle();
}, 600);
console.log("I'm blinking! (Press CTRL + C to stop)");

The programming model is very familiar, and they've abstracted away the complexities of most of the hardware. Here's a GPS example:

var tessel = require('tessel');
var gpsLib = require('gps-a2235h');

var gps = gpsLib.use(tessel.port['A']);

// Wait until the module is connected
gps.on('ready', function () {
console.log('GPS module powered and ready. Waiting for satellites...');
// Emit coordinates when we get a coordinate fix
gps.on('coordinates', function (coords) {
console.log('Lat:', coords.lat, '\tLon:', coords.lon, '\tTimestamp:', coords.timestamp);
});

// Emit altitude when we get an altitude fix
gps.on('altitude', function (alt) {
console.log('Got an altitude of', alt.alt, 'meters (timestamp: ' + alt.timestamp + ')');
});

// Emitted when we have information about a fix on satellites
gps.on('fix', function (data) {
console.log(data.numSat, 'fixed.');
});

gps.on('dropped', function(){
// we dropped the gps signal
console.log("gps signal dropped");
});
});

gps.on('error', function(err){
console.log("got this error", err);
});

Of course, since it's using node and it has great Wifi or wired, the Tessel can also be a web server! Here we return the image from a USB camera.

var av = require('tessel-av');
var os = require('os');
var http = require('http');
var port = 8000;
var camera = new av.Camera();

http.createServer((request, response) => {
response.writeHead(200, { 'Content-Type': 'image/jpg' });

camera.capture().pipe(response);

}).listen(port, () => console.log(`http://${os.hostname()}.local:${port}`));

I'll make a Hello World webserver:

var tessel = require('tessel');
var http = require('http');
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello from Tessel!\n");
});
server.listen(8080);
console.log("Server running at http://192.168.1.101:8080/");

Then push the code to the Tessel like this:

>t2 push index.js
INFO Looking for your Tessel...
INFO Connected to Tessel-02A3226BCFA3.
INFO Building project.
INFO Writing project to Flash on Tessel-02A3226BCFA3 (3.072 kB)...
INFO Deployed.
INFO Your Tessel may now be untethered.
INFO The application will run whenever Tessel boots up.
INFO To remove this application, use "t2 erase".
INFO Running index.js...

Where is my Tessel on my network?

>t2 wifi
INFO Looking for your Tessel...
INFO Connected to Tessel-02A3226BCFA3.
INFO Connected to "HANSELMAN"
INFO IP Address: 192.168.0.147
INFO Signal Strength: (33/70)
INFO Bitrate: 29mbps

Now I'll hit the webserver and there it is!

image

There's a lot of cool community work happening around Tessel.  You can get involved with the Tessel community if you're interested:

  • Join us on Slack— Collaboration and real time discussions (Recommended! - ask your questions here).
  • Tessel Forums— General discussion and support by the Tessel community.
  • tessel.hackster.io— Community-submitted projects made with Tessel.
  • tessel.io/community— Join a Tessel meetup near you! Meetups happen around the world and are the easiest way to play with hardware in person.
  • #tessel on Freenode— IRC channel for development questions and live help.
  • Stack Overflow— Technical questions about using Tessel

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



© 2016 Scott Hanselman. All rights reserved.
     

The week in .NET – On .NET with Steve Smith, Jint

$
0
0

To read last week’s post, see The week in .NET – .NET Core triage on On .NET, ShareX. Next week, the post will be a little late like this week.

On .NET

Last week, I published a short interview with Steve Smith that was shot during the MVP Summit. We talked about ASP.NET Core and its documentation, that Steve has been contributing to, about his consulting activity, and about his Kickstarter-funded software craftsmanship calendar.

This week, I’ll publish another MVP Summit short interview.

Package of the week: Jint

Jint is a Javascript interpreter for .NET which provides full ECMA 5.1 compliance (6.0 work is underway), and can run on .NET Framework 4.5 and .NET Standard 1.3. It’s an ideal solution to provide scripting abilities to a .NET application. RavenDB uses it to perform small transformations on document fragments, for instance. It’s also commonly used as a scripting engine by games.

Running JavaScript code with Jint is as simple as spinning up an interpreter, and handing it the objects and parameters it’s allowed to interact with:

Interoperability in Jint works both ways, with simple translations between both type systems that even include generics support:

.NET

ASP.NET

F#

Azure

Data

And this is it for this week!

Contribute to the week in .NET

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

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

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

Bing Helps You Reach New Year’s Health Goals

$
0
0
Happy New Year from the Bing team!
 
The Holiday season is over and many of us have made New Year’s resolutions.
 
Getting more exercise and eating healthy are two resolutions that often top the charts. Yet, like most resolutions, these newly formed goals are frequently broken after just one month. When asked, people cite lack of time for hitting the gym or cooking a healthy meal, lack of inspiration on what to cook, and that the weather makes it difficult to get outside and move.    
 
To help overcome these challenges, the Bing team created a set of search experiences that would make it easier for our users to meet their health and fitness resolutions.
 
Fitness & Exercise
 
Are you are intimidated by the gym, or have little time to spare for exercise? Already going to a gym, but not sure if you should get a personal trainer? Bing makes it easier for you to find exercise videos that fit your lifestyle so you can get moving from the comfort of your home and at your own pace and preferred level.
 
Search for 'workouts' or 'exercises' and you will find a broad option of exercise videos that you can navigate to on the web or further refine your search results based on your preferences.
 
For example, if you are looking for strength-building exercises, use the filter above the carousel to narrow your results. Refine the results further based on your gender, difficulty level, target area (arms, back, legs, etc.), focus such as cardio, flexibility, balance, or the type of equipment that you have at home (weights, Pilates ball, or even a chair).


Depending on what your favorite workout is, you can also search for 'yoga exercises' or 'Pilates exercises' and narrow-down your results by difficulty level, target area, or focus.

 
If you select a particular yoga pose, for example, you may be able to find a video of how to perform the pose, along with step-by-step instructions.
 


 
Eating Healthy
 
A large part of your health is related to what you eat, so we’ve made it easy for Bing app users to find healthy recipes and nutrition information. 
 
You can search based on your preferences or needs, for example 'low fat recipes' or ‘low fat stew recipes’. Once you find and click on a recipe, click on the ‘Nutrients’ tab to get a preview of information, including calories, carbs, fat, and more. And you can go to the source for all the information.


You can also quickly get information regarding nutrition by searching terms such as 'foods rich in iron' or 'foods high in calcium'.


 

You can also check the number of calories in a serving or measuring units for many foods. Let’s say that you are cooking and want to substitute quinoa with couscous but want to know the calorie difference between the two. Just type in Bing 'calories in one cup of quinoa' and 'calories in one cup of couscous' and compare the results.





The food search experiences are even richer with the Bing app allowing you to glimpse over preparation times and the calorie counts of the most popular recipes and quickly finding something that suits your taste.

  
 
To make sure you have access to this great food information on the go, download the Bing app.
 
We hope you have a great 2017, whatever your goals are, and hope Bing can be a part of your journey. If you have ideas that would help you throughout the year, go to Bing Listens.
 
Happy New Year,
The Bing Team
 

Welcome to 2017

$
0
0

It is the start of the year and my team and I are traveling to CES today in Las Vegas. CES has transitioned in recent years from an electronics show to a broader meeting of technologists. This makes sense as software eats the world, developers take on an increasingly more important role in every company since every industry is in the process of being transformed and/or disrupted. Faster processors, seemingly limitless storage and ubiquitous bandwidth has created the perfect ingredients for the technology wave that we are now enjoying. When we meet with developers and partners this week, we will be discussing the next wave of innovation that will be built on today’s technology trends. These include big data, AI, bots, AR/VR, 3D and devices.

In thinking through the conversations that I believe will occur across CES. A talk I gave recently at DevIntersection in October of 2016 could be a fun primer for some of the discussions that will take place and technologies that will be on display this week in Las Vegas. Since many of you will be thinking about your technology priorities in 2017 I decide to share the video below.

This is not an exhaustive list but is a good start. As exciting as 2016 has been for technology, the future looks to be even brighter.

Cheers,
Guggs
@stevenguggs

 

The week in .NET – On .NET with Glenn Versweyveld, Protobuf.NET, Arizona Sunshine

$
0
0

To read last week’s post, see The week in .NET – On .NET with Steve Smith, Jint, Blue Effect.

On .NET

Last week, I published another short interview from the MVP Summit, this time with Glenn Versweyveld about Kliva, his Strava client for Windows:

This week, I’ll publish the last of our MVP Summit interviews, in which Reed Copsey, Jr. told me about the F# Software Foundation and its new programs. Next week, we’ll resume our regular shows.

Package of the week: Protobuf.NET

Protocol Buffers, or Protobufs for short, are a serialization format invented by Google, that is popular for its performance and simplicity. Google’s C# library generates C# code from a Protobuf specification. Protobuf.NET takes a different approach, that is arguably more idiomatic, and closer to existing .NET serializers such as DataContractSerializer, by starting from C# code, using attributes to specify contracts.

The serialization and deserialization APIs are then very simple:

Game of the week: Arizona Sunshine

Arizona Sunshine is a post-apocalypse first-person shooter designed for virtual reality. Strap on your headset and jump into a zombie invested world, exploring freely, scavenging and battling flesh eating undead who need to be put back into their graves! Arizona Sunshine features over 25 different weapons that operate with real-life movements, multiple environments for exploration, a full-size single player campaign and co-op multiplayer.

Arizona Sunshine

Arizona Sunshine was created by Vertigo Games and Jaywalkers Interactive using C# and Unity. It is available on Steam for the HTC Vive and Oculus Rift.

User group meeting of the week: HoloLens mixed reality experiences in Burlington, MA

The New England Microsoft Developers user group holds a meeting tonight, Thursday, January 5 in Burlington, MA, where Gavin Bauman will show you how to build mixed reality experiences with HoloLens.

.NET

ASP.NET

F#

F# contributions: 118 Pull Requests from 17 contributors, 13 of which are community members.

New F# Language Proposals:

Check out the F# Advent Calendar for loads of great F# blog posts for the month of December.

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

Xamarin

Azure

Games

And this is it for this week!

Contribute to the week in .NET

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

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

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

Deprecation of the Team Rooms in Team Services and TFS

$
0
0

Modern development teams heavily depend on collaboration. People want (and need) a place to monitor activity (notifications) and talk about it (chat). A few years back, we recognized this trend and set out to build the Team Room to support these scenarios. Since that time, we have seen more solutions to collaborate emerge in the market. Most notably, the rise of Slack. And more recently, the announcement of Microsoft Teams.

With so many good solutions available that integrate well with TFS and Team Services, we have made a decision to deprecate our Team Room feature from both TFS and Team Services.

Timeline for Deprecation

Please find below the timeline for deprecation for both TFS and Team Services.

deprecation-message

Team Services

If you are working in Team Services, you will see a new yellow banner appear in early January that communicates our plan. Later this year, we plan to turn off the Team Room feature completely.

TFS

If you are using TFS installed on-premises, the announcement banner will appear when you install TFS 2017 Update 1. The Team Room will be removed from the product with the next major version of TFS.

Alternatives

The Team room is used both for a notification hub as well as for chat. TFS and Team Services already integrate with many other collaboration products including Microsoft Teams, Slack, HipChat, Campfire and Flowdock. You can also use Zapier to create your own integrations, or get very granular control over the notifications that show up.
Which one is the best solution for you is mostly dependent if one of these tools are already in use in your organization, and personal preference.

Another alternative is to install the Activity Feed by Dave Smits. It allows you to add a widget to the team’s dashboard to show the activity in the product.

If you have any questions or feedback, feel free to comment on this blog post or send email to teamroom_feedback@microsoft.com.

Teaching coding from the Metal Up or from the Glass Back?

$
0
0

* Stock photo by WOCInTech Chat used under CC

Maria on my team and I have been pairing (working in code and stuff together) occasionally in order to improve our coding and tech skills. We all have gaps and it's a good idea to go over the "digital fundamentals" every once in a way to make sure you've got things straight. (Follow up post on this topic tomorrow.)

As we were white boarding and learning and alternating teaching each other (the best way to make sure you know a topic is to teach it to another person) I was getting the impression that, well, we weren't feeling each other's style.

Now, before we get started, yes, this is a "there's two kinds of people in this world" post. But this isn't age, background, or gender related from what I can tell. I just think folks are wired a certain way.  Yes, this a post about generalities.

Here's the idea. Just like there are kinesthetic learners and auditory learners and people who learn by repetition, in the computer world I think that some folks learn from the metal up and some folks learn from the glass back.

Learning from Metal Up

Computer Science instruction starts from the metal, most often. The computer's silicon is the metal. You start there and move up. You learn about CPUs, registers, you may learn Assembly or C, then move your way up over the years to a higher level language like Python or Java. Only then will you think about Web APIs and JSON.

You don't learn anything about user interaction or user empathy. You don't learn about shipping updates or test driven development. You learn about algorithms and Turing. You build compilers and abstract syntax trees and frankly, you don't build anything useful from a human perspective. I wrote a file system driver in Minix. I created new languages and built parsers and lexers.

  • When your type cnn.com and press enter you can pretty much tell you from the address bar down to electrons what happens. AND I LOVE IT.
  • Your feel like you own the whole stack and you understand computers like your mechanic friends understand internal combustion engines.
  • You'll open the hood of a car and look around before you drive it.
  • You'll open up a decompiler and start poking around to learn.
  • When you learn something new, you want to open it up and see what makes it tick. You want to see how it relates to what you already know.
  • If you need to understand the implementation details then an abstraction is leaking.
  • You know you will be successful because you can have a FEEL for the whole system from the computer science perspective.

Are you this person? Were you wired this way or did you learn it? If you teach this way AND it lines up with how your students learn, everyone will be successful.

Learning from the Glass Back

Learning to code instruction starts from the monitor, most often. Or even the user's eyeballs. What will they experience? Let's start with a web page and move deeper towards the backend from there.

You draw user interfaces and talk about user stories and what it looks like on the screen. You know the CPU is there and how it works but CPU internals don't light you up. If you wanted to learn more you know it's out there on YouTube or Wikipedia. But right now you want to build an application for PEOPLE an the nuts and bolts are less important. 

  • When this person types cnn.com and presses enter they know what to expect and the intermediate steps are an implementation detail.
  • You feel like you own the whole experience and you understand people and what they want from the computer.
  • You want to drive a car around a while and get a feel for it before you pop the hood.
  • You'll open F12 tools and start poking around to learn.
  • When you learn something new, you want to see examples of how it's used in the real world so you can build upon them.
  • If you need to understand the implementation details then someone in another department didn't do their job.
  • You know you will be successful because you can have a FEEL for the whole system from the user's perspective.

Are you this person? Were you wired this way or did you learn it? If you teach this way AND it lines up with how your students learn, everyone will be successful.

    Conclusion

    Everyone is different and everyone learns differently. When teaching folks to code you need to be aware of not only their goals, but also their learning style. Be ware of their classical learning style AND the way they think about computers and technology.

    My personal internal bias sometimes has me asking "HOW DO YOU NOT WANT TO KNOW ABOUT THE TOASTER INTERNALS?!?!" But that not only doesn't ship the product, it minimizes the way that others learn and what their educational goals are.

    I want to take apart the toaster. That's OK. But someone else is more interested in getting the toast to make a BLT. And that's OK.

    * Stock photo by WOCInTech Chat used under CC



    © 2016 Scott Hanselman. All rights reserved.
         

    VS Team Services Update – Jan 6

    $
    0
    0

    Next week we will be rolling out our sprint 110 and 111 updated (we didn’t do a 110 deployment due to the holidays).  You can check out the release notes for details.  Please bear with us – these changes are going to roll out a bit slower than usual.  As I write this, we are waiting for a major snow storm to hit North Carolina and we are expecting a pretty interrupted work schedule into early next week.  As such most people probably won’t have access to these changes until mid next week (~Jan 11th).

    When you do get them, you’ll find there’s quite a lot of new stuff.  The thing I’m most excited to hear your feedback about is all the UX changes we’ve been making to make Team Services more personal and more approachable – the new account level experience and the new project home page and associated navigation changes, especially.  Please check it out and give us your feedback.

    We’ve also implemented a consistent way for you to learn about and enable the various preview features that we enable.  Particularly with the bigger UX changes we’ve been making, we’re increasingly introducing them as “opt-in” changes so we can collect feedback and refine them before we roll them out broadly.  We hope it also gives you some opportunity to decide when is a convenient time to absorb the changes.  This release introduces 2 previews – one for the account experience and one for some notifications changes.  We’ve got more previews like that coming in the next few sprints.

    Check it out and let us know what you think!

    Brian


    ICYMI – What happened over vacation?

    $
    0
    0

    We hope everyone had a great vacation and a very happy New Year!

    We’re excited to be back and while we have a few exciting updates on the way, here are a few things that you might have missed.

    Patterns & Controls Tutorials

    Fly out menus. Dialogue boxes. Buttons. Check, check and check. Learn how to add all of these controls and patterns to your UWP apps, and spruce up your UI for 2017.

    Tell us what you want to see on our blog!

    Our blog team wants to create the content that you want to read. Sounds simple, right? Do you want more tutorials? More code samples? Guest blogs? Whatever you want more of, let us know. We’ll do our best to use your feedback to inform our future blog content.

    New Ch9 Show on Gaming

    Don’t miss Stacey Haffner, our very own .NET Program Manager, in her new Ch9 show all about gaming and UWP game development.

    Typescript Tutorial for C# Developers

    Jesse Liberty has a new video tutorial about Typescript for C# devs.

    He says that, “TypeScript brings object-oriented programming to JavaScript, giving developers a scalable, feature-rich language that compiles into super clean code. While TypeScript is traditionally taught from the perspective of JavaScript, C# is a great entry point, since it features some of the same constructs, abstractions and syntax.”

    Check it out below.

    The best automated e-mail response of the break:

    And that’s it! Have a great weekend and we’ll see you next week.

    Download Visual Studio to get started.

    The Windows team would love to hear your feedback. Please keep the feedback coming using our Windows Developer UserVoice site. If you have a direct bug, please use the Windows Feedback tool built directly into Windows 10.

    The post ICYMI – What happened over vacation? appeared first on Building Apps for Windows.

    New Year, New PR Goodies

    $
    0
    0

    In our first release of the new year, we’ve included a lot of great pull request features.  Let’s take a lap around them to see how they can help improve your workflow.

    My Pull Requests

    One of the big features in the latest release is the new, personalized account page, which includes a new “My Pull Requests” view.  The experience is just like the existing project scoped PR view, but provides a single place to see all of your PRs, in all projects and repos in the account.  For developers working in multiple projects and/or repos, this view makes it significantly easier to keep track of all of your PRs.

    The new My Pull Requests hub shows your PRs across all repos and projects.

    The next feature coming to the My PRs view is the addition of the PRs assigned to the teams that you’re a member of – a feature we plan to make available in the next release.

    Highlight updated PRs

    In the My PRs view (and in the existing PR hub), you’ll notice another new feature – highlights about what’s new in your PRs.  At a glance, you can see which PRs have updates, as well as what’s changed – whether it’s a new comment, votes from reviewers, or newly pushed changes.

    See what is changing in your pull requests. New comments, new votes, new code changes.

    Once you open a PR with updates, the Overview will highlight the changes that have occurred since you last viewed the PR.  In the example below, you can see the new vote from Mateo, and the update to the comment on Program.cs.

    The pull request overview highlights the updates since your last visit.

    View diffs of the latest code changes

    When a PR has new code changes since you last viewed it, the overview will provide a link to see the diff between the latest changes and the code as you last saw it.

    When a pull request has code changes, the Overview shows a link to view the diffs since you last saw the code.

    Clicking on the link will take you to the Files view where you can see how the code has changed while you’ve been away.  In the screenshot below, notice the “Comparing 6 to 8”, which indicates that this is a diff between pull request updates.  The list of changed files and the code diffs are scoped to just those files with changes since you’ve last viewed the PR.  This feature is really useful to see how the author has responded comments you’ve left on a PR.

    View the code diffs between updates of a pull request.

    Email notifications

    Staying up to date on all of your PRs can be tough – email notifications can make that easier, especially when they’re automatically configured for you.  In the latest release, we have a preview of a new “out-of-the-box notifications” feature, which includes notifications for your PR changes.  This feature is great for ensuring that all of the reviewers on your PRs know that you’ve asked them to review your changes – and it will help you know when your input is needed by others.

    Currently, these default notifications only work for individual reviewers – teams and groups added to reviews won’t receive emails yet.  We know this is a painpoint, and we’re working hard to improve that in an upcoming release.  In the meantime, you might try configuring team notifications manually so PRs don’t fall through the cracks.

    Attachments

    One of the most frequently asked for PR features has been to allow images on the clipboard to be pasted into comments – screenshots of UI changes are number one scenario.  With the addition of attachments, we’re now able to support images pasted from the clipboard.

    Attaching a screenshot to a pull request comment.

    You can also attach other file types that are rendered as links in the comments.  Here’s an example of a Word doc being dragged into a comment.

    Drag files into the comment box to attach them to a comment.

    The next feature for attachments will be to allow files to be attached to the PR description when you’re creating the PR.  As a workaround, you can edit the description after the PR is created to add your screenshots and other attachments like test plans, specs, etc.

    Merge conflict details

    For PRs with conflicts, we’ve made it easier to identify which files have conflicts.  When you have a PR with conflicts, the list of conflicting files and the type of conflicts will be shown in the PR overview.

    Pull requests with conflicts show the list of conflicting files and the conflict types.

    Merge strategy policy

    Some teams care a lot about how their PRs should be merged into the target branch.  Some want to see the merge commits so they see the history of the intermediate commits, while others want a clean history graph and choose to squash.  Until now, the choice to merge or squash was a user option, and could be changed on each PR.  With the new merge strategy policy, teams can configure how PRs should be merged for each branch.

    Configure whether PRs must be merged or squashed.

    Exclude paths from required reviewer policies

    Teams using the required reviewers policy sometimes find that not all items in a given folder need review signoff from a specific team.  To accommodate this, we’ve enabled path exclusions when configuring policies.  Simply add a “!” prefix on the paths you want to exclude from the policy.  The example below shows how you might configure all files to require signoff from someone in the Contributors group, except for changes to the docs folder.

    Paths can be excluded from policies by prefixing with an exclamation point (!)

    The next few releases will contain more great PR features, so stay tuned.  And if there is something we’re missing, don’t hesitate to submit ideas on the Team Services UserVoice site.

    Happy coding!

    The week in .NET – On .NET with Reed Copsey, Jr., Orchard Harvest, Ammy, Concurrency Visualizer, Eco

    $
    0
    0

    To read last week’s post, see The week in .NET – On .NET with Glenn Versweyveld, Protobuf.NET, Arizona Sunshine.

    Starting this week, UWP links, which have been in the general .NET section until now, are getting their own section thanks to Michael Crump who graciously accepted to provide weekly contents along with Phillip Carter for F#, Stacey Haffner for gaming, and Dan Rigby for Xamarin.

    Orchard Harvest

    The Orchard CMS community will hold its yearly conference in New York City from February 21 to the 22. This week is the last one to benefit from early registration fees. I’ll be there myself, to give a talk about .NET Core and C# 7.

    On .NET

    Last week, Reed Copsey, Jr., executive director of the F# Software Foundation was on the show to speak about the Foundation’s mentoring and speaker programs:

    This week, we’ll speak with David Pine about building a magic mirror. The show is on Thursdays and begins at 10AM Pacific Time on Channel 9. We’ll take questions on Gitter, on the dotnet/home channel and on Twitter. Please use the #onnet tag. It’s OK to start sending us questions in advance if you can’t do it live during the show.

    Package of the week: Ammy

    XAML is a way to describe instances of components. It uses an XML dialect, which is not to the taste of everyone, and may not be the best for manual authoring. The same ideas that XAML implements can however perfectly well be implemented with other persistence formats.

    Ammy is one such format, that is inspired from JSON and Qt’s QML. It’s lightweight, expressive, and extensible.

    Tool of the week: Concurrency Visualizer

    Concurrency Visualizer is an invaluable extension to Visual Studio that helps you visualize multithreaded application performance. It can monitor processor and core utilization, threads, spot anti-patterns, and recommend best practices.

    Concurrency Visualizer

    Sergey Teplyakov has a great post this week on understanding different GC modes with Concurrency Visualizer.

    Game of the week: Eco

    Eco is a global survival game with a focus on ecology and collaboration. In Eco, players must team up to build a civilization and evolve it quick enough to destroy an incoming meteor before it takes out the planet, but not so quickly that it destroys the ecosystem and everyone along with it. Eco takes the typical survival genre and puts a unique spin on it by providing a fully simulated ecosystem, where every single action taken affects the countless species, even the humans. (If not properly balanced, it is possible to destroy the food source and cause a server-wide perma-death.) Players also establish and run the government by enacting laws, a criminal justice system to enforce the laws and the economy by selling goods and services.

    Eco

    Eco was created Strange Loop Games using C# and Unity for the client and ASP.NET and the .NET Framework for their website and server backend. It is currently in alpha for Windows, Mac, and Linux. Eco is also being piloted in serveral schools as a means to teach students about ecology, collaboration and cause and effect.

    User group meeting of the week: Serverless .NET Core app for the AWS IoT Button in San Diego, CA

    The λ# user group holds a meeting on Wednesday, January 18, at 6:00 PM in San Diego, CA where you’ll learn how to build a serverless .NET Core app for the AWS IoT Button.

    .NET

    ASP.NET

    F#

    New F# Language Proposal:

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

    Azure

    UWP

    Games

    And this is it for this week!

    Contribute to the week in .NET

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

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

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

    What .NET Developers ought to know to start in 2017

    $
    0
    0

    .NET ComponentsMany many years ago I wrote a blog post about what .NET Developers ought to know. Unfortunately what was just a list of questions was abused by recruiters and others who used it as a harsh litmus test.

    There's a lot going on in the .NET space so I though it would be nice to update with a gentler list that could be used as a study guide and glossary. Jon Galloway and I sat down and put together this list of terms and resources.

    Your first reaction might be "wow that's a lot of stuff, .NET sucks!" Most platforms have similar glossaries or barriers to entry. There's TLAs (three letter acronyms) in every language and computer ecosystems. Don't get overwhelmed, start with Need To Know and move slowly forward. Also, remember YOU decide when you want to draw the line. You don't need to know everything. Just know that every layer and label has something underneath it and the whatever program you're dealing with may be in a level you have yet to dig into.

    Draw a line under the stuff you need to know. Know that, and know you can look the other stuff up.  Some of us want the details – the internals. Others don't. You may learn from the Metal Up or from the Glass Back. Know your style, and revel in it.

    First, you can start learning .NET and C# online at https://dot.net. You can learn F# online here http://www.tryfsharp.org. Both sites let you write code without downloading anything. You just work in your browser.

    When you're ready, get .NET Core and Visual Studio Code at https://dot.net and start reading! 

    Need To Know

    • What's .NET? .NET has some number of key components. We'll start with runtimes and languages.
    • Here are the three main runtimes:
      • .NET Framework - The .NET framework helps you create mobile, desktop, and web applications that run on Windows PCs, devices and servers.
      • .NET Core - .NET Core gives you a fast and modular platform for creating server applications that run on Windows, Linux and Mac.
      • Mono for Xamarin - Xamarin brings .NET to iOS and Android, reusing skills and code while getting access to the native APIs and performance. Mono is an open source .NET that was created before Xamarin and Microsoft joined together. Mono will support the .NET Standard as another great .NET runtime that is open source and flexible. You'll also find Mono in the Unity game development environment.
    • Here are the main languages:
      • C# is simple, powerful, type-safe, and object-oriented while retaining the expressiveness and elegance of C-style languages. Anyone familiar with C and similar languages will find few problems in adapting to C#. Check out the C# Guide to learn more about C# or try it in your browser at https://dot.net
      • F# is a cross-platform, functional-first programming language that also supports traditional object-oriented and imperative programming. Check out the F# Guide to learn more about F# or try it in your browser at http://www.tryfsharp.org 
      • Visual Basic is an easy language to learn that you can use to build a variety of applications that run on .NET. I started with VB many years ago.
    • Where do I start?
    • After runtimes and languages, there's platforms and frameworks.
      • Frameworks define the APIs you can use. There's the .NET 4.6 Framework, the .NET Standard, etc. Sometimes you'll refer to them by name, or in code and configuration files as a TFM (see below)
      • Platform (in the context of .NET) - Windows, Linux, Mac, Android, iOS, etc. This also includes Bitness, so x86 Windows is not x64 Windows. Each Linux distro is its own platform today as well.
    • TFMs (Target Framework Moniker) - A moniker (string) that lets you refer to target framework + version combinations. For example, net462 (.NET 4.6.2), net35 (.NET 3.5), uap (Universal Windows Platform). For more information, see this blog post.
    • NuGet - NuGet is the package manager for the Microsoft development platform including .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers.
    • What's an Assembly? - Assemblies are the building blocks of .NET Full Framework applications; they form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions. In .NET Core, the building blocks are NuGet packages that contain assemblies PLUS additional metadata
    • .NET Platform Standard or "netstandard" - The .NET Platform Standard simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others.
    • .NET Standard Library - The .NET Standard Library is a formal specification of .NET APIs that are intended to be available on all .NET runtimes.
    • .NET Framework vs. .NET Core: Similarities and Differences

    Should Know

      • CLR– The Common Language Runtime (CLR), the virtual machine component of Microsoft's .NET framework, manages the execution of .NET programs. A process known as just-in-time compilation converts compiled code into machine instructions which the computer's CPU then executes.
      • CoreCLR - .NET runtime, used by .NET Core.
      • Mono - .NET runtime, used by Xamarin and others.
      • CoreFX - .NET class libraries, used by .NET Core and to a degree by Mono via source sharing.
      • Roslyn - C# and Visual Basic compilers, used by most .NET platforms and tools. Exposes APIs for reading, writing and analyzing source code.
      • GC - .NET uses garbage collection to provide automatic memory management for programs. The GC operates on a lazy approach to memory management, preferring application throughput to the immediate collection of memory. To learn more about the .NET GC, check out Fundamentals of garbage collection (GC).
      • "Managed Code" - Managed code is just that: code whose execution is managed by a runtime like the CLR.
      • IL– Intermediate Language is the product of compilation of code written in high-level .NET languages. C# is Apples, IL is Apple Sauce, and the JIT and CLR makes Apple Juice. ;)
      • JIT – Just in Time Compiler. Takes IL and compiles it in preparation for running as native code.
      • Where is  .NET on disk? .NET Framework is at C:\Windows\Microsoft.NET and .NET Core is at C:\Program Files\dotnet. .NET Core can also be bundled with an application and live under that applications' directory as a self-contained application.
      • Shared Framework vs. Self Contained Apps - .NET Core can use a shared framework (shared by multiple apps on the same machine) or your app can be self-contained with its own copy.
      • Async and await– The Async and Await keywords generate IL that will free up a thread for long running (awaited) function calls (e.g. database queries or web service calls). This frees up system resources, so you aren't hogging memory, threads, etc. while you're waiting.
      • Portable Class Libraries -  These are "lowest common denominator" libraries that allow code sharing across platforms. Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms.
      • .NET Core is composed of the following parts:
        • A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.
        • A set of framework libraries, which provide primitive data types, app composition types and fundamental utilities.
        • A set of SDK tools and language compilers that enable the base developer experience, available in the .NET Core SDK.
        • The 'dotnet' app host, which is used to launch .NET Core apps. It selects the runtime and hosts the runtime, provides an assembly loading policy and launches the app. The same host is also used to launch SDK tools in much the same way.

      Nice To Know

        • GAC – The Global Assembly Cache is where the .NET full Framework on Windows stores shared libraries. You can list it out with "gacutil /list."  
        • Assembly Loading and Binding - In complex apps you can get into interesting scenarios around how Assemblies are loaded from disl
        • Profiling (memory usage, GC, etc.) - There's a lot of great tools you can use to measure – or profile – your C# and .NET Code. A lot of these tools are built into Visual Studio.
        • LINQ - Language Integrated Query is a higher order way to query objects and databases in a declarative way
        • Common Type System and Common Language Specification define how objects are used and passed around in a way that makes them work everywhere .NET works, interoperable. The CLS is a subset that the CTS builds on.
        • .NET Native - One day you'll be able to compile to native code rather than compiling to Intermediate Language.
        • .NET Roadmap - Here's what Microsoft is planning for .NET for 2017
        • "Modern" C# 7– C# itself has new features every year or so. The latest version is C# 7 and has lots of cool features work looking at.

        NOTE: Some text was taken from Wikipedia's respective articles on each topic, edited for brevity. Creative Commons Attribution-ShareAlike 3.0. Some text was taken directly from the excellent .NET docs. This post is a link blog and aggregate. Some of it is original thought, but much is not.


        Sponsor: Big thanks to Raygun! Join 40,000+ developers who monitor their apps with Raygun. Understand the root cause of errors, crashes and performance issues in your software applications. Installs in minutes, try it today!



        © 2016 Scott Hanselman. All rights reserved.
             

        Join us on Feb 8th for Windows Developer Day – Creators Update livestream

        $
        0
        0

        On February 8, we’ll be livestreaming a Windows Developer Day, which will outline what’s new for developers in the Windows 10 Creators Update. Whether you’re building for the web or UWP, the latest consumer app or line of business tool, there’s something in it for you. RSVP on the Windows Developer Day site to be the first to know as we share more details in the coming weeks.

        Join Kevin Gallo and the Windows engineering team, as they talk through how the latest advances in Windows 10 APIs and tooling enable you to build great things:

        • What’s new with Windows developer tooling: UWP tooling, BASH, Developer mode, and more
        • Learn about the latest XAML advancements, and how UWP helps you build Windows apps that are more personal and productive
        • Hear the developer story behind the recent announcements of Cortana skills and the new Windows mixed reality headsets
        • We’ll also close out the event with a live Q&A panel, where anyone can ask their questions

        For this Windows Developer Day, we’re partnering with Channel 9 to share it with the world. We’re also in the process of working with our Windows Developer MVP community to setup local viewing parties around the world, where Windows devs can get together, share tips and network with one another.

        Be sure to stay in the loop. Bookmark and RSVP on the Windows Developer Day site to be the first to know as we share more details in the coming weeks.

        The post Join us on Feb 8th for Windows Developer Day – Creators Update livestream appeared first on Building Apps for Windows.

        Viewing all 10804 articles
        Browse latest View live


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