Have your CAKE and eat it–implementing a C# build script at Huddle

Liam Westley - London developer


tldr; a build script should achieve several things; it can build and test your code locally, it can run (virtually unchanged) on a build server and it should be easy to understand for the developer of the application.

The Huddle Desktop application is written in C# for Windows and Mac. With CAKE we can finally have a single cross-platform build script, written in the language used to develop the actual application.

https://www.huddle.com/


What Is CAKE?

CAKECake (C# Make) is a cross-platform build system using a C# DSL – built on top of the Roslyn compiler and available on Windows, Linux and macOS (https://cakebuild.net/). It is completely open source and hosted on GitHub.

You can get started by cloning an example repo, which is described over here; https://cakebuild.net/docs/tutorials/getting-started.

There are three key files – build.ps1 (PowerShell bootstrapper for Windows), build.sh (bash shell bootstrapper for Linux and macOS)…

View original post 1,134 more words

Advertisements

GDPR Support with ASP.NET Core 2.1

csharp.christiannagel.com

On May-25th, General Data Protection Regulation (GDPR) becomes active. With that many articles available on GDPR, I need to write one as well. However, this one is about ASP.NET Core. ASP.NET Core 2.1 includes built-in support to fulfill some GDPR requirements.

The ASP.NET Core 2.1 project template not only includes a privacy page, but also allows registered users to easily delete themselves, and to get all the information stored about the user.

Privacy

Creating and Running the Project

All you need to do to get this support is to create a new ASP.NET Core 2.1 project and configure authentication to store user accounts in-app.

Configure Authentication

This creates a project with a privacy page (Views/Home/Privacy.cshtml) which needs to be filled with your content.

After creating the database with EF Core Migrations, the user can register, and after registration manage the account.

Register User

Using the Account Management, the user can download and delete all personal…

View original post 417 more words

First look of ML.NET: Microsoft Machine Learning framework for .Net

Neel Bhatt

0_WKda_DlekT0zpG0J

Finally a Nuget package for Machine learning

I always wanted to have a Nuget package which can be plugged with a .Net application by which we can create Machine learning applications.

Microsoft has announced the Open source and Cross-platform Machine learning framework ML.NET

ML.NET first version

ML.NET is just a baby yet but it has already shown the capability of becoming a giant.

With its first version, we can perform Machine learning tasks like Classification, regression etc. Have a look here for some basic information for these ML algorithms.

Along with some basic algorithms – we can even train the model, predict using models along with other basic Machine learning tasks.

ML.NET can be extended to work with ML libraries like TensorFlow, Accord.NET, and CNTK etc.

A big picture

POSTS

As you can see above, the framework can be extended to work with third-party libraries and it has some awesome…

View original post 471 more words

First steps with nullable reference types

Jon Skeet's coding blog

This blog post is effectively a log of my experience with the preview of the C# 8 nullable reference types feature.

There are lots of caveats here: it’s mostly “as I go along” so there may well be backtracking. I’m not advising the right thing to do, as I’m still investigating that myself. And of course the feature is still changing. Oh, and this blog post is inconsistent about its tense. Sometimes I write in the present tense as I go along, sometimes I wrote in the past tense afterwards without worrying about it. I hope this isn’t/wasn’t/won’t be too annoying.

I decided that the best way of exploring the feature would be to try to use it with Noda Time. In particular:

  • Does it find any existing bugs?
  • Do my existing attributes match what Roslyn expects?
  • Does the feature get in the way, or improve my productivity?

Installation

I…

View original post 1,639 more words

Mendeley Suggest Architecture

A Practical Guide to Building Recommender Systems

Kris Jack, Ed Ingold and Maya Hristakeva.

Introduction

Mendeley Suggest, a personalised research literature recommender, has been live for around nine months so we thought we’d mark this traditional human gestation period with a blog post about its architecture. We’ll present how the architecture currently looks, pointing out which technologies we use, justifying decisions that we’re happy with and lamenting those that we’re eager to reconsider.

Architectural Overview

A recommender system is more than just the smart algorithms that it implements. In fact, it’s a collection of five core components that are designed to interact with one another primarily to meet a set of user needs:

  • User Interface
  • Data Collection and Processing
  • Recommender Model
  • Recommendation Post-processing
  • Online Modules

In the case of Mendeley Suggest, we aim to provide users with articles that help them to keep up-to-date with research in their field and explore relevant research that is, as of…

View original post 2,372 more words

Using In Parameter Modifier : C# 7.2

Code Wala

Changes are the only constant thing in the world and that got little faster with C# new releases as we have minor now releases (also referred as point releases) with significant enhancements. New features are getting added and existing features are getting enhanced. In one my earlier posts, I discussed about Ref and Out improvements that took places in C# 7.0. You can go through the link below.

Ref and Out improvements in C# 7.0

Let’s have a quick look on it

Here we can see that if we want to pass the argument by ref then reference of the instance (value type or reference type) is passed and any change the in the argument in the called method reflects in the calling method as well.

Note – If you are curious about the using the ref keyword with reference type object, you can have a look to one of…

View original post 254 more words

Paramore Brighter: DRY with Custom Decorated Command Handlers

The Blog of Colin Angus Mackay

You may wish to add similar functionality to many (or all) command handlers. The typical example is logging. You can decorate a command handler in a similar way to the policies I showed in previous posts to add common functionality. I’ve used this technique to guard the handler from invalid command arguments/parameters (essentially a validator), and for ensuring that we ping our APM (Application Performance Management) tool when a command completes. I’ll use the latter to demonstrate creating a custom decorator and handler to initiate this common code.

Paramore Brighter Command Processor will look for any attributes derived from RequestHandlerAttribute that are added to the Handle method on your command handler class. It will then use them to build a pipeline for your command.

So, in the example here, our attribute class looks like this:

 public class HeartbeatAttribute : RequestHandlerAttribute { public HeartbeatAttribute(int step, HandlerTiming timing = HandlerTiming.After) : base(step…

View original post 413 more words