Community Update 2014-04-04– #bldwin Day 3, #aspconf on async with #aspnet, #nodejs and #WindowsAzure

 

BUILD 2014

Day 2 Keynote (channel9.msdn.com)

The Future of C# (channel9.msdn.com)

What’s New for Web Developers (channel9.msdn.com)

What’s New for C# Developers (channel9.msdn.com)

Azure Web Sites: Architecting Massive-Scale Ready-For-Business Web Apps (channel9.msdn.com)

Microsoft Azure Storage – What’s New, Best Practices and Patterns (channel9.msdn.com)

Building Modern Web Applications with Visual Studio and Web Essentials (channel9.msdn.com)

Building Cross-Platform Line of Business Apps with Mobile Services (channel9.msdn.com)

WinJS Architecture & Design (channel9.msdn.com)

Using Node.js and Python in Visual Studio and on Azure (channel9.msdn.com)

aspConf

Async in ASP.NET (channel9.msdn.com)

ASP.NET

Introducing “Razor” – a new view engine for ASP.NET - ScottGu’s Blog (weblogs.asp.net)

.NET

BUILD2014WebTools (bitly.com)

The Next Generation of .NET (blogs.msdn.com)

Video Tutorial and Screenshots: Windows 8.1 Update 1 - Scott Hanselman (www.hanselman.com)

Glimpse - the open source diagnostics platform of the web (getglimpse.com)

Creating a Custom Scaffolder for Visual Studio (blogs.msdn.com)

Node.js Tools for Visual Studio 1.0 Beta (blogs.msdn.com)

The Release Candidate for Visual Studio 2013 Update 2 (blogs.msdn.com)

Windows Azure

Gobbler.com – The Cloud for Media Creators (channel9.msdn.com)

Community Update 2014-04-03 – #bldwin Day 2 Special– #roslyn going #oss, #windowsazure, #nodejs and #dotnet going native

As always, BUILD 2014 videos might not be there when you click on them today. They should be there as soon as possible.

As a sidenote, Roslyn is open source. My jaw is on the floor. Wow. Impressive.

Enjoy.

BUILD 2014

BUILD: Day 1 Keynote Summary (blogs.msdn.com) – If you still haven’t watched it, I would. However, if you’d rather have the summary, here it is.

Building Enterprise and SaaS Web Apps and Web APIs using Azure Active Directory for Sign In (channel9.msdn.com)

Visual Studio and .NET Overview (channel9.msdn.com)

The Present and Future of .NET in a World of Devices and Services (channel9.msdn.com)

Thinking for Programmers (channel9.msdn.com)

Building Web APIs for Mobile Apps Using ASP.NET Web API 2.1 (channel9.msdn.com)

Puppet and Azure: Bringing DevOps to the Enterprise (channel9.msdn.com)

Powerful Mobile Apps with Mobile Services and ASP.NET Web API (channel9.msdn.com)

.NET Community & Open Source (channel9.msdn.com)

Web Development

Querying An In-Memory Array Of JavaScript Objects In NodeJS (derickbailey.com)

.NET

Announcing new web features in Visual Studio 2013 Update 2 RC (blogs.msdn.com)

Announcing .NET Native Preview (blogs.msdn.com) – Compiling .NET to native? HERESY (dipped in chocolate)!

.NET Compiler Platform (“Roslyn”) - Home (roslyn.codeplex.com) – Roslyn. C# compiler? Open-source? Get me a chicken with teeth!

Microsoft “Roslyn” CTP (msdn.microsoft.com)

Visual Studio 2013 Update 2 RC Downloads - Release Candidates (RC), Betas, and Previews (www.visualstudio.com)

Using AutoMapper to prevent SELECT N+1 problems | Jimmy Bogard’s Blog (lostechies.com)

ASP.NET

Denis Huvelle: Tips for ASP.NET MVC 4: lowercase URLs (www.dhuvelle.com)

State of Microsoft Security: ASP.NET Identity 2.0 (devproconnections.com)

I’m throwing in the towel in FubuMVC | The Shade Tree Developer on WordPress.com (jeremydmiller.com)

Windows Azure

Available Now: Preview of Project “Orleans” – Cloud Services at Scale (blogs.msdn.com)

Adapting The Azure Queue API For Node.js (odetocode.com)

Packages, tools and more

Mexedge Stylesheet Extension (visualstudiogallery.msdn.microsoft.com) – Allows you to visualize your CSS files as a tree view

Voice Commands extension (visualstudiogallery.msdn.microsoft.com) – Voice commands for Visual Studio

Architecture and Methodology

The end of ORM - Gumtree Dev Team (www.gumtree.com)

Must have books

Designing Evolvable Web APIs with ASP.NET: Glenn Block, Pablo Cibraro, Pedro Felix, Howard Dierking, Darrel Miller: 9781449337711: Amazon.com: Books (www.amazon.com)

Roslyn End-User Preview – What is it and what is possible? – #build2014 #bldwin version

What is Roslyn?

Roslyn is a complete new compiler for .NET. However, it’s more than just a simple compiler. We called it earlier a “compiler as a service”. Now they call it the compiler platform.

What’s new?

Well it ain’t your run of the mill compiler. It doesn’t just take code and outputs machine code (or IL for .NET).

This compiler allows you to participate in the compilation of your software itself and tell the compiler what to do with it. Scenarios like Aspect Oriented Programming becomes relatively trivial and doesn’t require the use of plugins or post-build event.

You have a cool refactoring that you want to implement in a very specific way? Want to convert properties with certain attributes to code blocks? Just code it. Roslyn allows you to integrate your refactoring within Visual Studio directly and share it with everyone. One specific scenario would be to code company code guidelines directly within a VSIX that you deploy on every developer’s machine. This allow developers to all have the same rules as for what the company is concerned. This could definitely give an edge to a company that want to standardise code quality directly at the source.

APIs

Basically, it comes with three type of API. Features, workspaces (solution, projects, files) as well as the compiler APIs.

Features are based around refactoring and fixing code. Those are high level functionality that are tightly link to Visual Studio. Workspace API relate to code formatting, finding references, etc. They are also linked to Visual Studio. Compiler API relates to Syntax trees, emitting code, analysing flows of code… they are the most low-level API related to the compiler and are also the most interesting.

What’s coming?

Well… technically you now have access to the C# compiler with an Apache 2 licence.

Here’s what is now possible…

Simple scenario #1 – Creating a new refactoring

Using the Roslyn SDK, I create a new Visual C# > Roslyn > Code Refactoring.

The default template reverse the string of a type. So I press F5, create a new project, create a class and do ALT + . on that class.

I now have an additional refactoring option which brings my class “ThisTest” to “tseTsihT” with live preview. This is nothing but it’s a refactoring that you are 100% in control with which doesn’t require external tools.

I know. This refactoring is useless. If something is valuable for you, you can simply implement it or wait for someone in the community to develop it.

Simple Scenario #2 – Flagging improperly named fields

So let’s say we want to flag any field that uses the old “m_something” convention. Doing this is as simple as the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/// <summary>
/// This is used to identify where problems are.
/// </summary>
[DiagnosticAnalyzer]
[ExportDiagnosticAnalyzer("NoMUnderscore", LanguageNames.CSharp)]
internal class FieldsDoNotStartWithMUnderscore : ISyntaxNodeAnalyzer<SyntaxKind>
{
public const string RemoveMDiagnosticId = "NoMUnderscore";
public static readonly DiagnosticDescriptor RemoveMUnderscoreRule = new DiagnosticDescriptor(RemoveMDiagnosticId,
"Remove m_",
"Invalid name. Field name must not start with m_",
"Usage",
DiagnosticSeverity.Error);

public ImmutableArray<SyntaxKind> SyntaxKindsOfInterest { get { return ImmutableArray.Create(SyntaxKind.FieldDeclaration); } }

public ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get { return ImmutableArray.Create(RemoveMUnderscoreRule); } }

private static bool CanHaveTheMRemoved(FieldDeclarationSyntax fieldDeclaration, SemanticModel semanticModel)
{
if (!fieldDeclaration.Modifiers.Any(SyntaxKind.PrivateKeyword))
{
return false;
}

var token = fieldDeclaration.Declaration.GetLastToken();
return token.Text.StartsWith("m_");
}

public void AnalyzeNode(SyntaxNode node, SemanticModel semanticModel, Action<Diagnostic> addDiagnostic, CancellationToken cancellationToken)
{
if (CanHaveTheMRemoved((FieldDeclarationSyntax)node, semanticModel))
{
addDiagnostic(Diagnostic.Create(RemoveMUnderscoreRule, node.GetLocation()));
}
}
}

/// <summary>
/// this is used to integrate within Visual Studio refactor capabilities
/// </summary>
[ExportCodeFixProvider("NoMUnderscore", LanguageNames.CSharp)]
internal class CodeFixProvider : ICodeFixProvider
{
public IEnumerable<string> GetFixableDiagnosticIds()
{
return new[] { FieldsDoNotStartWithMUnderscore.RemoveMDiagnosticId };
}

public async Task<IEnumerable<CodeAction>> GetFixesAsync(Document document, TextSpan span, IEnumerable<Diagnostic> diagnostics, CancellationToken cancellationToken)
{
var root = await document.GetSyntaxRootAsync(cancellationToken);
var diagnosticSpan = diagnostics.First().Location.SourceSpan;
var declaration = root.FindToken(diagnosticSpan.Start).Parent.AncestorsAndSelf().OfType<FieldDeclarationSyntax>().First();
return new[] { CodeAction.Create(FieldsDoNotStartWithMUnderscore.RemoveMUnderscoreRule.Description, c => RemoveMAsync(document, declaration, c)) };
}

private async Task<Document> RemoveMAsync(Document document, FieldDeclarationSyntax fieldDeclaration, CancellationToken cancellationToken)
{
var nameToken = fieldDeclaration.Declaration.GetLastToken();
var newNameToken = SyntaxFactory.Identifier(nameToken.Text.Replace("m_", ""));

var variableDeclarationSyntax = fieldDeclaration.Declaration.ReplaceToken(nameToken, newNameToken);

var newLocal = fieldDeclaration.WithDeclaration(variableDeclarationSyntax);

var formattedLocal = newLocal.WithAdditionalAnnotations(Formatter.Annotation);

var originalRoot = await document.GetSyntaxRootAsync(cancellationToken);
var newSyntaxRoot = originalRoot.ReplaceNode(fieldDeclaration, formattedLocal);

return document.WithSyntaxRoot(newSyntaxRoot);
}
}

This require quite a bit of code. However, it is possible to regroup and refactor common operation on certain elements (fields, constructors, etc.) to reduce the amount of code.

Of course, this code is not production ready and not unit tested. Do not take it as is. It is full of bug and is not ready for any type of environment. This is only to show what is possible.

Conclusion

This of course is just the beginning. I’ve just showed you what is possible. It took me less than an hour to prepare those two examples. With more time, it could be possible to create some very complex scenarios of very high quality.

We’re living in a crazy world right now. We’re getting more and more control over the code that we write. The possibilities that are opening up when we can interact to something as low-level as the compiler are just breathtaking.

For me, it’s tools that are built for the developers, for our needs and of course… fun to use.

Get Roslyn Now

Roslyn Roadmap

Language Features implementation status

Roslyn Sample and Walkthrough

Community Update 2014-04-02 – #bldwin special including my picks for Day 1 with some #winjs, #ef6, #typescript and more

Okay so… if you haven’t heard yet… the BUILD is on. I mean… really. Tons of sessions and more time to waste than you would admit.

So to simplify your life, I’ve built a playlist that is oriented toward the web. If you think I missed something, you should tell me.

Don’t forget to watch for tomorrow where I’ll post my picks for Day 2.

Enjoy!

My picks for BUILD 2014 – Day 1

This is happening today… if you don’t see the video, check back later.

Building a Single Page Application with ASP.NET and AngularJS (channel9.msdn.com)

Internet of Things with Azure Service Bus (channel9.msdn.com)

What’s New for ASP.NET and Web in Visual Studio 2013 Update 2 and Beyond (channel9.msdn.com)

3D Printing with Windows (channel9.msdn.com)

TypeScript (channel9.msdn.com)

Web Development

Gulp and Browserify with ASP.NET (www.myeyeson.net)

.NET

Fetch Gmail Contact List using CSharp.NET Code | CodeTonics (www.codetonics.com) – Okay… it binds to a DataSource but… the code is quite easy to modify

winjs/winjs · GitHub (github.com) – WinJS now on GitHub with Apache 2.0 licence

Reactive-Extensions/RxJS-WinJS · GitHub (github.com) – RxJS integration with WinJS

Reactive-Extensions/RxJS · GitHub (github.com) – RxJS in standalone without WinJS dependencies

Visual Studio 2013 Update 2 RC (www.microsoft.com)

Entity Framework - Entity Framework 6: The Ninja Edition (msdn.microsoft.com) – if you haven’t read that yet, you should

Data Points - Code First Goodies in Entity Framework 6 (msdn.microsoft.com)

Inside .NET Native (channel9.msdn.com) – Compiling .NET to native? Interested?

ASP.NET

Change log - Web Essentials 2013 for Update 2 RC (vswebessentials.com) – You can download it here.

Architecture and Methodology

On that Microservices thing (www.udidahan.com)

Scarcity In Software Development (odetocode.com)

Open-source projects

tobie/ua-parser · GitHub (github.com) – User Agent parser. If you are parsing logs, you need that project. Also available on NuGet.

Source Control (TFS, Git, SVN)

Microsoft Visual Studio Team Foundation Server 2013 with Update 2 (www.microsoft.com)

Community Update 2014-04-01 – April Fool’s special, getting ready for #durandaljs and some #elasticsearch

April Fools Entry

Clippy for ReSharper | JetBrains .NET Tools Blog (blog.jetbrains.com)

security - Permanently uninstalling the user - Super User (superuser.com)

Web Development

Preparing for Durandal NextGen (eisenbergeffect.bluespire.com)

BUILD 2014 – Must watch

Deep Dive: Improving Performance in Your ASP.NET App (channel9.msdn.com) – Available April 4th-5th.

.NET

Visual Studio Online Update – Mar 18th (blogs.msdn.com)

At BUILD 2014? Join Miguel de Icaza for his C#+F# Mobile Session on Android and iOS (blogs.msdn.com)

ASP.NET

Get the Twitter Profile Image using ASP.NET Identity (blog.beabigrockstar.com)

Updated ASP.NET Database Resource Provider - Rick Strahl’s Web Log (weblog.west-wind.com)

Web API: Mixing Traditional & Verb-Based Routing | Applied Information Sciences Blog (blog.appliedis.com)

Simple OAuth Server: Implementing a Simple OAuth Server with Katana OAuth Authorization Server Components (Part 1) - Tugberk Ugurlu’s Blog (www.tugberkugurlu.com)

Tom DuPont .NET: TypeScript Definition Files on NuGet: Always have the latest and greatest IntelliSense! (www.tomdupont.net)

CypressNorth/.NET-WebApi-HttpStringDecodeFilter · GitHub (github.com)

Architecture and Methodology

Estimate This! (or not) | xProgramming.com (xprogramming.com)

The True Corruption of Agile | 8th Light (blog.8thlight.com)

Search Engines (Solr, ElasticSearch)

Nest - Quick Start (nest.azurewebsites.net) – .NET Connector for ElasticSearch

Log Analysis is Fun Again | CDS Global (www.cds-global.com)

Community Update 2014-03-31 – #Build2014, #dotnet, #css, #responsive tables, #aspnet, #owin, new #octokit .NET version

So like every Monday, as always, we have an avalanche of links.

The one I would really not miss is the Build 2014 session list. The Build will start April 2nd and go up to April 4th. I will list my recommended session once we reach those date since I’m still picking what I, and maybe you, should watch.

With this, good reading!

Enjoy!

Must Read

Analysis Paralysis: Over-thinking and Knowing Too Much to Just CODE - Scott Hanselman (www.hanselman.com)

Build 2014

Build 2014 (channel9.msdn.com) – The event will be from April 2nd to April 4th.

Web Development

CSS Diner - Where we feast on CSS Selectors! (flukeout.github.io) – Excellent learning tool to learn CSS selectors

Responsive tables (gergeo.se)

.NET

StructureMap 3.0 is Live | The Shade Tree Developer on WordPress.com (jeremydmiller.com)

How I made EF work more like an object database | brockallen on WordPress.com (brockallen.com)

12 reasons to use the Jolt award winning Visual Studio Premium 2013 (blogs.msdn.com)

ASP.NET

Validation of hidden fields at the client in ASP.NET MVC (www.campusmvp.net)

OWIN security components for ASP.NET: OpenID Connect preview and Cloud Cover video! | CloudIdentity (www.cloudidentity.com)

Optimize your WebApp like a PRO – ASP.NET MVC Boilerplate | Emit Knowledge (www.emitknowledge.com)

Exploring ASP.NET FriendlyURLs | TechNet Blogs (blogs.technet.com)

CQRS / Event Sourcing

Event sourcing in practice (ookami86.github.io) – Slides in HTML. Use the arrows/space on your keyboard to page through.

Windows Azure

Using SLAB’s Azure Table Sink With a WebApi Service Hosted In Azure Beyond the Duck (beyondtheduck.com)

Source Control (Git, SVN, TFS, etc.)

octokit.net/ReleaseNotes.md at master · octokit/octokit.net · GitHub (github.com) – New version of the .NET GitHub API.

Search Engines (ElasticSearch, Solr, etc.)

elasticsearch – how many shards? « Trifork Blog / Trifork: Enterprise Java, Open Source, software solutions (blog.trifork.com)

Elasticsearch Monitoring and Management Plugins | codecentric Blogcodecentric Blog (blog.codecentric.de)

Community Update 2014-03-28 – Learning #javascript frameworks, page #performance, #REST, #Kanban and more

So the weekend is already there.

If you missed it, don’t forget my post on SideWaffle. It’s a Visual Studio Extension that ships with lots of Open Source templates including templates to building templates (INCEPTION!).

Otherwise, have a good weekend and enjoy!

Must Read

Scott Hanselman’s Complete List of Productivity Tips - Scott Hanselman (www.hanselman.com)

Troy Hunt: The prophesied Windows XP and IE 8 crisis is nigh! (unless you’re in China) (www.troyhunt.com)

Web Development

JavaScript Frameworks | How to Learn Them Quickly | Funny Ant (www.funnyant.com)

By Value Versus by Reference (JavaScript: The Definitive Guide, 4th Edition) (docstore.mik.ua)

Critical render path and pagespeed: An in-depth look (www.feedthebot.com)

Using Bower and NancyFx together | Krzysztof Koźmic on software (kozmic.net)

ASP.NET

IIS and ASP.Net Authentication and Authorization - CodeProject (www.codeproject.com)

OWIN security components in ASP.NET: OpenID Connect! (blogs.msdn.com)

.NET

Task.Run vs Task.Factory.StartNew (blogs.msdn.com)

Get rid of deep null checks (geekswithblogs.net)

Nico’s digital footprint | Building a REST API and consuming it in WP8 (www.spikie.be)

Architecture and Methodology

So Long Scrum, Hello Kanban - Stormpath User Management API (www.stormpath.com)

Deployment

Octopus Deploy vs. Puppet/Chef - Octopus Deploy (octopusdeploy.com)

Search Engines (Solr, ElasticSearch, etc.)

How To Install Elasticsearch on an Ubuntu VPS | DigitalOcean (www.digitalocean.com)

Think Big | Solr vs ElasticSearch (thinkbiganalytics.com)

Community Update 2014-03-27 – #SPAHelper by Chris Love, #webdev, #aspnet, #swagger with #webapi and #git pull is bad

First, I’m bringing you the SPAHelper by Chris Love. This is worth looking at.

Patrick Desjardins is bringing us a quick fix for Bootstrap with smaller than 768px screen width. We also have a nice explanation on why a CDN is “slow” for mobile devices (hint: it isn’t).

Today, Project Helios hits another milestone with the 1.0.0-alpha1 hitting nuget today by Levi Broderick. Scott Hanselman show us on how you can block a folder from executing ASPX pages.

We have much more so I’ll let you guys read those before going on a long explanation of every links.

Enjoy!

Single Page Application Helpers by Chris Love

docluv/SPAHelper · GitHub (github.com) – The code

docluv/movies · GitHub (github.com) – The demo app code

http://movies.spawebbook.com/ – The actual demo app.

Web Development

AngularJS in Visual Studio: Data Binding - Deborah’s Developer MindScape (msmvps.com)

Modifying BootStrap Tab Control for Extra Small Device | Patrick Desjardins’ Blog (patrickdesjardins.com)

Why is my CDN ‘slow’ for mobile clients? - igvita.com (www.igvita.com)

ASP.NET

NuGet Gallery | Microsoft.Owin.Host.IIS 1.0.0-alpha1 (www.nuget.org) – That my friend is Project Helios. New alpha!

ASP.NET “Project Helios” Changelog (gist.github.com)

Back to Basics: When allowing user uploads, don’t allow uploads to execute code - Scott Hanselman (www.hanselman.com)

Introduction to Web API Versioning - CodeProject (www.codeproject.com)

Some Useful IIS Rewrite Rules (odetocode.com)

Reading Settings from App Config // Chris Poulter - Web Developer (www.chrispoulter.com)

WebAPI, PascalCase and camelCase - The Problem Solver (msmvps.com)

Writing Asynchronous Web Pages with ASP.NET- Part 3 | Brij’s arena of .NET on WordPress.com (brijbhushan.net)

domaindrivendev/Swashbuckle · GitHub (github.com) – REST Documentation for WebAPI (see “Swagger” demo on a non-WebAPI REST service)

Architecture and Methodology

Chill out on the Singleton Fetish | Jeremy D. Miller (codebetter.com)

Self Shunt Pattern (c2.com)

Source Control (TFS, Git, SVN, etc.)

In what cases could git pull be harmful? - Stack Overflow (stackoverflow.com)

#SideWaffle – Or why people are cheering every time it’s mentioned

So I discovered SideWaffle at the MVP Summit this year. Every time someone mentioned “SideWaffle” there was a lot of cheering at the simple mention of the name.

I was curious. Or rather, intrigued. Why would someone cheer for a product that much? I haven’t seen anyone cheering for jQuery or StructureMap or Ninject or whatever. It might have been guys working on the tool but I was too curious to just drop the ball. So… Googled it (sorry Microsoft) and ended up on their website.

So what is SideWaffle?

It’s a Visual Studio Extension that contains templates for technology that you might use.

So you want to make an AngularJS project but you don’t know where to start? It’s there. Nancy? It’s there too. Google Chrome Extension? Yep. Knockout Binding? Also.

It’s insane. You absolutely need to download this thing. It will save you time.

Here’s an example.

New NancyFX project.

So I do File –> New Project and I click on C# and look for Nancy:

new_nancy_project

Then, I click OK, press F5, hit the page with Chrome (Sorry Microsoft) and I get this:

nancy_running

That’s it. Now Nancy is up and running and self-hosted on my machine.

List of supported tech (as of March 27th 2014)

AngularJS, Durandal, Robots.txt, Human.txt, RequireJS, Nancy, Offline Application Cache Manifest (HTML5), KnockoutJS, Jasmine, jQuery Plugin, GruntJS configuration file, and a whole lot more.

Hit SideWaffle.com for the complete list.

Conclusion

Download. Contribute. And don’t forget to cheer every time you hear SideWaffle.

Community Update 2014-03-26 – Google #oauth #openid endpoints, #sublime, #tdd with Google Spreadsheet, and more

So first of all, Google is retiring some of its OAuth/OpenID endpoints. You NEED to read the first article. It will let you know what is going obsolete and when.

Then we have a video worth watching. Doing TDD with Google Spreadsheet. It’s crazy, it’s insane and obviously… I love it!

Beside that, enjoy the read!

Web Development

Migrating to Google+ Sign-In - Google+ Platform — Google Developers (developers.google.com) – Google is shutting down some OAuth/OpenID endpoints. You should update your apps. Some as soon s April 30th.

Sublime is Sublime 10 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Minified.js – A Tiny Alternative To jQuery (www.webresourcesdepot.com)

WebAIM: Accessibility Lipstick on a Usability Pig (webaim.org)

5 Truly Effective CSS Boilerplates and Frameworks (blog.smartbear.com)

ASP.NET

Avoiding problems with relative and absolute URLs in ASP.NET - Fabrice’s weblog (weblogs.asp.net)

ASP.NET Web Optimization Framework - CodeProject (www.codeproject.com)

Architecture and Methodology

Using Google Spreadsheet as a simple TDD/BDD environment on Vimeo (vimeo.com) – this is a must watch.

2 Lessons Learned, And 3 Resources For For Learning RabbitMQ On NodeJS (derickbailey.com)

Windows Azure

Caching on Windows Azure - Azure AppFabric Cache, Azure Cache Service, Managed Cache, Dedicated Cache, In-Role Cache, Co-located Cache, Shared Cache, Azure Role-based Cache - Clarifying the naming confusion (blogs.msdn.com)

Storage (SQL, NoSQL, etc.)

Differences in Map/Reduce between RavenDB & MongoDB - Ayende @ Rahien (ayende.com)

Search Engine (Solr, ElasticSearch, etc.)

How we use Elasticsearch to enhance our web products | Browser (www.browserlondon.com)

Elasticsearch.org This Week In Elasticsearch | Blog | Elasticsearch (www.elasticsearch.org)

Community Update 2014-03-25 – #webdev, #aspnet, #windowsazure, #nuget packages of the week

Here are the links for now.

I couldn’t get everything today since I had a medical emergency.

I’ll keep you all posted tomorrow.

Cheers,

Web Development

New Breeze Angular Service | John Papa (www.johnpapa.net)

ASP.NET

Five Reasons ASP.NET Developers Shouldn’t Worry About Node | Wintellect (www.wintellect.com)

Page Instrumentation in ASP.NET 4.5 - Imran Baloch’s Blog (weblogs.asp.net)

Using Google Authenticator with ASP.NET Identity - Be A Big Rockstar (blog.beabigrockstar.com)

Introducing ASP.NET Web API Throttling handler - Stefan’s Tech Notes - Blog (www.stefanprodan.eu)

Windows Azure

Getting Started with Azure Storage (channel9.msdn.com)

Windows Azure Multi-Factor Authentication Overview (channel9.msdn.com)

Miscellaneous

NuGet Package of the Week: Canopy Web Testing Framework with F# - Scott Hanselman (www.hanselman.com)

Community Update 2014-03-24–Follow-up on #sublime, #nodejs articles, #angularjs, #dotnet, #aspnet and package management

As with every Monday, the flood gates are open. Greg Young submitted another blog post on Sublime, we have a few NodeJS/AngularJS posts and of course… a truckload of ASP.NET links.

I hope you enjoyed your weekend, enjoy the read and see you next time!

Cheers,

Greg Young Sublime’s series

Sublime is Sublime 8 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net) – Yep. one more!

Web Development

Creating a REST API using Node.js, Express, and MongoDB | Christophe Coenraets (coenraets.org)

Jonathan Channon Blog - Using NodeJS and FTP with Promises (blog.jonathanchannon.com)

Responsive-Design Intranets with Apt Content Prioritization (www.nngroup.com)

Dynamic Routes with AngularJS (odetocode.com)

Architecture

Package Management And Dependencies: Still A Human Problem (derickbailey.com)

.NET

Discovering System.Threading namespace, the Thread class - Tymoteusz Kęstowicz .NET developer blog (tymoteuszkestowicz.com)

ASP.NET

The Web API v2 OAuth2 Authorization Server Middleware–Is it worth it? | leastprivilege.com on WordPress.com (leastprivilege.com)

Investigating ASP.Net Memory Dumps for Idiots (like Me) - Diary Of A Ninja (www.diaryofaninja.com)

Troy Hunt: Understanding (and testing for) view state MAC in ASP.NET web forms (www.troyhunt.com)

Getting a MIME type from a file extension in ASP.NET 4.5 (blogs.msdn.com)

Secure ASP.NET Web API with Windows Azure AD - IBlog<Johan> (weblogs.asp.net)

jQuery DataTables With ASP.NET Web API 2 OData Service | TechBrij (techbrij.com)

The ASP.NET Web API 2.2 for OData release and the OData Client Code Generator release (blogs.msdn.com)

Solved: Getting 401 Unauthorized while calling an ASMX service using windows authentication | jgauffin’s coding den (blog.gauffin.org)

Podcasts & Books & Videos

Guy Barrette | Visual Studio Talk Show: Mathieu Richard - Web moderne (blog.guybarrette.com) – This one is in French

Personal Branding book - How to Be a Rock Star Developer (book.outofcomfortzone.net)

Search Engines (Solr, ElasticSearch, etc.)

Realtime Search: Solr vs Elasticsearch (blog.socialcast.com)

My talk from Comminity Stack Exchange day – Introduction to ElasticSearch » Steven Chapman (stevenjchapman.com)

Measure twice, cut once – or profile before optimizing your code

Too often we see smart code. I’m not talking about a trademarked product or something science fiction here. I’m talking about code that was written with the goal of making it faster or asynchronous. By smarter I mean, too smart for its own needs. The code should be as simple as it is required to maintain it efficiently and so that other developer can maintain it.

But as the application is being developed, at some point, we realize that it’s slow. So we run the debugger a few times, identify the module from which it’s coming from, assume it’s a certain piece of code and… we optimize.

What did we just optimize? Was it the real problem? Of course since it’s gone now! But right now, the code is unreadable. You’ve added caching, async loading, static dictionary and what not. It’s 20 times faster than it was before! Of course it’s better!

What we don’t realize however is that, we patched the problem. We put a Band-Aid on an open profusely bleeding wound. It will work for now but then you’ll have other problems related to the way you resolved your problem. Caching? Your cache doesn’t invalidate properly… Async? Partial data or 100% CPU every time the task is executed… Dictionary? Thread locking and exception for already existing keys… etc.. etc.. All those problems will gnaw at your time and for what? For some performance issue that you patched by dropping quick hacks on them.

What should we do?

Measure.

Your application was slow. You saw it in your browser. It took forever to load. Each page load were slow as hell. Is it coming from your application startup code? From which layer?

Most of the developer I’ve worked with will normally comment out code and try to reproduce the speed issue. Did it work? No? Comment out some more. Rinse and repeat until the performance issue is resolved. Once they found the source of the problem, they “optimize” or fix this block of code.  Most of the time, it might be a “WHERE” on a SQL query that is missing. Sometimes however, I see train wrecks.

The best way to know if your code is slow and what part of your code is slow is to use a profiler. There’s many kind of profiler but I’m going to talk about 2 kinds. Performance profiler and Database profiler.

Measuring performance

Here are some tools that most .NET Developers use: dotTrace ($), ANTS Performance Profiler ($), slimtune (open source)

Those tools will measure the time spent on each methods in your code. They will allow you to home in on code that is invoked too often or few times but that takes an eternity to answer (we’re talking seconds here). This will allow you to find the hotspots in your code. It will tell you where your time should be spent rather than modifying your code to find problems. Maybe your loading huge amount of items in memory and it’s slowing down your app. Maybe an external resource is slow…. whatever it is… those tools will find it.

But what if your code is working fast but its your ORM that is slow?

Measuring database

Here are some tools that most .NET Developers use: Hibernating Rhinos profilers for Entity Framework, NHibernate and more ($), MiniProfiler (open source)

When you realise that your problem is part of your database requests, it’s where you start using database profilers to find your problems. Maybe a badly configured ORM sends SELECT * requests to a table with millions of row while you only need one of them? What is the scenario… knowing what is slow when accessing the database could increase the performance of your application exponentially.

Optimizing

Once you are at that step, you know exactly what is slow and what to do to fix it. This is actually the easiest step since you already spent a lot of time understanding the problem. Okay, maybe I’m exaggerating a little but we get the point. Once you know what is the problem, it becomes a lot easier to fix it.

Conclusion

Measure first. Optimize. Measure again. If what you did didn’t improve the running time of your application, you only peddled code around. If you gained 2% gain in speed while making the code unreadable to anyone but yourself, you’ve only muddled the water for little to no gain.

Measuring is pretty much the main recommendation of this article. You don’t measure before optimizing, somewhere in the world a kitten dies.

Stop killing kittens.


http://alexandrebrisebois.wordpress.com/2013/08/29/friends-dont-let-friends-use-lazy-loading-on-windows-azure/

Community Update 2014-03-21–Follow up on Greg Young series on #Sublime, #webdev, #aspnet, #fsharp, #resharper release and more

So last post before the slow weekend. I hope that you enjoy yours as I will spend mine coding. As always.

Don’t miss out on the follow-up on Sublime by Greg young, Identity 2.0 released to RTM, ReSharper 8.2 releases and more.

Enjoy!

Follow-up on the Sublime series by Greg Young

Sublime is Sublime 5 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Sublime is Sublime 6 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Sublime is Sublime 7 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Web development (HTML5, JavaScript, etc.)

Important Developer Resources for a JavaScript Newbie - Evangelism - Infragistics.com Blog (www.infragistics.com)

.NET/ASP.NET

Announcing RTM of ASP.NET Identity 2.0.0 (blogs.msdn.com)

Social Login in ASP.NET MVC (www.simple-talk.com)

C# Fundamentals for Absolute Beginners: (01) Series Introduction (channel9.msdn.com)

Genetic Algorithms with F# - my tech blog (stefanalfbo.github.io)

Visual Studio

Open Source and Microsoft Developer Tools (blogs.msdn.com)

ReSharper 8.2 is Released Along with dotTrace, dotCover Updates | JetBrains .NET Tools Blog (blog.jetbrains.com)

Methodology / Agility

The Corruption of Agile | Dr Dobb’s (www.drdobbs.com)

Architecture / CQRS

EventStore - from streams to read models (mirkobonadei.com)

Windows Azure

Rockin’ Windows Azure with Visual Studio (blogs.msdn.com)

ElasticSearch

Elasticsearch: When giving it more memory causes more OutOfMemory errrors — Makina Corpus (makina-corpus.com)

New article: Elasticsearch as a NoSQL Database (beta version) | Hadoop Magazine (blog.hadoopmag.com)

Community Update 2014-03-20 – #sublime series by Greg Young, #tdd in #javascript, #donet, #aspnet and #WindowsAzure

Guy Barrette is looking for people who want to submit video content for a website focusing on Azure. You can check it out here: Azure Rocks

Hello everyone!

So Greg Young was on fire last night/this morning. He wrote 4 blog posts on Sublime Text. A must read! I have a few links in web development, including OAuth, but most importantly, TDD in Javascript.

So with the usual .NET, ASP.NET,etc. I wish you all an happy reading.

Also, if you are not aware yet, the MVP Program is changing its guideline for admission. You can view here on YouTube. So if you are part of an Open Source project involving .NET, you might be eligible for becoming an MVP on that alone.

Enjoy!

Sublime Series by Greg Young

Sublime is Sublime Part 1 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Sublime is Sublime 2 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Sublime is Sublime 3 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Sublime is Sublime 4 | Greg Young’s Blog on WordPress.com (goodenoughsoftware.net)

Web development (HTML5, JavaScript, etc.)

Test-driven development in Javascript | dotnet thoughts (www.dotnetthoughts.net)

webdesignrepo - a compact list of helpful webdesign links (www.webdesignrepo.com)

10 Things You Should Know about Tokens (blog.auth0.com) – We’re talking OAuth over there.

.NET

Using AutoMapper to Map Abstract Classes | Patrick Desjardins’ Blog (patrickdesjardins.com)

Successful IoC container usage | Jimmy Bogard’s Blog (lostechies.com)

C# performance tips & tricks | Raygun Blog (raygun.io)

ASP.NET / WebAPI

Kris’ blog - Designing Evolvable Web APIs with ASP.NET now as a free ebook (blog.krisvandermast.com)

LIDNUG — Katana Authentication Middleware | brockallen on WordPress.com (brockallen.com)

Stopping ASP.net concurrent logins | teknohippy.net (teknohippy.net)

CORS support in WebAPI, MVC and IIS with Thinktecture.IdentityModel | brockallen on WordPress.com (brockallen.com)

DarksideCookie | What is OWIN, and what is it doing in my new ASP.NET MVC project? (chris.59north.com)

ASP.NET Web API exception logging with Raygun.io - StrathWeb (www.strathweb.com)

More HTTP Flushing in ASP.NET MVC | nik codes on WordPress.com (nikcodes.com)

Storage (NoSQL, SQL, or Event Stores)

Event Store 3.0.0 Release Candidate available – Event Store (geteventstore.com)

Windows Azure

Windows Azure = Security + Privacy + Compliance (blogs.msdn.com)

Azure Rocks! (azurerocks.com)

Search Engines (ElasticSearch, Solr, etc…)

Legume for Logstash (www.legume.md)

Elasticsearch.org Logstash 1.4.0 GA Has Been Unleashed | Blog | Elasticsearch (www.elasticsearch.org)

Elasticsearch.org Elasticsearch - The Definitive Guide | Blog | Elasticsearch (www.elasticsearch.org)

Community Update 2014-03-19 – #webdev, #dotnet, #aspnet, #cqrs and some more #elasticsearch

First of all, I would like to mention that there is less than 19 days left until Windows XP support goes out. It’s been a nice 12 years and a half going. That means that if your child was born on the day of the release, he would now be in 7th grade. It’s been a nice and long run but it’s time to pull the plug. If your enterprise is still running Windows XP (other than in a VM to show rookies what it looked like back in the days), then it’s time to change.

That being said, here are today’s link!

Enjoy!

Web Development

JavaScript Promises: There and back again - HTML5 Rocks (www.html5rocks.com)

nodeschool.io (nodeschool.io) – NodeJS tutorial videos

A DOM Manipulation Class in 100 Lines of JavaScript | Flippin’ Awesome (flippinawesome.org)

jsDelivr – The advanced open source public CDN ✩ Mozilla Hacks – the Web developer blog (hacks.mozilla.org)

JavaScript MVC Style Guide (blog.sourcing.io)

.NET / ASP.NET / Web API

Asp.net Web Api 101 | codeCloudy on WordPress.com (codecloudy.wordpress.com)

Being Cellfish: Tail Recursion and C# (blog.cellfish.se)

ASP.NET MVC – URL routing (blogs.msdn.com)

Obtaining Twitter Access Tokens with ASP.NET Identity Geeks With Blogs (geekswithblogs.net)

Using the ASP.NET Bundling Pipeline with OWIN - Michael Sarchet (msarchet.com)

Jeff Byboth: Machine Key when load balancing asp.net web applications (www.byboth.org)

How to automatically notify the user that it’s time to upgrade a Windows App - Scott Hanselman (www.hanselman.com)

NuGet packages

NuGet Gallery | AspNet.Identity.RavenDB 2.0.0-beta1-01 (www.nuget.org)

Architecture and CQRS

Busting some CQRS myths | Jimmy Bogard’s Blog (lostechies.com)

Open Source

Showcasing interesting projects in Explore · GitHub (github.com)

ElasticSearch

Elasticsearch Image Demo (demo.elasticsearch-image.com)

Deploying Elasticsearch with OpsWorks - Application Management Blog (blogs.aws.amazon.com)

Indexing Project Gutenberg with MongoDB and Elasticsearch » anystacker (anystacker.com)

Getting Started with elasticsearch and AngularJS: Part1 - Searching (www.fullscale.co)

Getting Started with elasticsearch and AngularJS: Part2 - Faceting (www.fullscale.co)

Elasticsearch.org This Week In Elasticsearch | Blog | Elasticsearch (www.elasticsearch.org)

Community Update 2014-03-18 – #webdevelopment, #javascript, #dotnet, #aspnet, #testing and #opensource

Here’s a lot of new content about Javascript, CSS, .NET and ASP.NET.

I’ve included some nice article about ElasticSearch as always. Since I’m not in a chatty mood, I’ll leave you, dear reader, the time to read.

Enjoy!

Web Development

Reassign JavaScript Function Parameters In Reverse Order, Or Lose Your Params | ThoughtStream.new :derick_bailey (lostechies.com)

(cs)spinner | pure CSS loading animations with minimal effort. (jh3y.github.io)

Welcome - Polymer (www.polymer-project.org)

gremlins.js/README.md at master · marmelab/gremlins.js · GitHub (github.com) – Simulate huge amount of click everywhere on your screen.

jQuery Mambo Plugin (www.valeriobarrila.com)

.NET / ASP.NET

How to create a FileStreamResult from a string | andrewlocatelliwoodcock on WordPress.com (andrewlocatelliwoodcock.com)

EF6.1.0 RTM Available (blogs.msdn.com)

ASP.NET WEB API Validation (A One More Better Approach) | TypeCasted on WordPress.com (brettedotnet.wordpress.com)

Compiling your MVC views without IIS errors | Codes from the field on WordPress.com (gyorgybalassy.wordpress.com)

Important: Setting the Client Principal in ASP.NET Web API | leastprivilege.com on WordPress.com (leastprivilege.com)

Using jQuery-UI Tabs With ASP.NET WebForm Validators (blog.codesigned.com)

WebAPI: Getting Headers, QueryString and Cookie Values - Rick Strahl’s Web Log (weblog.west-wind.com)

Testing

8 Tips For Writing a Good Bug Report (blog.bughuntress.com)

Open Source

OSS Perks (ossperks.com)

Up For Grabs (up-for-grabs.net)

Search Engines

Ecrypting Logs on Their Way to Elasticsearch | Sematext Blog on WordPress.com (blog.sematext.com)

Elasticsearch.org Kibana 3.0.0 GA Is Now Available! | Blog | Elasticsearch (www.elasticsearch.org)

Community Update 2014-03-17 – #ioc in #webdev, #dotnet, #aspnet including #fsharp and some #windowsazure and #onenote API

As with every Monday, here’s what’s to read in the community today!

Enjoy

Web development

Untangle HTML and Javascript using Dependency Injection | Clark/Nikdel/Powell (clarknikdelpowell.com)

.NET / ASP.NET

The Dangers of Implementing Recurring Background Tasks In ASP.NET - You’ve Been Haacked (haacked.com)

Enabling Cross-Origin Requests : The Official Microsoft ASP.NET Site (www.asp.net)

Brad Wilson: Getting Started with ElasticLINQ (bradwilson.typepad.com)

How to create a pure F# ASP.NET Web API project (blog.ploeh.dk)

Identity in Your Own Apps with Windows Azure Active Directory - Part 4 (blogs.msdn.com)

How Nancy made .NET Web development fun! | In Absentia (hmemcpy.com)

Office

OneNote and Microsoft’s quiet API revolution - Scott Hanselman (www.hanselman.com)

Windows Azure

Windows Azure AD on Azure Fridays! (II) | CloudIdentity (www.cloudidentity.com) – Videos!

Storage

Choosing A Backend For A Graph Store - Lithium Community (community.lithium.com)

Event

Global Windows Azure Bootcamp | Locations (global.windowsazurebootcamp.com) – Available in most countries

CQRS

CQRS and Event Sourcing | CQRS on WordPress.com (cqrs.wordpress.com)

Event Sourcing Basics · EventStore/EventStore Wiki · GitHub (github.com)

Research

Office Lens Is a Snap - Microsoft Research (research.microsoft.com)