Friday, 3 June 2016

Clarity On AspNet Core, DotNet Core decisions

I had strong opinions about the changes in rc2 of dotnet core, aspnet core and I wasn't happy about moving back to csproj, msbuild and all them type of decisions. I watched the AspNet Community standup yesterday and I had all my questions answered and I have to raise my hands and say I was just worried that these changes were not the right ones to take us forward, obviously I was wrong. They know the problems that led to the changes better than any of us on the outside could ever know.

What was particularly pleasing is the "unification of dotnet" that was mentioned in the standup and I have to say that the plans are noble and that is what I had hoped dotnet would be heading to. I just now understand that I don't have to worry too much about how it gets there, but to appreciate the fact that I think the best people are on the job of taking us "there". I must apologize to the entire "core" team at MS for what I feel are harsh comments made. 

I hope we make progress going forward.

Wednesday, 1 June 2016

MSTest Suite Compatibility with DotNet Core Projects.

About two days ago, MSTest compatibility with Core Projects (projects based on .NetCore, CoreClr) was announced. It seems a good thing but I can't help but wonder how certain things are chained and MSTest is one of the results of some of the churn we have seen in the last few weeks.

AspNet Core 1.0 RC2 was announced about a couple of weeks ago and the dotnet team also annouced that the project type for dotNet Core projects has changed from xproj to csproj and it wasn't too popular an announcement, which you can read the announcements and comments here if you didn't read the announcement and the comments. With the announcement of MSTest, I think its clear why csproj is favoured over xproj, incompatibility with MSTest. Xproj (which from what we have heard online for a long time, means DNX project). with which the language doesn't matter and is different from csproj for C-sharp and vbproj for VB. According to this site, MSTest isn't compatible with xproj, which led to xUnit, a testing suite used by the AspNet Team. Since reverting back to csproj format for .NetCore, CoreClr, AspNet Core projects, mysteriously, MSTest works with them type of projects! I don't like the happenings around these projects since RC2 of AspNet was released. Lets hope things get clearer.

Again, these are the opinions of a lowly .Net dev.

Tuesday, 24 May 2016

AspNet Core 1.0, EntityFramework Core 1.0 DotNet Core



I am a fan of the work that Microsoft and its developers are doing with AspNet Core and EntityFramework Core. I think both frameworks were due a do-over and what they have done so far has been top quality. When I first started using EntityFramework 5 (I am a late comer to .net development) and later EntityFramework 6, I just assumed that it should have some kind of ODM (Object Document Mapping) capabilities. I was surprised it didn't, I just used EF because I thought it is great technology. When I heard that one of the new features of the new EF was new datastores, new platforms, I thought to myself "This is a dream, Microsoft actually caring about making their tech work on other platforms and other technologies?" I was looking forward to it. EF core 1.0 I like very much, when I think of the advantages it has already over EF 6, I decided to use it for my project. As I have used it I have found a lot of good stuff but I think the EF core is missing on shipping what I think are more important bits with it. Multiple DbContexts, NoSql Datastores, saving related entities and a few other features should have been in rc2. From the way I see it, bringing everything under dotnet has made things slightly strange.

I felt the same about aspnet. I used MVC 5 to create a few web apps for clients and I found it was much better than anything that I had used before from other Languages and I really enjoyed it. But using it with mono on Linux was a nightmare, with errors that might require a some serious dedicated time for debugging and all that which overtakes the essence of trying to use MVC 5 on Linux. So when I heard of then, vnext and then aspnet 5 now aspnet core, I was almost jumping for joy. Today using VSCode, to see aspnet code just work, building and testing web apps with no weird errors is just wonderful. A new era of .net development has come.

.Net Core team and maybe the Fx and all the other team members have done a miraculous job rolling out the new dotnet in such a short time. Big thumbs up, but moving your tooling back to csproj/msbuild is the wrong move to me. If I am not interested in uwp and other windows based dev projects, why would I want to have a csproj based project. Highlighted by several microsoft developers are the troubles of source control and csproj for example, so why are we going back to that again?! The project.json file in rc2 looks cluttered and noisy, something that had been done away with before rc2. The .netstandard 1.5 or .netcoreapp 1.0...ugh its all much. I like how python organizes things with their PEP-xxx standard. If I am trying to use a full .net self authored library, I have to think about conformity to netstandard 1.5, Uh-oh not to mention netcoreapp again. From my experience in the past, the .NET framework was itself a standard that we code against. Having these standards, make things hairy not difficult and anything that gets in the way of developer productivity is a turnoff. I wanted to use xunit with a project I am working on and decided to use the newest bits from the myget source used by the aspnet team and I kept getting errors about netcoreapp 1.0 something....or netstandard 1.3 something...so I decided to use Nunit which installed with no errors. Then I try to bring a reference of my web project into my test project and I get errors again about these netcore or netstandard based errors. Now maybe we don't bring in references in anymore but this just made me decide to just code and forget unit testing for now, what matters to my client is not if I unit test but that a working app should be presented when we do a review of the project next month.
.

I think the EF Core and AspNet Core  guys have done a fantastic job. But it seems accommodating dotnet has made things sort of tacky and that is what Microsoft should avoid. Don't try to be everything to everyone, be one thing to everyone. I don't know if it is because of rc2 but project.json looks cluttered and complex, I loved hand-editing project.json  easily but, for example, under frameworks, which do I use? it used to be dnx451 or dnx50, now there's dotnet56 and portable-netxx.
If I remember correctly, Einstein spoke of the virtues of simplicity driving the heart of any complex animal, what was there before seems to be better than what I see so far.

These views are personal but some of my views are shared by some folks:




You have had a good record listening to the community EF Core AspNet Core DotNet Core, so please listen to a small voice, from a small corner of this large ocean called the web.

Thursday, 11 February 2016

PHP DEVELOPMENT

I recently was at a job interview for software developer position (backend) and the company wants someone with
experience with C#/VB.NET/ASP.NET/MVC and LARAVEL/PHP. I had previously done some laravel development but I soon
left php development altogether and started C# and I have not looked back since. But I was adviced by the interviewer
that I should look at PHP/LARAVEL development again as he was impressed with what I was offering their team in terms of
experience and skill. So I got online and got wamp & composer on my system and them got laravel on my system. It wasn't
as bad as I thought it would be. A lot has changed in laravel since I last used it (this was back when it was laravel 3
or so). But I realized that that their idea of a model was totally different from the code-first EntityFramework that I
have come to love and have been using for the last 3 years. So I decided I wasn't going to use the Active Record pattern
that comes with Laravel. I stumbled on some blogs that spoke about the alternative, data mapper pattern with Doctrine 2.
I have been looking at it for the last 24 hours and I have got to say doctrine will make development with Laravel sooo
much more fun than I have experienced so far. See I started development when you had to learn SQL and I have always felt
that learning and using SQL was a distraction to me growing roots deep in Object Oriented Programming. So when I first
heard of ORMs (Object Relational Mapper)s, I wasn't sure how to take it. But when I decided to go .NET, I already was
dreading ADO.NET working with datasets etc, I discovered EntityFramework 5 and decided to find out what this ORM thing was
and I was hooked. I think what the .NET platform and all the languages therein have done for software development is just
remarkable. For me personally, when I decided to take the plunge, what I have learned in 4 years I didn't and could learn
in 5 years with php. But with Doctrine, it seems using php might be fun again for me. My default web dev stack will always
be ASP.NET/MVC since it now is cross-platform, but for those clients who don't want to make a big payment for a webapp,
I think php will be a good alternative.
So in a few words I would like to say to the guys developing Doctrine, THANK YOU!!! You have made me a happy dev. :-)

Sunday, 3 January 2016



SUMMARY OF 2015 FROM THE VIEW-POINT OF A SIMPLE TECHIE

2016, here we are. Doesn't feel any different from last year but the year has changed and I think for the better. 2015 was a year of giving in my opinion, one of the biggest givers in my opinion is Microsoft. It sometimes felt like they were giving everything away but I think this makes Microsoft better as a company. They gave Visual Studio 2015 community, by far the best free IDE for development hands down ( remember just my opinion, no need for a flame war ), they gave Developer Essentials, 6-month Pluralsight subscriptions...even as I type this, I feel Microsoft have done so much in 12 months and this is not even counting the various projects that they have open sourced and made easier for all to access and use technologies on open source platforms like Linux.

Microsoft is different from like 10 years ago so I think all the inhibitions of using Microsoft Technology in any startup should disappear. I want to start a software solutions consultancy and one of the main draw backs was Microsoft because our target clients have Windows everywhere and trying to develop solutions based on Windows was plagued with $$$$$$=N==N= every where. But with this "new" Microsoft, we are certain to rest easy, and create solutions with abandon knowing that there is space for the little guy regardless of where he is and what he wants to develop.

I think we can salute the efforts of Microsoft in 2015 wouldn't you agree?!