Posts Tagged ‘open source’

Notify and Memento

July 14th, 2012 Comments off

Announcing my 2 new open-source .NET projects:

  • Notify: data-binding change tracking library
  • Memento: lightweight undo framework

I still work on Bike, Combres, and Fasterflect although very limited (mostly fix bugs and support).

So far all of my major open-source projects are .NET based. While I do contribute a little bit here and there to non-.NET projects, it’s not as much as I want to. My open-source focus in the upcoming period therefore will be around JavaScript and Objective-C.

ASP.NET MVC Validation Library 1.3 Release

March 31st, 2010 Comments off

This is truly a month of release. In fact, I released Fasterflect 2.0 and Combres 2.0 within the past 10 days. And now, it’s ASP.NET MVC Validation Library 1.3. It’s not like I suddenly have all the time in the world to push the releases of these libraries. Instead, code gets accumulated over the last 3-4 months until they happen to be done at the same time. Anyway, a couple of notes about this release of ASP.NET MVC Validation Library.

First and foremost, if you are using ASP.NET MVC 2.0, then you can stop reading. This library is not for you. Really, ASP.NET MVC 2.0 comes with a highly robust and flexible validation functionality built-in already, so there’s no reason to look for a 3rd-party library which has nothing more to offer. That said, if you are still stuck with some ASP.NET MVC 1.0 legacy apps, like me, then my library can be useful.

If you are not familiar with this library, please refer to this originally introductory post to learn how to use it. Because I haven’t taken the time to posted about the all of changes since the release mentioned in that post, I’m doing it now.

Changes in 1.3

  • Support custom server-side validation
  • Support remote validation (integrated with jQuery Validate’s remote method)
  • The design of validation attributes is improved to make addition of new validation attribute much more intuitive

Changes in 1.2

  • Support RegularExpressionValidatorAttribute (use the property ClientFunctionName to specify the corresponding jQuery Validate’s function)
  • Allow specify a custom form validation function (i.e. instead of the default $(formName).validate())
  • Support PropertyComparisonValidatorAttribute (equal operator only)
  • EntityValidationException adds constructor to accept custom key-value pair (i.e. useful for non-model/custom validations)
  • Support specifying custom ready function (i.e. useful when using a 3rd-party script loader, like Google’s, to load jQuery)
  • Support specifying custom client ID (in case the client-side ID is different from the client-side name (used for posted value)

Changes in 1.1

  • Eliminate the need to specify type parameter when invoking Validate() method
  • Allow users to specify prefix when populating model state with error messages

That’s it for the post. That’s it? Yes, that’s it. The library is ridiculously easy to use, so you don’t need another 10 pages of tutorial here. Instead, the old introductory article, together with the above change notices, should be enough for you to start working with the library. Okay, it might not be that easy. Don’t worry yet, the download of ASP.NET MVC Validation Library comes with CHM API documentation and a sample application that uses almost all features of the library. So, download and explore the library yourself. And post here if you have any comment or feedback. Enjoy!

Combres 2.0 Release

March 30th, 2010 4 comments

After a couple of months working on and off on this project, I was finally able to release the next major version of Combres, a .NET library which automates the application of many website optimization techniques in ASP.NET MVC or ASP.NET Web Forms applications.

Access to this CodePlex page to download Combres 2.0, together with source code, CHM API documentation, sample applications and config files.

For a full introduction to Combres 2.0, refer to this Code Project article.

Enjoy the improved performance!

Fasterflect 2.0 Release

March 21st, 2010 5 comments

I am pleased to announce the release of Fasterflect 2.0. For those who are not aware of Fasterflect, it is a library that helps you get rid of the complexity and slow performance of .NET Reflection. Check out this Code Project article and a previous announcement for an introduction.

Fasterflect 2.0 comes with a great number of additions & changes, which are possible thanks to the fact that I am no longer the only developer of this project; instead, Morten Mertner (author of Gentle.NET) has joined me since the beginning of 2.0 and made huge contribution ever since. Let’s look at some highlights of this release.

The most exciting addition in this release is that Fasterflect now includes a Query API. Previously you can only use Fasterflect to construct objects or performs invocations (these 2 usages are now referred as Access API). With this release, you can query .NET reflection metadata with Fasterflect although much simpler than what you have to do with the built-in .NET reflection. You can even do more thing with this Query API than you can with .NET reflection out of the box. For example, you can choose to exclude backing members from a lookup or enable partial-name lookup. All you need to do in order to have these level of control is specifying a proper Fasterflect binding flag. The nice thing about Fasterflect binding flag is that it is also fully supported in the Access API.

Next, the Access API is now fully integrated with .NET reflection metadata classes, such as ConstructorInfo, MethodInfo, FieldInfo etc. This integration makes it able for you to mix & match the usages of Query API and Access API as well as allows you to use .NET reflection as it is while delegating the invocation to the fast CIL-generation engine of Fasterflect.

We have also built on top of the core Fasterflect engine some add-on services such as advanced object construction, deep cloning and object mapping. We expect to have more of these services in future releases and of course, you can send us your contributions too.

Users of previous versions of Fasterflect should be aware of the following breaking changes.

  • Many existing extension methods have their names changed as we went through the process of improving API’s consistency & usability. We hope these changes are for the better because now we have 2 developers vote on the conventions instead of 1 like previously :-) . You would have to make some code change when switching from 1.1 to 2.0, but the changes should be very straight-forward in most cases except for the other changes described below.
  • Fasterflect extension methods now don’t require a type parameter, which we have found to be inconvenient because people are forced to append <object> to the call even when they don’t care about the return value or its type. These methods now simply return result of type System.Object and you can cast to the correct type if you need to.
  • Batch fields/properties setting are gone. They are replaced by the object mapping add-on service which is more flexible, sophisticated and faster (CIL code generation is used behind the scene). Batch setting of static members is not supposed though because we think it’s not a common scenario. That said, do let us know if you have this need and we will add support for it in the next minor release.
  • The class Reflector and its methods are now gone. We instead employ a custom-built weak reference-based cache to assure that generated CIL can be garbage-collected when memory is low.

Last but not least, the project wiki on CodePlex is fully populated with comprehensive documentation. While Fasterflect is still ridiculously easy to use, it now has a much bigger API and is more sophisticated than it used to be (e.g. with Fasterflect binding flags). Therefore, documentation should be of great help for those who want to understand everything about Fasterflect to use it effectively in even advanced scenarios without having to dig through the source code.

You can download the binary, source code and CHM API help file in the Fasterflect 2.0 release page in CodePlex. If you want to explore Fasterflect in details, surf through the project wiki. If you just want to jump right into the usages without any further introduction, check out the 2-minute-guide to Access API and this page about the Query API. Finally, the comprehensive unit test suite included in the code download can also serve as good reference for the API.

I am a dVP

September 19th, 2007 5 comments

I have just been recognized as a db4o Most Valued Professional (dVP) for the year 2008 and won a trip to Berlin next year to attend the ICOODB 2008 conference. It has always been a pleasure working with a great product like db4o and I surely enjoy this award.

BTW, to those who are expecting to see part 2 of my db4o article, I am a bit overwhelmed with other stuffs lately and could not have time to start working on it; but I’ll surely do that as soon as I can.

Categories: Technologies Tags: , ,