Skip to main content

From PHP to ASP.net - Tooling & Workflows

Probably the first thing to be remarked when coming from any environment to .net is going to be the tightly integrated tooling.

When I used to do PHP in the late 90s early 00s, it was pretty much whatever text editor I could get my hands on.  There were some non-free IDEs, but none that were easily obtained or as impressive as Visual Studio, which also wasn't free until around 2006.

Despite the differences though, Visual Studio has always been first class.  When the same people making the languages are also making the tools, you can expect a lot of extra convenience.  One thing that's kept my interest is that despite the tight coupling, most everything is still quite generalized, unlike 4GL environments like Delphi.
Contrast .net with PHP where all you get the language and are responsible for building your stack upwards from there.  Not that our favourite friends LAMP and LEPP aren't just as mature.  Things like PHPstorm have come along to give that first class feeling but it hasn't always been that way and not everyone in the PHP ecosystem affords themselves these conveniences.

So, that's the obvious tooling stuff out of the way.  The next thing that I think I notice right away is the state of the basic ASP.net MVC 5 project structure and APIs.  I know that ASP.net Core is coming and I'm excitedly staying up to date on everything to do with it.  But when I look at the still current gen scenarios, it's obvious to me what prompted the changes.

Something they've got in Visual Studio that not everyone would necessarily have expected to see is fully integrated support for node package dependencies, gulpfiles and other equivalents.  With Task Runner Explorer, you can even have Visual Studio hook certain build and project events all without having to get involved with MSBuild.  This is a great way to introduce Microsoft developers to the sometimes bewildering but all the same amazing universe of npm and static front end build flows.

That brings me to some of the standards of expectations that .net and Java developers have compared to PHP and other FOSS languages.  There are a lot of things about how front-end concerns are handled in .net projects that feel very circa 2010.  I think this is one space where even despite not being a front end developer, I can see that the FOSS ecosystems are considerably more advanced.  This is something I find odd because .net developers wrangle with some extremely complex designs sometimes and yet tooling outside of what ships with defaults is rarely explored!

Another thing - which thanks to Roslyn is changing - is how you have to compile your project prior to being able to run it.  Out of everything, I'd say this has added a measurable amount of time to my development flow.  It makes sense obviously, but it's just so foreign to have to explicitly tell my tooling to build my web site before I can go to the browser and refresh the page, or re-trigger the XHR.  Looking forward to ASP.net Core which in so many ways will close the gap there.

Next up worth covering is the tight integration with the web serving environment IIS and database, SQL server.  By default everything comes ready to run with both.  You're always a quick configuration change away from telling your application to run in IIS.  I also really like how there's a first-class IDE specifically made for SQL server.

Last but not least, it has to be said: Strong typing, generics, a proper collections library and LINQ.  If I had to make a list of absolutely essential functionality in a language, these would rate quite high.  I'd say if there's anything that's got me just loving the environment, it's these.

Anyway, that's it for this lighthearted entry.  Like all my posts in this series, if something really interesting comes up, I'll come back and edit it into this post.  At least up until a certain point!

Popular posts from this blog

Amazon in Winnipeg?

Late last week, Amazon put word out that they're starting to look for a city to locate a second headquarters.  The fuel this announcement provides has the hype train in Winnipeg going so fast, it's missing stops.

I'm curious though.  As you've been digesting this exciting news, who have you spoken or listened to?
Was it this guy and his party's historic theft of public infrastructure (pdf) and incompetence with digital strategy? Or how about this guy, who maintains that Winnipeg doesn't need a proper rapid transit option?  You know, the kind that might actually catch the eye of handsome Amazon who now has Winnipeg trying to be the belle of the ball.


Runner up articles are Winnipeg's inability to join the 21st centry on active transport and the compounding of the aforementioned digital strategy mistakes.
Stop Listening to These Guys They are not technology experts. At worst, they're unabashed self promoters. At best they're conduits for very bad pol…

Making TypeScript npm Packages

If you've landed here, I can only assume you're like me and see packages as the highest form of sophistication in software development.  In that same vein, I bet at some point in the past you've wished you could start applying DRY principles to your client-side efforts.  I know for myself, I don't enjoy writing the same application bootstrap code constantly and so recently, I was motivated to codify it.

This body of understanding has taken me quite some while to figure out, hopefully what I share here is helpful enough to get you up to speed.  No post is complete without some kind of example, so throughout I'm going to reference a package I've just finished putting together called protoculture.

Briefly described, protoculture encapsulates all the common bootstrap and conventions I've been using while developing TypeScript apps that use React and Redux.  Honestly, I've already gotten a lot of benefit out of putting this package together, but nothing about…

The Cons, Winnipeg's New Splash Pads

I never had the chance to be ungrateful, the new splash pad at Kildare and Wabasha isn't a splash pad at all.  It was taken away from us and replaced with an "aquatic park", a little bit of wordsmithing designed to gloss over the fact that an open piece of our community has been replaced with yet another closed gate.

As I write this post now, I can hear it already: "Taken away, what?! It's a new water park, you're so..."
Sure, some might reach for that tired recrimination, which is why I started this blog post by dismissing such a premise.  To be fair however, I offer the response: Don't spoil this discussion with nonsense.
You see, I was grateful before the renovations happened.  The communal service on offer was adequate and I never complained about it or saw it as flawed.  Don't believe me? Here, this is a cute google-generated animation of my son enjoying the splash pad in 2014.

Today we took the kids to see if we could spend some time at th…