This is very probably the dullest title for a blog post I've ever come up with. Read on though folks - it's definitely going to pick up...
The Convent with Continuous Delivery
I've done it. I've open sourced the website that I maintain for my aunt what is a nun. Because I think we can all agree that nuns need open source and continuous integration about as much as anyone else.
TypeScript: In Praise of Union Types
(& How to Express Functions in UTs)
Have you heard the good news my friend? I refer, of course, to the shipping of TypeScript 1.4 and my favourite language feature since generics.... Union Types.
Deploying from ASP.Net MVC to GitHub Pages using AppVeyor part 2
"Automation, automation, automation." Those were and are Tony Blair's priorities for keeping open source projects well maintained.
Deploying from ASP.Net MVC to GitHub Pages using AppVeyor part 1
There's a small open source project I'm responsible for called jQuery Validation Unobtrusive Native. (A catchy name is a must for any good open source project. Alas I'm not quite meeting my own exacting standards on this particular point... I should have gone with my gut and called it "Livingstone" instead. Too late now...)
Gulp, npm, long paths and Visual Studio.... Fight!
How I managed to gulp-angular-templatecache working inside Visual Studio
Every now and then something bites you unexpectedly. After a certain amount of pain, the answer comes to you and you know you want to save others from falling into the same deathtrap.
There I was minding my own business and having a play with a Gulp plugin called gulp-angular-templatecache. If you're not aware of it, it "Concatenates and registers AngularJS templates in the $templateCache". I was planning to use it so that all the views in an Angular app of mine were loaded up-front rather than on demand. (It's a first step in making an "offline-first" version of that particular app.)
What's in a (Domain) Name?
The observant amongst you may have noticed that this blog has a brand new and shiny domain name! That's right, after happily trading under "icanmakethiswork.blogspot.com" for the longest time it's now "blog.icanmakethiswork.io". Trumpets and fanfare!
Pretending to be someone you're not and the dark pit of despair
Coded UI, IE 11 and the "runas" problem
Using Gulp in Visual Studio instead of Web Optimization
Caching and Cache-Busting in AngularJS with HTTP interceptors
Loading On-Demand and Caching
He tasks me; he heaps me.... I will wreak that MOQ upon him.
Enough with the horrific misquotes - this is about Moq and async (that's my slight justification for robbing Herman Melville).
Journalling the Migration of Jasmine Tests to TypeScript
I previously attempted to migrate my Jasmine tests from JavaScript to TypeScript. The last time I tried it didn't go so well and I bailed. Thank the Lord for source control. But feeling I shouldn't be deterred I decided to have another crack at it.
Unit Testing an Angular Controller with Jasmine
Anyone who reads my blog will know that I have been long in the habit of writing unit tests for my C# code. I'm cool like that. However, it took me a while to get up and running writing unit tests for my JavaScript code. I finally got there using a combination of Jasmine 2.0 and Chutzpah. (Jasmine being my test framework and Chutzpah being my test runner.)
Running JavaScript Unit Tests in AppVeyor
With a little help from Chutzpah...
My Unrequited Love for Isolate Scope
I wrote a little while ago about creating a directive to present server errors on the screen in an Angular application. In my own (not so humble opinion), it was really quite nice. I was particularly proud of my usage of isolate scope. However, pride comes before a fall.
Getting more RESTful with Web API and IHttpActionResult
Up until, well yesterday really, I tended to have my Web API action methods all returning 200's no matter what. Successful request? 200 for you sir! Some validation error in the model? 200 for you too ma'am - but I'll wrap up the validation errors and send them back too. Database error? 200 and and an error message.
AngularJS meet ASP.Net Server Validation
So. You're using AngularJS to build your front end with ASP.Net running on the server side. You're a trustworthy dev - you know that validation on the client will only get you so far. You need to validate on the server.
HotTowel-Angular meet TypeScript
I've recently ported John Papa's popular Hot Towel Angular SPA Template to TypeScript. Why? Because it was there.
A folk story wherein we shall find dates, DataAnnotations & data impedance mismatch
If you ever take a step back from what you're doing it can sometimes seem pretty abstract. Here's an example. I was looking at an issue in an app that I was supporting. The problem concerned a field which was to store a date value. Let's call it, for the sake of argument, valuation_date
. (Clearly in reality the field name was entirely different... Probably.) This field was supposed to represent a specific date, like June 15th 2012 or 19th August 2014. To be clear, a date and *not* in any way, a time.
Migrating from AngularJS to AngularTS - a walkthrough
It started with nuns. Don't all good stories start that way? One of my (many) aunts is a Poor Clare nun. At some point in the distant past I was cajoled into putting together a simple website for her convent. This post is a walkthrough of how to migrate from AngularJS using JavaScript to AngularJS using TypeScript. It just so happens that the AngularJS app in question is the one that belongs to my mother's sister's convent.