Progressive .NET Tutorials 2015 and Recording Videos of My ASP.NET 5 Talks

Last Friday, I was at Progressive .NET Tutorials 2015 in London and I gave two talks on ASP.NET 5. Here are the recording videos and slides of my two ASP.NET 5 talks!
2015-07-07 21:45
Tugberk Ugurlu


Last Friday, I was at Progressive .NET Tutorials 2015 in London and I gave two talks on ASP.NET 5. The conference was really good, I had a chance to meet with new great people. One nice thing about this conference is that the sessions were recorded. You can check out all the recordings here. My two talks on ASP.NET 5 were also recorded:

ASP.NET 5: How to Get Your Cheese Back

Slides for this talk is also available under my Speakerdeck account:

Going Further with ASP.NET 5

Here are the links to several resources related to these talks:

Enjoy! :)

Slides of Introduction to Database Lifecycle Management Talk at /dev/summer 2015

Yesterday, I was at /dev/summer 2015, Cambridge and gave a talk on DLM (Database Lifecycle Management). I have uploaded the slides under my Speakerdeck account.
2015-06-28 11:57
Tugberk Ugurlu


Yesterday, I was at /dev/summer 2015, Cambridge. It was a really good event and I had a chance to attend a few talks on Go Language, Web Profiling and Open Source.

2015-06-27 16.36.26-1

2015-06-27 12.46.58

2015-06-27 11.40.33

I also gave a talk on DLM (Database Lifecycle Management), which is what we have been working at Redgate for a while to make it easy to adopt.

2015-06-27 16.31.18

I have uploaded the slides under my Speaker Deck account.

Also, here are the links I have at the end of the slides and a few more:

Upcoming Conferences That I am Speaking at

I have a few speaking activities lined up in upcoming weeks on ASP.NET 5 and DLM and I thought it would be good to share these with you all :)
2015-06-16 20:44
Tugberk Ugurlu


I have a few speaking activities lined up in upcoming weeks and I thought it would be good to share those with you all :) I am very excited about them as I don’t have much international speaking experience and these will be a really good learning opportunities for me, while having a chance to share the knowledge at the same time. As you can imagine, most of these talks are related to ASP.NET 5 which is the best thing that has happened to .NET Web stack if you ask me :) Here are all of them:

/dev/summer 2015, Cambridge (27th of June)

/dev/summer is of the great developer events in Cambridge and it happens twice a year. I was lucky to attend the /dev/winter 2015 this year and I am looking forward to /dev/summer 2015, too. I will be talking about DLM (Database Lifecycle Management) and I will try to set a clear understanding of the advantages of embracing DLM, where your process fits today and how you can apply the described patterns and practices. You can register for the conference and get your ticket here. Also, you can use the discount code of "Speakersfriend" which will give you a 30% discount. You can alternatively use this link to get this discount. You can view the full event schedule here.

image

Progressive .NET Tutorials 2015, London (3rd of July)

Progressive .NET Tutorials 2015 is a 3-days .NET developer conference in London and has a really good content from awesome speakers. I will be giving two talks on the last day of the event and both of them are about ASP.NET 5. The first one is titled as "ASP.NET 5: How to Get Your Cheese Back" which I will talk about the biggest, drastic changes in the upcoming version of ASP.NET but I will try to prove that these changes will make you smile. The next one is "Going Further with ASP.NET 5" which will be slides-free, dig-deep-into-the-bowels-of-this-new-runtime kind of talk. Check out the full schedule here and you can register for the event here.

image

That Conference 2015, Wisconsin Dells (12th of August)

I will also be speaking at That conference 2015 about ASP.NET 5: ASP.NET 5: How to Get Your Cheese Back. "Which conference? That Conference!" (obligatory That Conference joke :p) I am particularly excited for this one as it will be my first trip to US and I will make sure to whine about jet lag stuff on Twitter when I get there :) Jokes aside, you can see the conference schedule here and register for the conference here.

image

Thanks to these conferences, I am hoping to meet bunch of new and old frıends. Make sure to come and say hi if you are at one of the events :)

First Hours with Visual Studio Code on Mac and Windows

Today is one of those awesome days if you build stuff on .NET platform. They announced bunch of stuff during Build 2015 keynote and one of them is Visual Studio Code, a free and stripped down version of Visual Studio which works on Mac OS X, Linux and Windows. Let me give you my highlights in this short blog post :)
2015-04-29 21:15
Tugberk Ugurlu


Today is one of those awesome days if you are building stuff on .NET platform. Microsoft announced bunch of stuff at Build 2015 keynote a few hours ago and one of them is Visual Studio Code, a free and stripped down version of Visual Studio which works on Mac OS X, Linux and Windows. It leverages bunch of existing open source software like OmniSharp, Electron. Most of all, this was my #bldwin wish :)

First of all, you should definitely install Visual Studio Code and start checking the documentation which is very extensive. I followed those steps and as I am very excited about this new tool, I wanted to share my experience thus far which is not much but very promising.

First thing I noticed was the top notch support for ASP.NET 5. The documentation for ASP.NET 5 support is pretty good but some features are not highlighted there. For example, you are getting the IntelliSense for dependencies:

Ekran Resmi 2015-04-29 19.26.46

When you add a dependency, you get nice notification telling that you should restore:

Ekran Resmi 2015-04-29 19.59.55

Pretty nice! So, how would you restore? Hit ⇧⌘P to get the command pallet up and you can see the restore command there:

Ekran Resmi 2015-04-29 21.45.20

It will run the restore inside the terminal:

Ekran Resmi 2015-04-29 21.48.30

You can also invoke your commands defined inside the project.json:

Ekran Resmi 2015-04-29 20.09.09

Ekran Resmi 2015-04-29 20.10.14

Obviously, you can change the theme.

Ekran Resmi 2015-04-29 20.18.35

Writing C# code is also very slick! You currently don’t have all the nice refactoring features you have in full fledged Visual Studio but it’s still impressive:

Ekran Resmi 2015-04-29 20.19.57

Ekran Resmi 2015-04-29 20.22.43

We even have some advanced stuff like Peek Definition:

Ekran Resmi 2015-04-29 20.02.29

Check out the documentation for all coding editor features.

As mentioned Windows is also fully supported as you might guess :)

Screenshot 2015-04-29 20.35.16

Screenshot 2015-04-29 21.18.29

Screenshot 2015-04-29 21.23.36

I want to touch on the Git integration as well. I generally use Git bash and this won’t change for me but having the diff view inside the editor in a very nice way is priceless!

image

How about old/current .NET applications? I managed to get one up and running easily and managed to get the build working by defining a task for that:

{
	"version": "0.1.0",
	
	// The command is tsc.
	"command": "msbuild",

	// Show the output window only if unrecognized errors occur. 
	"showOutput": "silent",
	
	// Under windows use tsc.exe. This ensures we don't need a shell.
	"windows": {
		"command": "C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe"
	},
	
	// args is the HelloWorld program to compile.
	"args": []
}

image

I was expecting this to work without any further configurations but it could be just me not being able to get it working.

As said, it’s very early but I am sold for this editor! Also, this is a fantastic time to build products on .NET platform. I would like to thank all the people at Microsoft and open source community who are making our lives easier and enjoyable. I will leave you all now and enjoy my new toy! :O

Exciting Things About ASP.NET 5 Series: Build Only Dependencies

In this very exciting post, I would like to talk about build only dependencies whose code can be compiled into target project and the dependency won’t be shown as a dependency.
2015-04-28 07:48
Tugberk Ugurlu


Web development experience with .NET has never seen a drastic change like this since its birth day. Yes, I’m talking about ASP.NET 5 :) I have been putting my toes into this water for a while now and a few days ago, I started a new blog post series about ASP.NET 5 (with hopes that I will continue this time :)). To be more specific, I’m planning on writing about the things I am actually excited about this new cloud optimized (TM) runtime. Those things could be anything which will come from ASP.NET GitHub account: things I like about the development process, Visual Studio tooling experience for ASP.NET 5, bowels of .NET Execution Runtime, tiny little things about the frameworks like MVC, Identity, Entity Framework.

In this very exciting post, I would like to talk about build only dependencies whose code can be compiled into target project.

BIG ASS CAUTION! At the time of this writing, I am using DNX 1.0.0-beta5-11611 version. As things are moving really fast in this new world, it’s very likely that the things explained here will have been changed as you read this post. So, be aware of this and try to explore the things that are changed to figure out what are the corresponding new things.

Also, inside this post I am referencing a lot of things from ASP.NET GitHub repositories. In order to be sure that the links won’t break in the future, I’m actually referring them by getting permanent links to the files on GitHub. So, these links are actually referring the files from the latest commit at the time of this writing and they have a potential to be changed, too. Read the "Getting permanent links to files" post to figure what this actually is.

The Problem

From the start of NuGet, it has been a real pain to have source file dependencies. There are some examples of this like TaskHelpers.Sources. When you install this package, it will end up inside your codebase.

image

The nice thing about this type of source dependencies is that you don’t need to fight with DLL hell. You can have one version of this package and your consumer can have another version of it. As the source files you pull down from NuGet has no public members, there will be no problems whatsoever as the code is compiled into their assembly separately. However, there are several problems with the way we are getting them in:

  • I am committing this code into source control system which is weird.
  • How about updates? What happens if I make a change to that file?

So, it wasn’t that good of an approach we had there but ASP.NET 5 has a top notch solution this problem: build only dependencies.

Consuming Build Only Dependencies

These are the kind of dependencies that you can pull in and it will just be compiled into your stuff. As you can also guess, it won’t be shown as a dependency. Let’s see an example!

One of the packages that support this concept is Microsoft.Framework.CommandLineUtils package. You can pull this down as a build-only dependency by declaring it inside your project.json file as below:

{
    "version": "1.0.0-*",

    "dependencies": {
        "Microsoft.Framework.CommandLineUtils": { 
            "version": "1.0.0-beta5-11611", "type": "build" 
        }
    },

    // ...
}

Notice the type field there.  That indicates the type of the dependency. Let’s stop here and without doing anything else further, run dnu pack to get a NuGet package out. When we look at the manifest of the generated NuGet package, we won’t see any sign of the build dependency there:

image

Makes sense. Let’s peak inside the assembly now.

image

That’s what I expected to see. All the stuff distributed with that packages is compiled into my target assembly. As you can guess, I can use these stuff inside my project without any problems:

using Microsoft.Framework.Runtime.Common.CommandLine;

namespace AspNet5CommandLineSample
{
    public class Program
    {
        public void Main(string[] args)
        {
            var app = new CommandLineApplication();
        }
    }
}

You may ask that ASP.NET 5 applications can work without assemblies on disk. That’s true and at that point, this will end up being compiled into the target assembly in-memory.

If you look at what I committed to my source control system, it’s barely nothing which solves one of the biggest pains of source packages.

Generating Build Only Dependencies

Generating libraries which can be consumed as a build only dependency is also fairly simple but there are some little things which doesn’t make sense. Assuming I have a library called AspNet5Utils and it has the following internal type:

namespace AspNet5Utils
{
    internal static class StringExtensions
    {
        internal static string Suffix(this string value, string suffix)
        {
            return $"{value}-{suffix}";
        }
    }
}

If you want this type to end up as a build dependency, you need to declare this as shared inside the project.json file.

{
    "version": "1.0.0-*",

    "shared": "**/*.cs",

    "dependencies": {
    },

    // ...
}

Doing this will give a hint to dnu pack command to pack these types into the shared folder inside the NuGet package.

image

Notice that there is also an assembly generated there. Maybe there is a reason behind why this is there but as I don’t have any type which ends up inside an assembly, I would expect this to not have one at all. Indeed, if you decompile the assembly, you will see that nothing is there:

image

In order to consume this package, you don’t actually need to distribute this through NuGet if you only want to consume this inside the same solution. As the dependency consumption is unified in ASP.NET 5, this can easy be a project dependency as you would expect:

{
    "version": "1.0.0-*",

    "dependencies": {
        "AspNet5Utils": { "version": "", "type": "build" }
    },

    // ..
}

In my opinion, this is one of the many powerful and yet simple concepts that ASP.NET 5 has brought to us. Enjoy!

Tags