Scott Hanselman

Download SQL Server Express

June 17, '14 Comments [62] 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)

From SO, SQL Server 2017 Express Edition (English):

SQL Server 2016 with SP2 Express Edition (English):

SQL Server 2016 with SP1 Express Edition (English):

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 2017 Express

Download SQL Server Management Studio 17.3

Download SQL Server 2016 Express

*This release of SQL Server no longer bundles tools with SQL Server. Tools are a separate install.

Download SQL Server 2016 Management Studio (August 2017) - 17.2 

Download SQL Server Management Studio 17.2 Upgrade Package (upgrades 17.x to 17.2)

Download SQL Server 2016 Management Studio (June 2016 release)

*The installer works for both 32-bit and 64-bit machines and installs Management studio as well as command-line tools needed to manage SQL Server.

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 SherWeb

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

June 17, '14 Comments [13] 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 SherWeb

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

June 12, '14 Comments [57] 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!

UPDATE July 2015: If you are having any issues with upgrades and CrashPlan 4.3, there may be some manual work you'll need to do. http://chrisnelson.ca/2015/07/02/fixing-crashplan-4-3-0-on-synology/ 

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 SherWeb

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 SherWeb

How to use an Xbox One controller on your Windows PC

June 9, '14 Comments [18] Posted in Gaming
Sponsored By

B00CMQTUSS_XboxOne_Controller_F_TransBG_RGB_2013The Xbox One controller is fantastic. Even if you don't have an Xbox One, the controller now works on a Windows PC with a standard micro-USB cable. Any Steam and Windows game that supports standard XInput works great. I've played Tomb Raider and Bioshock Infinite and both worked wonderfully. Everything works smoothly and even vibration feedback is supported.

I've previously used the Xbox 360 Controller's "Wireless Receiver Adapter" for Windows to pair XBox 360 controllers. It also works great, but I frankly prefer a plug-in and remove model, rather than having another adapter.

Soon the drivers for the Xbox One controller will be available on Windows Update. That means you'll be able to just plugin the Xbox One controller into any PC and the drivers will just download.

Until then, you'll want to install one these drivers depending on your machine:

Once these drivers are installed, plugin the Xbox One Controller to any USB port. There's a micro-USB port on the top of the Xbox One so you can use a regular USB cable. I used the one from my Kindle because it's very long.

The controller shows up as a Gamepad in Windows and works with any game that supports a standard joystick. Here's  a screenshot from my PC:

image

Here's an animated gif of me moving the controller and seeing the result in the Properties Dialog. You can see it's got all 10 buttons, 3 axes and the POV hat.

If you've got a Xbox One controller, you should grab a micro-USB cable and get this set up today. If you're considering a new PC controller, I recommend this controller even if you don't have an Xbox One.

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 SherWeb

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