Archive

The 'Week of PostSharp' is a joint promotion with Manning Publications where we highlight a new book each day that is special to us and hand-picked by the PostSharp team – with a small introduction about how it connects to what we are doing. We also collaborated with Manning to select a second book for each day of the week, and will be offering our choices at a 50% discount on their site! You can even read excerpts from some of the books online for free by clicking on the links below.

We hope you enjoy the deals! We’ll be adding new posts with the daily discount code throughout the week, so stay tuned.

In a previous engagement before working on PostSharp full time, I inherited a legacy app and was asked to clean it. Apparently, developers that worked on the app before me were afraid of the delete key: at least half of the source code was commented. The code was extraordinarily flat, as if subroutines were a rare commodity. While cleaning the code, I found a method named AppendToList, but the method actually prepended elements at the beginning of the list. I changed the implementation so that it fitted the name, and after a few days of hard cleaning work, the application was compiling again (C for Solaris 7) and all manual tests seemed to work again. It was not before the service got released to production that we figured out that inversing the order of inspection broke the notorious “Brian’s trigger”, several hundred lines of Oracle SQL implementing “workarounds” on the top of the longtime-obsolete order provisioning system, which was not even deployed in our development environment. As a result, we failed to activate services to dozen of customers. This was my most brutal experience with legacy applications.

Aspect-oriented programming excels at dealing with legacy apps. The proof: there is an AOP extension to COBOL. Trust me, it was not the work of some geeks, but of a large company who solves big problems with big money, Hitachi. The reason is easy: AOP allows developers to add features and behaviors to an application without actually modifying this application.

At PostSharp, we’ve always been reluctant to position our product as a “patching” technology. You can fix some bugs in someone else’s product with PostSharp, but we didn’t optimize the product for this use case. However, PostSharp does make it easy to add new features to old apps: for instance caching, logging, or performance monitoring.

For those who got the challenging but unrewarding job of maintaining an old app, we recommend Brownfield Application Development in .NET from Donald Belcham, a PostSharp MVP. The second book promoted today, Continuous Integration, will help you define your development processes so that applications are easier to maintain… and don’t fall so quickly into legacy.

You can now purchase both books with a 50% discount - but hurry, the offering is valid until August 24th, 12 midnight EST:

Brownfield Application Development in .NET starts by laying out the unique characteristics of brownfield apps—both negative and positive. It then systematically explores how you can employ well-established techniques like continuous integration, version control, and automated testing, even if they weren't part of the original dev process. You'll learn techniques to identify logical layers and tease apart dependencies to effectively separate concerns for improved flexibility. This practical book will help you improve not only your application's maintainability, but also the team's confidence in the project.

Download Free Chapter (PDF)   |   Purchase with 50% discount using the following code: pswkd5

 

Continuous Integration in .NET shows you how to reimagine your development strategies by creating a consistent continuous integration process. You'll use Visual Studio along with tools like Subversion, MSBuild, TFS, TeamCity, NUnit, and Selenium. And because CI is as much about the culture of your shop as the tooling, this book provides clear guidelines for starting and maintaining projects, along with metrics for measuring project success.

Download Free Chapter (PDF)   |   Purchase with 50% discount using the following code: pswkd5

 

The 'Week of PostSharp' is a joint promotion with Manning Publications where we highlight a new book each day that is special to us and hand-picked by the PostSharp team – with a small introduction about how it connects to what we are doing. We also collaborated with Manning to select a second book for each day of the week, and will be offering our choices at a 50% discount on their site! You can even read excerpts from some of the books online for free by clicking on the links below.

We hope you enjoy the deals! We’ll be adding new posts with the daily discount code throughout the week, so stay tuned.

Design patterns are now universally accepted and have significantly improved the way we design software. However, they had relatively little impact on how we implement it. Except rare exceptions like the ‘using’ or ‘lock’ keywords, most patterns must still be implemented by hand, resulting in large quantities of boilerplate code that must be validated by peer review. However, smarter compilers and development tools could do a better job by automatically implementing part of the pattern and automatically validating the part that was implemented manually. We call this design pattern automation. At PostSharp Technologies, we believe that design pattern automation, as it raises the abstraction level of source code, will make it easier to build good software.

If Design Pattern Automation is the objective, meta-programming and aspect-oriented programming are the tools. Meta-programming refers to the ability to alter a program either at build- or run-time. Aspect-oriented programming (AOP) is a paradigm that allows to add features to existing code without directly editing this code. Although AOP is not purely meta-programming, these concepts largely blend together. PostSharp, for instance, relies on AOP to alter applications but on meta-programming to select elements of code that must be altered.

Developers like technical quarrels, and meta-programming has been no exception. At PostSharp, we believe that a technology is good if it makes it easier to write good software – for an average development team. It does not help if the best developers are getting a little productivity gain whereas the rest of the team pains at understanding the code. While doing meta-programming, we should be obsessed by this question: did I make it easier for my team to write good software?

Today, we're recommending the following books that you can buy with a 50% discount until August 23rd, 12 midnight EST:

 

Metaprogramming in .NET is a practical introduction to the use of metaprogramming to improve the performance and maintainability of your code. This book avoids abstract theory and instead teaches you solid practices you'll find useful immediately. It introduces core concepts like code generation and application composition in clear, easy-to-follow language, and then it takes you on a deep dive into the tools and techniques that will help you implement them in your .NET applications.

Download Free Chapter (PDF)   |   Purchase with 50% discount using the code pswkd4

 

DSLs in Boo shows you how to design, extend, and evolve DSLs for .NET by focusing on approaches and patterns. You learn to define an app in terms that match the domain, and to use Boo to build DSLs that generate efficient executables. And you won't deal with the awkward XML-laden syntax many DSLs require. The book concentrates on writing internal (textual) DSLs that allow easy extensibility of the application and framework. And if you don't know Boo, don't worry—you'll learn right here all the techniques you need.

Download Free Chapter (PDF)   |   Purchase with 50% discount using the code pswkd4

 

 

The 'Week of PostSharp' is a joint promotion with Manning Publications where we highlight a new book each day that is special to us and hand-picked by the PostSharp team – with a small introduction about how it connects to what we are doing. We also collaborated with Manning to select a second book for each day of the week, and will be offering our choices at a 50% discount on their site! You can even read excerpts from some of the books online for free by clicking on the links below.

We hope you enjoy the deals! We’ll be adding new posts with the daily discount code throughout the week, so stay tuned.

I guess there’s a strange secret affair between Microsoft and Aspect-Oriented Programming. Never, ever has Microsoft used the word Aspect-Oriented Programming in its products. Yet, many products implement some of these concepts:

  • ASP.NET MVC (filters)
  • ASP.NET (modules)
  • WCF (custom behaviors)
  • Unity (interceptors)
  • Policy Injection Application Block (policy)
  • Base Class Library (transparent proxy, ContextBoundObject)

Thinking twice, it’s fair enough that Microsoft never called that aspect-oriented programming. After all, with the exception of ASP.NET MVC, these are quite purpose-specific implementations of one or two design patterns: pipes-and-filters, or proxies. But with ASP.NET MVC, they got pretty close.

Get convinced yourself with the books of the day which you can now purchase with a 50% discount - but hurry, the offering is valid only until August 22th, 12 midnight EST:

 

ASP.NET MVC 4 in Action is a hands-on guide that shows you how to apply ASP.NET MVC effectively. After a high-speed ramp up, this thoroughly revised new edition explores each key topic with a self-contained example so you can jump right to the parts you need. Based on thousands of hours of real-world experience, the authors show you valuable high-end techniques you won't find anywhere else. Written for developers, the book arms you with the next-level skills and practical guidance to create compelling web applications. You need some knowledge of ASP.NET and C#, but no prior ASP.NET MVC experience is assumed.

Download Free Chapter (PDF)   |   Purchase with 50% discount using the following discount code: pswkd3

 

ASP.NET in Practice distills over 100 practical ASP.NET techniques from the experience of a team of MVPs, and puts them right at your fingertips. The techniques are tested and selected for their usefulness, and they are all presented in a simple problem-solution-discussion format. You'll discover methods for key new subjects like data integration with Entity Framework and ASP.NET MVC. Along the way, you'll also find ways to make your applications fast and secure.

Download Free Chapter (PDF)   |   Purchase with 50% discount using the following discount code: pswkd3