Scott Hanselman

Download Visual Studio Express

June 19, '14 Comments [30] Posted in Tools
Sponsored By

http://downloadvisualstudio.com

visual-studio-2013-logoYou liked http://downloadsqlserverexpress.com, so, here's http://downloadvisualstudio.com because I like you so much.

Here are the direct links to all the Express SKUs for Visual Studio. They are all completely free.

NOTE: I wrote this post on my own, and not as a representative of Microsoft. That's their copyrighted logo over there on the right, and these downloads are all Microsoft's.

Visual Studio 2013 Express for Web

Visual Studio Express 2013 for Web provides the core tools for creating compelling, innovative web applications and services. This includes the ASP.NET editors for HTML5, CSS3, JavaScript, etc.

Visual Studio 2013 Express for Windows (Desktop)

Visual Studio Express 2013 for Windows Desktop enables the creation of desktop apps in C#, Visual Basic, and C++, and supports Windows Presentation Foundation (WPF), Windows Forms, and Win32.

Visual Studio 2013 Express for Windows (Store)

The tools include a full-featured code editor, a powerful debugger, a focused profiler, and rich language support that you can use to build apps that you write in HTML5/JavaScript, C++, C#, or Visual Basic. Visual Studio Express 2013 for Windows also includes tools for Windows Phone 8.0 development and Windows Phone emulators that you can use to test how your Windows Phone apps will run on different devices.

Microsoft Visual Studio Team Foundation Server Express 2013

Visual Studio Team Foundation Server Express 2013 is a source-code-control, project-management, and team-collaboration platform at the core of the Microsoft suite of Application Lifecycle Management (ALM) tools.

Hope this helps! All these links were dug out of http://www.visualstudio.com/downloads/download-visual-studio-vs with Fiddler.


Sponsor: A big thank you to my friends at Octopus Deploy. They are sponsoring the blog feed this week. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Download SQL Server Express

June 17, '14 Comments [56] Posted in Tools
Sponsored By

There's a funny blog post about how to download SQL Server Express from Long Zheng. It surprisingly how complex some companies make downloading things. I've always thought that a giant Download Now button is the best way, but perhaps that's just me?

Downloading SQL Server Express is unnecessarily hard, and it's made harder by the new Microsoft Download Center "download multiple files" interface that doesn't include descriptions or primary file recommendations. It should be a list of links, and you should be able to right click and Save As.

Introducing http://downloadsqlserverexpress.com 
(this short link goes directly to this post)

So, I've done the HTTP sniffing and work, and written this blog post in the hopes that it helps you (and I'm bookmarking it for myself, for the future).

Download SQL Server 2014 Express

Download SQL Server 2012 Express

Download SQL Server 2008 Express R2 SP2

You can get back here via downloadsqlserverexpress.com. Tell your friends.


Sponsor: A big thank you to my friends at Octopus Deploy. They are sponsoring the blog feed this week. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Thinktecture.IdentityManager as a replacement for the ASP.NET WebSite Administration tool

June 17, '14 Comments [10] Posted in ASP.NET | Open Source
Sponsored By

In ASP.NET 2005 (v2 timeframe) there was a web-based tool called ASP.NET Website Administration tool that folks could use the edit users and generally administer the ASP.NET Membership database. This useful tool was removed in 2012 and is still missed.

Since then, ASP.NET has introduced ASP.NET Identity and community member Brock Allen created IdentityReboot with some significant improvements and extensions. Brock Allen and Dominick Baier have gone even further and created Thinktecture IdentityManager. It's the beginnings of a nice bootstrapped replacement for the missing ASP.NET Website Administration Tool. It's nicely factored and supports both ASP.NET Identity and their alternative called MembershipReboot.

I cloned Thinktecture.IdentityManager and ran it under Visual Studio 2013.2. It's nice when projects just clone cleanly and build. You'd be surprised how often that's not the case.

Thinktecture.IdentityManager plugs into the ASP.NET middleware pipeline, so switching the sample host to use ASP.NET Identity rather than their alternative MembershipReboot was as easy as commenting out a line and adding a line as seen below.

public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseIdentityManager(new IdentityManagerConfiguration()
{
//UserManagerFactory = Thinktecture.IdentityManager.MembershipReboot.UserManagerFactory.Create
UserManagerFactory = Thinktecture.IdentityManager.AspNetIdentity.UserManagerFactory.Create
});
}
}

Just run it and you'll get a nice Bootstrapped interface for creating, editing, and deleting users from your Identity database.

Identity Manager

Here you can see those same users in the SQL database that ASP.NET Identity uses.

There's the users created in the identity database

The whole application is written as a Single Page Application with an ASP.NET Web API handling the backend with Angular.js on the frontend.. You could run this application as it's own site and lock it down, of course, or host it within your existing website at something like /admin.

Serving Embedded Assets

Unrelated to the core functionality of Thinktecture.IdentityManager, one cool piece of functionality worth noting is how they are storing the HTML, CSS and other resources as embedded resources inside the Thinktecture.IndeityManager.Core assembly. This is not something you'd necessarily want to do yourself, but considering that they've got a nice embedded "manager" that they'll want to plug into other websites easily without causing issues with file dependencies, it's quite clever.

Here's the static page controller:

public class PageController : ApiController
{
[Route("")]
[HttpGet]
public IHttpActionResult Index()
{
return new EmbeddedHtmlResult(Request, "Thinktecture.IdentityManager.Core.Assets.Templates.index.html");
}
}

Then later in EmbeddedHtmlResult:

public static HttpResponseMessage GetResponseMessage(HttpRequestMessage request, string name)
{
var root = request.GetRequestContext().VirtualPathRoot;
var html = AssetManager.LoadResourceString(name);
return new HttpResponseMessage()
{
Content = new StringContent(html, Encoding.UTF8, "text/html")
};
}

Then later, all the CSS and JS are handled by the ".UseFileServer()" extension from Microsoft.Owin.StaticFiles, and then Microsoft.Owin.FileSystems handles the mapping the whole of the /assets URI space over all the resources

app.UseFileServer(new FileServerOptions
{
RequestPath = new PathString("/assets"),
FileSystem = new EmbeddedResourceFileSystem(typeof(AppBuilderExtensions).Assembly, "Thinktecture.IdentityManager.Core.Assets")
});
app.UseFileServer(new FileServerOptions
{
RequestPath = new PathString("/assets/libs/fonts"),
FileSystem = new EmbeddedResourceFileSystem(typeof(AppBuilderExtensions).Assembly, "Thinktecture.IdentityManager.Core.Assets.Content.fonts")
});

It's nice and clean, and a cool reminder about what you can do with a nicely factored system and a decent middleware pipeline.

A bright future

If you've got a ASP.NET system and are looking for a flexible and simple web-based administration tool for your Identity system, you should totally check out Thinktecture.IdentityManager. It looks like the team is gearing up for the possible release of this project as NuGet, so may have that to look forward to as well!

Remember that when people create cool projects like this, they are often doing this as volunteers out of the kindness of their hearts. They are often looking for feedback and comments, sure, but also validation of their idea as well as help. Open source help can come in the form of Pull Requests, Bugs and Issues, Documentation, Build Servers, and more. Head over and "star" the GitHub Thinktecture.IdentityManager project, and check it out!

Related Links


Sponsor: A big thank you to my friends at Octopus Deploy. They are sponsoring the blog feed this week. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

UPDATED 2014: How to setup CrashPlan Cloud Backup on a Synology NAS running DSM 5.0

June 12, '14 Comments [31] Posted in Tools
Sponsored By

My backup planI still have a Synology 1511+ NAS and I still think it's lovely. I recommend Synology NAS's but I recommend ones with an Intel processor as I feel the ARM versions are underpowered. I run Plex on my Synology and while I've had a few small issues, I love it also.

Back in 2012 I wrote a post on How to set up CrashPlan Cloud Backup headless on a Synology NAS - Backup Strategies. If you are running a 4.x version of the Synology DSM software, read that post.

Since then however, Synology has upgraded it's main OS to "DSM 5.0" or greater and Java 7 can run on Synology. I've had some hassle getting my newly upgraded Synology running CrashPlan so here's a new writeup for DSM 5.0+ for 2014.

Remember, any good backup strategy follows the Backup Rule of Three.

  • 3 copies of anything you care about - Two isn't enough if it's important.
  • 2 different formats - Example: Dropbox+DVDs or Hard Drive+Memory Stick or CD+Crash Plan, or more
  • 1 off-site backup - If the house burns down, how will you get your memories back?

Step by Step: How to run CrashPlan on your Synology NAS with DSM 5.0

This gentleman at PCLoadLetter has prepared excellent packages that make it MUCH easier than before to get CrashPlan running on your Synology. However, his instructions assume a some technical ability and also require reading a LOT and visiting several pages within his site. It took me about an hour to really understand what was being said. Here's my simplified version of How To get CrashPlan on your Synology.

1. TURN ON THE "USER HOMES SERVICE" ON YOUR SYNOLOGY

Log in to your Synology from a web browser. Mine is http://server. Go to the Control Panel, then User, then User Home and click "Enable User Home Service." This will give the future "crashplan" user a "place to live."

Enable user home service

2. ADD HTTP://PACKAGES.PCLOADLETTER.CO.UK AS A NEW REPOSITORY IN THE SYNOLOGY PACKAGE MANAGER

On your Synology, from the web browser, go to the Package Center, then Settings, then Package Sources. Add http://packages.pcloadletter.co.uk as a new repository. I named it "PC Load Letter" but it doesn't matter.

image

3. ADD THE JAVA MANAGER

In the Package Manager, type Java, and install the Java Manager.

image

On your main computer (not the Synology) head over to www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html and download a "tar.gz" of Java. Get the right one for your system. I have an Intel x86 so I got the "i586" package.

Today (June 11th, 2014) I downloaded jdk-7u60-linux-i586.tar.gz but yours may have a newer number like "7u61." Now put that Java archive in a folder. Don't lose it.

Back on the Synology, go to the Java Manager and Install Java. From this dialog select the file you've just downloaded. It actually tells you all this on the dialog, too.

image

When you're done, Java Manager will look something like this.

image

4. INSTALL THE CRASHPLAN PACKAGE ON YOUR SYNOLOGY. STOP IT AND RESTART IT.

Staying in the Package Manager, go to Community, and search for Crash. Community is where "Other Sources" feeds into.

image

Once it's installed, wait a minute to two for it to calm down, then stop it, and start it again. It should look like this.

image

Click on View Log to confirm it's running.

image

Your log will have less stuff in it if you haven't configured CrashPlan from a client yet.

Remember this installation is *headless* so you'll need to connect to the Synology from a CrashPlan "client."

5. INSTALL THE CRASHPLAN CLIENT ON ONE OF YOUR MAIN COMPUTERS.

Go download and install the right CrashPlan client for you. After you've installed it, you'll need to POINT the client to your Synology.

You need to edit the "C:\Program Files\CrashPlan\conf\ui.properties" text file and put in the IP address of your Synology. My Synology is called "SERVER" so I opened a command prompt and typed "ping server" and was told its address is 192.168.1.18. I needed to run my notepad as administrator to edit this file.

    • NOTE: This is a Linefeeds only Linux text file so you'll want to use Notepad2 or something OTHER than Notepad so you don't corrupt this file. Make a copy.

Pointing ServiceHost to the right place

6. HOW DO YOU KNOW IT IS WORKING?

Run CrashPlan on your main computer to ensure it's successfully talking to your Synology.

  • You should see your Synology's name on the Settings Dialog
  • You should see CrashPlan Central in your Destinations if you have a CrashPlan subscription
  • You can select your files that exist on the Synology from the CrashPlan application on your main computer. Remember this CrashPlan client talks to the headless service running on your Synology.
  • You will likely have to sign into the CrashPlan client. When I did, even though I'd uninstalled and re-installed CrashPlan, it recognized I'd backed up before and it re-sync'ed over an hour. I didn't have to back everything up again!

The initial backup will likely take a LONG time so be patient - like for days or weeks. I am choosing not to backup super-large files like DVD backups, 60 gig VMs and other things. My #1 concern is family photos and personal files.

image

You can get CrashPlan+ and do one computer, or get CrashPlan+ Family and do up to 10 computers.

If I've made any mistakes here, do let me know in the comments and I'll update the post!

Related Links


Sponsor: A big welcome to my friends at Octopus Deploy. They are sponsoring the blog feed this week. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Easy accelerated 3D Games in a browser with JavaScript and WebGL using Three.js or Babylon.js

June 11, '14 Comments [12] Posted in Gaming | Javascript | Open Source
Sponsored By

Let's ignore that we haven't got a web-agreed-upon way to do just about anything, much less basic line-of-business apps with data-bound text boxes over data, and just revel in the fact that we can do hardware-accelerated 3D graphics in our browsers with WebGL. This works today in all the latest browsers.

I noticed this fantastic mini-game promoting Assassin's Creed over at http://race.assassinscreedpirates.com that uses WebGL via a library called Babylon.js. On my Windows machine it runs perfectly in IE11, Chrome 37, or Firefox 30. (Yes, in retrospec, the version numbering for browsers is getting out of hand.)

Some folks on Macs have reported issues with WebGL. Check out https://www.browserleaks.com/webgl for YOUR browser's capabilities.

This Pirate Ship game is really worth checking out and it's fun for the kids. You can also check out the Developer Teardown and learn how they built it.

3D Assassin's Creed Pirates in my browser

I wanted to get a better understanding of exactly how difficult it is (or easy!) to get in to WebGL in the browser. I found this article over at SitePoint by Joe Hewitson and started with some of his sample code where he compares two popular WebGL libraryes, three.js and babylon.js. The Assassin's Creed game here is written using Babylon.js.

Three.js seem to be  a general layer on top of WebJS, aiming to make scene creation and animation easy. Using Joe's sample (that I changed a little) along with a texture.gif, I was able to make this spinning 3D cube easily.

There's a live example running at http://hanselstorage.blob.core.windows.net/blog/WebGL.html you can see in your modern browser. Below is just a static image.

I would have animated it but that would have been a meg. ;)

Three.js is on the left and Babylon.js is on the right. It doesn't really matter given the static image, but one think you'll notice immediately if you run the live sample is that you can zoom in and out, pan, grab, and manipulate the babylon.js cube. I could have hooked up some events to the three.js cube, or perhaps added a physics engine like Physijs and made it interact with the world, I suppose. It struck me though, that this little example shows the difference in philosophy between the two. Babylon seems to be more of a game engine or a library that wants to help you make games so there's interactions, collision detection, and lighting included.

Three.js supports many renderers, cameras, and lighting. You can use all WebGL capabilities such as lens flares. It supports all the usual objects and geometries as well. Their examples are extensive with over 150 coding examples covering everything you'd want to know from fonts, models, textures, to sounds. There's even an in-browser Three.js editor.

Babylon includes a lot including a physics engine from cannon.js built in, full scene graph, offline mode, textures, special effects and post processes, many cameras including Oculus Rift (!) lots of meshes. Babylon.js even supports standard Gamepads via like the Xbox One controller natively via the Gamepad API spec.

Anyway, here is the cube on the right from Joe's code that I modified slightly, using babylon.js:

// Babylon.js 
var canvas = document.getElementById('babylonCanvas');
var engine = new BABYLON.Engine(canvas, true);
var sceneB = new BABYLON.Scene(engine);
var camera = new BABYLON.ArcRotateCamera("camera", 1, 0.8, 10, new BABYLON.Vector3(0, 0, 0), sceneB);

var light = new BABYLON.DirectionalLight("light", new BABYLON.Vector3(0, -1, 0), sceneB);
//light.diffuse = new BABYLON.Color3(1, 0, 0);
//light.specular = new BABYLON.Color3(1, 1, 1);

var box = BABYLON.Mesh.CreateBox("box", 3.0, sceneB);
var material = new BABYLON.StandardMaterial("texture", sceneB);
box.material = material;
material.diffuseTexture = new BABYLON.Texture("texture.gif", sceneB);

sceneB.activeCamera.attachControl(canvas);

engine.runRenderLoop(function () {
box.rotation.x += 0.005;
box.rotation.y += 0.01;
sceneB.render();
});

I also commented out the lighting but you can see how easy it is to add lighting to a scene if you like. In this case there was a diffuse red light along with a specular white.

With babylon.js I could change the size of the scene by changing the size of the canvas. With three.js the width and height are pulled in programmatically from the enclosing div.


Here is the near-same box created with three.js.

// Three.js 
var div = document.getElementById('three');
var height = div.offsetHeight;
var width = div.offsetWidth;

var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
div.appendChild(renderer.domElement);

var camera = new THREE.PerspectiveCamera(70, width / height, 1, 1000);
camera.position.z = 400;

var sceneT = new THREE.Scene();

var cube = new THREE.CubeGeometry(200, 200, 200);

var texture = THREE.ImageUtils.loadTexture('texture.gif');
texture.anisotropy = renderer.getMaxAnisotropy();

var material = new THREE.MeshBasicMaterial({ map: texture });

var mesh = new THREE.Mesh(cube, material);
sceneT.add(mesh);

animate();

function animate() {
requestAnimationFrame(animate);

mesh.rotation.x += 0.005;
mesh.rotation.y += 0.01;
renderer.render(sceneT, camera);
}

Both libraries have amazing Examples Galleries and you should check them out.

Also note that there's a contest running until June 20th, 2014 over at http://www.modern.ie/en-us/demos/assassinscreedpirates where you'll create your own shader within the browser and submit it for judging. Contestants must be over 16 years of age and from one of the following countries: United States of America, United Kingdom, France, Germany, Spain, or Australia. The contest starts here and the grand prize is an Assassin’s Creed Collector’s Black Chest Edition and an Xbox One.

Create your Shaders in the browser

Even if you don't win, do check out the in-browser shader editor. It's amazing.


Sponsor: A big welcome to my friends at Octopus Deploy. They are sponsoring the blog feed this week. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases of ASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.