ASP.NET MVC5 – what you need to know to start coding on OSX

I spent a bit of time today to try and get MVC5 up and running on my MAC.

This Yeoman generator is a good starting point

https://www.npmjs.com/package/generator-aspnetmvc

Unfortunately the template is a bit out of date, and took me a while to get it to work.

The use of ~ to reference the root does not seem to be supported in mono and there are a few newer version of Microsoft.AspNet.WebPages and Microsoft.AspNet.Mvc

Here is the final result with a working version of MVC5 on OSX

https://github.com/smnbss/YeomanMVC5

MVC5

ASP.NET vNext – what you need to know to start coding on OSX

ASP.NET vNext on OSX is, as expected, a lot of manual work to get it up and running.
I’m so used to open Visual Studio, create a new project and press F5 that this new Open Source approach is slightly more work than I wish it was.

Here is a list of useful links:
Install Brew
>ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Install ASP.NET on OSX
Ensure you have the latest version of mono installed (Mono JIT compiler version 3.12.0)
>brew unlink mono
>brew install mono
>mono -V
Install aspnet
>brew tap aspnet/k
>brew install kvm
>source kvm.sh
>kvm upgrade

Add source kvm.sh to your ~/.bash_profile so that you do not have to source kvm every time you open a new terminal

Install Yeoman generators for ASP.NET 5
>npm install -g yo generator-aspnet

Install one of the OmniSharp IDE for Cross platform .NET development
My choice is sublime-text3
>brew install caskroom/cask/brew-cask
>brew cleanup && brew cask cleanup
>brew cask install sublime-text3

Register sublime on your terminal
>ln -s “/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl” /usr/local/bin/sublime

Build a new App
>yo aspnet
Manually select Web App and type YoWebApp as name
>cd YoWebApp
>kpm restore
>kpm build
>sublime .
>k kestrel

out

Read what Scott Hanselman (@shanselman) has got to say about .NET as Open Source

Announcing .NET 2015 – .NET as Open Source, .NET on Mac and Linux, and Visual Studio Community

Looks like a lot of effort to me, but I’m sure I’ll get used to it in the end.
I’m hugely in favour of the Mono runtime, and I’ve been playing with it since 2011 so I’m super super excited to see what is coming up from Microsoft :)

Good Luck! :)

Xamarin Evolve 2014 – In short

I’m not going to write another long post about the Xamarin keynote.
You can read a few good one here, herehere and here.

In short:
The test and monitoring platform are great, the profiler is awesome.
Xamarin has built a new Android Emulator which is a billion time faster than the Google one…

And then… sketches
You can build prototypes of simple apps and the app is compiled and redeployed on all platforms emulators pretty much as fast as you can type
Development Lifecycle is down to seconds from the moment you change the code to when you can see your app on the emulator…

Xamarin is the game changer in the mobile development space, if you are a native iOS or Android developer I highly recommend you check it out :)

Continuous Learner #21

Visual Studio

Visual Studio 2012.3 download: http://bit.ly/15ZYaiA
ASP.NET and Web Tools for Visual Studio 2013 Preview Refresh Update: http://bit.ly/13mxlsP
Visual Studio 2013 download: http://bit.ly/15ZY7Do
Microsoft Adds Bootstrap Support To Visual Studio 2013: http://tcrn.ch/13mwRD3

Web Development

Knockout IntelliSense Highlighting Bug Fix: http://bit.ly/11iUZ9p
Browser Link feature in Visual Studio Preview 2013: http://bit.ly/19VCCI2
Understanding OWIN Forms authentication in MVC 5: http://bit.ly/19VCDM1

The London MySQL Meetup Group

Pre Holiday meet up – Hosted by Just Eat: http://bit.ly/15ZYOMZ

 

JustEat – Hackathon V

At Just Eat we run regular Hackathons, the last one was last week, and yesterday we spent the afternoon showing what every team was working on.

WP_20130614_001

The theme was about “Empower consumers to love their takeaway experience” and there were some amazing projects, some are listed below:

  • Adding comments to individual order items by Sylvia / Greg
    Empowering consumers to be able to add comments to individual order items
  • A dashboard for use as a restaurant sales tool by Peter Mounce, Tony Harverson, Josue Calvo, Rob Lascelles
    Supply and Demand dashboard by area based on search terms on JustEat.com and  restaurants in the area
  • Ratings via sms by Pawel Matyjasek Anton Jefcoate Maxim Lakomkin Jaimal ChohanMake it easier for customers to rate their food so that other customers have more information available to them.

Me and my team (image Ahmed Malik and Sergey Balaboskin image) worked on a Chat system to allow Customer Service agents to chat with the restaurants when there’s a problem about an order.

The solution we came up with, is a Chat Server that read and writes messages to and from an inbound and outbound queue. A worker process on the CS App will read and write the messages from/to the same queues and push the messages in front of the Agent using SignalR. The Chat server is responsible for storing all the messages using an API, both the Chat server and CS App will read the historic messages from the API.

The Chat server could potentially be integrated to the client system the restaurant use to receive orders from Just Eat, so it’s something they would be constantly looking at.

Chat System

We uses AWS SQS as message queue and SignalR as WebSockets wrapper.
It was amazingly simple to set everything up, it took us a couple of days to get this up and running.

From a business point of view this will allow CS agents to talk to multiple restaurants at the same time, where before they had to make phone calls and could only talk to one restaurant every 5 minutes or so.

And remember:

 

What does Agile mean after all?

As you might already know, I work for JustEat, we are a start-up, a very big one, but still a start-up, I work on the Technology Department, I’m a team leader (I try to do my best at being one) and we have many many open positions.

Recently we had a few good developers coming in for an interview, and they all seem quite surprised that we do not adhere to any specific agile methodology.

We do not do SCRUM, we do not do KANBAN, we do not do regular stand-up.
We believe we are better than that. We are Agile to the extreme.

We use a mix of those methodologies, we use HipChat  and public rooms for all our conversations so that everyone can just jump into another team room, ask question or just keep an eye on what people are doing, we use JIRA to keep our workflow public within our company, everyone can go and have a look at each team board, and see what they are working on and what it’s coming up next in their list. imageimage

We also have a weekly report  that goes out every week to everyone and explain what the Tech department has been working on.

We love technology, we live with technology and use a lot of different technologies, we use a Microsoft stack (MVC/.NET/C#/SQL Server) on Amazon AWS, we use Java and DynamoDB for our Search Engine and Hadoop processing, we use Ruby for test and automation, we use Powershell for some throw away scripting, we use Coffeescript/CouchDB for our EPOS system, we use a ton of open source frameworks.

But, (there is always a but) we are also very business oriented, we do not use all those different technologies just because we like them, we do so because we believe that it’s always better to use the right tool for the job.

If you want to know more about our iper agile way of working, do not hesitate to reply to this post.

 

Continuous Learner #20

Testing

Test Better – http://bit.ly/10OgfmP
Phil Haack last week posted about testing, and the way it’s part of each modern developer’s life to write unit testing, and to help QA the software we are writing.

The way I see it, he’s completely right, I’m demanding more attention to unit and functional testing from me and the members of my team. It’s good to have dedicated QA resources that help a team of developers to keep high the attention toward quality, that help to coordinate the testing of new functionality being released by all the members of a team.

I like to get dedicated QA members involved early on in the process of analyzing new features, help figure out the weakness of the business requirements, and ultimately *help* developers test their code.

Tools

TeamCity plugin for Visual Studio – http://bit.ly/10Ohz9c
This is a tool that has existed for a long time and yesterday Maarten Balliauw blogged about it in the JetBrains blog.

It’s a super useful tool you can use to run build and automation testing on a Team city server rather than your local machine without having to commit to a source control first. neat!