Browse our archives by topic…
Blog
Browse our blogs activity over the years…
Endjin–Looking back on 2010
This retrospective post shares the author's top developer tools, technology trends, apps, and gadgets from 2010, including JetBrains, Rx, NoSQL, and the Kindle.
Convention Over Configuration with the Endjin Composition Framework
We've added convention over configuration features to our Dependency Injection library - the endjin composition framework, to help improve your productivity.
Component discovery & composition – II: Abstracting the container
This post demonstrates how to build an abstraction layer over IoC containers like Castle Windsor and MEF, enabling developers to switch container implementations while maintaining a consistent API for resolving dependencies and bootstrapping.
A Step by Step Guide to MongoDB for .NET Developers
MongoDB has been taken a large amount of mindshare in the NoSQL space. In this blog post we share a simple step-by-step guide on how to get started as a .NET developer.
A Step by Step Guide to Hosting YouTrack in IIS 7
Step-by-step guide on setting up YouTrack and using IIS as a reverse proxy for custom domain access.
A Step by Step Guide to Hosting TeamCity in IIS 7
Step-by-step guide on setting up TeamCity and using IIS as a reverse proxy for custom domain access.
Layering your API
Incrementally adding behaviour should be only incrementally more complex. Layer your APIs so simple tasks stay simple, while still offering a discoverable path to advanced features.
RX and INotifyPropertyChanged
Cleaner Reactive Extensions over INotifyPropertyChanged in C#: helper methods that simplify Expression-based subscriptions for property changes in MVVM apps.
Silverlight CommandManager
Silverlight has no equivalent to WPF's CommandManager and its RequerySuggested event. This post explores why, and a pattern for porting the behaviour across.
Component discovery & composition – 1f: Generalizing registration
This post demonstrates how to generalize component registration using C# generics and base classes, reducing boilerplate code while maintaining the convention-based approach to container bootstrapping with MEF and Castle Windsor.
A follow up to "A Short Tale of a Deceptively Slow LINQ Expression"
My last post caused a number of responses from the community. I discuss them here and provide a little bit more context.
A Short Tale of a Deceptively Slow LINQ Expression
A simple-looking foreach loop was taking over 200 seconds. The culprit: LINQ's deferred execution re-evaluating a query on every iteration.
Component discovery & composition – 1e: Componentizing registration
This post demonstrates how to componentize registration by combining MEF's discovery capabilities with Castle Windsor's conventional registration, enabling automatic bootstrapping of self-describing components.
Component discovery & composition – Part 1d: Conventions
This post explores Castle.Windsor's fluent API for convention-based component registration, enabling low-ceremony dependency injection through namespace matching and interface implementation patterns.
Component discovery & composition – Part 1c: Castle.Windsor
This post explores Castle.Windsor's registration and resolution model for dependency injection, contrasting its convention-based approach with MEF's explicit import/export attributes.
Introducing Templify
Templify is a simple tool for tokenising and packaging entire code based solutions. It's designed to unfurl demos / quickstarts / solution templates.
Component discovery and composition Part 1b: Fundamentals - MEF
This post explores MEF (Managed Extensibility Framework) for component discovery and composition in .NET, demonstrating its export/import attributes and explaining its limitations compared to full IoC containers.
Component discovery and composition Part 1: Fundamentals
This post introduces the fundamentals of component discovery and composition in .NET, exploring how MEF and Castle.Windsor can be combined to create loosely-coupled, modular application architectures.
Work Smarter, Not Harder
Feedback loops are an incredibly powerful force. In order adopt a continuous improvement mindset, you need to set up positive feedback loops. Here's how I've internalised the 'Work Smarter, Not Harder' mantra.