History
So way back circa 2008 I registered for AWS free tier, now back then I was working in a different industry that didn’t have much need for ‘the cloud’ I played with a few linux vm’s during that year but nothing came of it and my trial expired.
Fast forward two years and Azure was born at least in public,, I was immediately sold and was all-in. I’ve used abused and consulted on more Azure projects than I can remember and anytime the subject of AWS came up I dismissed it as a inferior pioneer on cloud tech, I mean just look at the console it’s offending to the eye is it not?
Fast forward another two years and I found myself while heavily swallowing the PAAS cool-aid recommending AWS over Azure to a client, why? Simply because AWS have a managed offering for Oracle and that particular client did not have the knowledge or appetite to manage their own oracle server.
This did open my eye that there might be a bit more to AWS than an ugly console, an opportunity presented itself to become AWS certified and I jumped at it, now as I write this article I can put this lovely logo
on my business card.
Learning’s
So what have I learned about AWS in in my quest for certification? Well the console is not nearly as offending as I once believed it to be, in fact I think it’s more practical than that sexy looking new Azure portal, it’s faster to get things done in than constantly sliding those Azure portal blades around the place that’s for sure. As for feature parity, for the most part both platforms tend to support the same features in the general sense but once you drill down differences do start to emerge.
I’ve also decided it about high time that I also get certified in Azure, (underway), this should give me the street cred I need for what I’m going to try achieve and hopefully my findings be as impartial as possible.
Cloud Wars
Starting from my next blog post I’m going to start comparing features on both platforms and outline the pros and cons of each… Stay tuned to what should be a very interesting blog series. Obviously the topics are vast, so, if anyone has any requests please send me an email: b at briankeating.net.
So I’ve been looking at an issue for a client today where by an application working perfectly well on most browsers was failing on internet explorer 11. Users were presented with the following error:
I think we can all agree that it’s not very helpful. |
The problem was this particular application has a massive code base, so it was hard to identify where to start given no other information was furnished by IE.
Assembly
In order to gain insight in what was failing I pressed the Debug button and let Visual Studio 2015 grab as much information as it could from the Microsoft Symbol servers only to be presented with the following:
Reading between the lines
Now I’m not an assembly man, and i say that at the detriment of a future role that has it as a nice to have, I’d rather gouge my eyes out than mess with assembly, that said, looking at the assembly above it it was clear that the issue was related to style sheets / css.
This allowed be me to narrow in on the offending code, and I quickly seen that the following line was causing the problem:
It appears IE11 doesn’t like this, the solution for my client was to render the correct css serverside and now it’s working perfectly well for them.
Heading on nearly 20 years into my professional IT career I can honestly admit that this is the first time assembly saved my bacon!
( but I’d still rather go blind ) |
In this post I show you how to generate a shell for a web applications in both Java and .NET, while they are not directly a one to one mapping I think some of you will find this interesting should you have never created a web application on either stack or perhaps just one of the below mentioned.
I’ll let the videos speak for themselves.
Java
.Net
Follow up
I did promise to dissect both projects however I ran out of time,
I’ll leave it to you to pick your tech stack of choice and if you have any questions just ask below and I’ll explain in more detail if necessary.
So I’ve started using OData in anger and pretty much immediately stumbled on a problem when using Data Transfer Objects (DTOs). This post explains that problem and the solution.
Problem
The following error is encountered when trying to access the exposed entity by key:
No routing convention was found to select an action for the OData path with template '~/entityset/key'.","type":""
Cause Code
OData configuration
Here I show the simple entity I’m exposing
Timesheet Controller
Here you can see that the underlying timesheets are just projected using Automapper to their DTO counterparts
Automapper config
Here I show the automapper configuration (not that it’s makes any difference to the problem encountered)
Solution
To fix this problem I needed to set the EntityType.Name property on my OData entity type.
And thereafter, success!
If you ever come across the problem of the IntelliJ Application Servers menu greyed out like this:
This is simply because you need at least one Run Configuration.
I’m using JBoss just now so here’s what I do to add a run config:
Once this is done you can now see your application servers tools window menu item becomes enabled.
and it's not because I'm Irish ;-)
ODataController - 406
So I’m working on a project that returns some entities from an OData endpoint, I wanted to remove the unnecessary parts of my entities so I created some DTO’s (which in itself is a good idea btw). The screenshot below shows the changes, I’m now returning a TimeSheetDto list (previously just a TimeSheet list) and I’m just projecting (using automapper) the Timesheets from my database into these DTO’s .
However when I test said entities I see nothing come back in my browser, nada,zilch,zippo… so what is happening?
Well I fired up fiddler and saw that I was getting a HTTP status code of 406, but why?
It worked before and I changed nothing…. oh wait!….
Configure OData entities
You know that message that gets scaffolded with new OData end points!? We’ll it explicitly tells us what entities are to be considered, so with a quick addition of my Dto Suffix in my OData config I’m back in action.
Problem
I was faced with a problem this morning that took me a good 30 minutes to figure out..
I had created a website and associated SQL database. However I changed said database as part of some development work. The problem was that even though my publish profile was overriding the Release Connection String with my new database it was getting ignored!
I knew that the connection string I was supplying was correct as I could log in with Visual Studio and SSMS.
Cause:
The reason is that the website had already an connection string (under the Configure tab) and this was taking preference. The reason this is here is that one does not have to store the Azure connection string in the publish profile which is quite nice, same goes for a lot of other Azure features.
Solution
I removed same and then it works. (Fixing it is also another option but this code is in a private git repository so it’s not a concern for me just now).
In this screencast I show you how to prevent a click event on a table cell content from propagating up to its parent.
Screenshots
Hi all,
Ok this is my very first ever screencast, It’s not very polished but hopefully I’ll get into the swing of things with some more practise.
The screen cast shows how to add validation to forms the Angular.JS way.
So in my previous post I show you how to auth with a bearer token against WebApi2 with the OWIN middleware using a HttpClient. Next up I show you how to do the same with AngularJS.
AngularJS
True to form I’m not going to write a big long blog post on this topic, there are many others that are better than mine. There are even a nice few github hosted solutions you can grab for yourself.
I ended up picking the first post I saw, http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En
Now lets ignore the CORS part for starters (have banged my head against the walls many times over that). In order to get this working with the latest and greatest web api as of this post you’ll need two little tweaks
1) Relative URL
The author posts the following code
You’ll need to change the baseUrl to an empty string, if you leave it this way (even when correcting the port) you’ll end up in a CORS situation and you’ll see the browser send an OPTIONS request which you don’t want. (in fairness the author was showing CORS working so there is nothing wrong with his/her post).
2) Token Payload
The important part is that i create a new object ‘data’ and this contains the querystring for the POST body, in the $http call, I then pass data rather than userData like the codeproject article shows.
That’s it, you should now be up and running.