You might think that no two professions could be more different.
Software development is an applied extension of Computer Science and has created some of the most complex systems in human history (and all without a physically tangible product!).
Software Development — abstract, logical, based on measurements and calculations — this is a “hard” science.
Counseling, an applied extension of Psychology, deals with the issues we humans have navigating the social structures of our societies, our own often unspoken inner selves, and conflicts we feel between our needs and our wants.
Tips and Tricks: Application Structure
Since November 2018, two worlds have been colliding to great effect — ASP.NET MVC and Kentico CMS.
Now, Kentico developers have even more ability to customize the way that content is delivered to site visitors, when stored and organized in Kentico CMS.
With this new room for customization comes an opportunity to identify helpful patterns and best practices.
Below I identify five tips and tricks you can use to help structure and organize your MVC code base when integrating with Kentico 12. 👍🏽
You’ve probably used the Visual Studio “File -> New Project” wizard many…
Writing Unit Tests
In Part 1 of this series, I detailed why we should be careful taking dependencies on static globals, like
SiteContext in our Kentico code.
To summarize, these static globals provide us access to the state of our application, but they make assumptions about how and where our application is running.
A live ASP.NET Kentico 12 MVC application is a very different thing from a running unit test project, and
SiteContext will provide values that you as the developer have no control over when it is being accessed within a unit test.
The goal of a unit test…
In my opinion, Kentico has always been designed to make its users productive. This is true for both the classic Portal Engine drag-and-drop UI builder and the .NET libraries developers can use to interact with the CMS.
Do you need to get user data from the database? Call the static provider class with
Do you need to know which site the current request is running under? Use the static context accessor
Want to ensure some data that is accessible as type
object is actually the
int value you originally stored? Wrap it in the static utility…
.NET has come a long way in the past several years.
Starting with the development of ASP.NET 5, which eventually became .NET Core / ASP.NET Core and later the development of the .NET Standard, we have seen innovation, growth, and standardization in the .NET world.
Currently (as of April 2019), .NET Core’s latest official runtime version is 2.2 and the ecosystem of tools and developer ergonomics it brings to the table is a breath of fresh air to any .NET developers that have been working with the .NET Full Framework.
Since .NET Core was somewhat of a blank-slate development effort…
Kentico CMS 12 was released in November 2018, bringing along with it a shift in technologies for Kentico developers.
While Kentico has supported ASP.NET MVC for several versions in various shapes and forms, only now in version 12 is it both fully supported and Kentico’s recommended technology choice for building out the delivery side of the content management system. 🤗
This separation of content delivery from content management allows developers to use the modern architectural best practices (SOLID) without having to maneuver around the large infrastructure of the CMS (with some caveats…). 😎
You might be using VanillaJs or a library like jQuery, D3, Moment or Lodash to help you add some spice to your web apps.
And maybe you’ve been using a library/framework like Backbone.js AngularJs, React, or VueJs to let you manage the browser like a platform, creating rich client applications that manage and maintain state between clicks, form submissions, navigations and XHR requests.
Now you’d like to take some of that knowledge you’ve gained and the design pattern skills you’ve learned to…
Environment files in Angular, when using the CLI, are a great way to add per-environment configuration to your app. You can have your app use different runtime values for dev, stage and production environments without having to hardcode any environment information, or conditional logic to switch between environments, into your app.
Note: If you haven’t been taking advantage of the ‘environments’ feature of the Angular CLI you should probably check it out.
Here’s some links to blogs and documentation explaining what it is and how to use it at a basic level.
When you create a new Angular project using…
I love ng-conf.
I think it’s the world’s best developer conference, but I’m very biased. ng-conf is the only software development related conference I’ve ever been to and I’ve been using either AngularJs or Angular regularly since 2014.
This was my 4th ng-conf and I can honestly say it was as great as ever. Each year the conference has memorable moments and a unique personality (something that I think is a testament to the conference organizers’ hardwork, dedication and attention to detail).
Surrounded by passionate Angular developers, I always come away from my time spent in Salt Lake City, UT…