Last week I found Peperclip themes of BlogEngine.Net. It was adapted by Caio Proiete. But they wasn't totally supporting version 1.4 as well as they had few CSS issues. Beside I wished for more wider area.
Thanks to Caio Proiete for providing these themes. I worked with them and tweaked them to support BlogEngine 1.4 and to provide more wide area for blog posts. You can download first 2 themes now (Cactus and Fall). Hopefully by next week I'll be done with the other2 themes. It worth to mention that I just modified the CSS, MasterPage and CommentView control.
Main CSS modification was around to support Widget Zone including Out of The Box Widgets. Beside fix few incorrect displaying styles
MasterPage modification was basically to provide WidgetZone. I also removed the Navigation section on the left menu and provide it as a widget which you can fine in the same download packages
While CommentView control modified to provide better comment adding form and better comment display with Avatars.
As Caio Proiete mentioned feel free to modify but don't forget to keep his credits.
Downloads:

Today, Matt posted a cool progressbar widget using jQuery.UI. He gave a good introduction and explanation about how to build a widget using jQuery.UI.
Here, I'm following his sample to build my own one, which is Messenger\Outlook like message notification [view demo]. So for reference and how to build one please return to jQuery.UI ProgressBar Widget by Matt Berseth.
Messenger like message notification widget is something I wished to do long time ago, and was lazy to think and code it, because I thought it would take to much coding. And I read Bilal's article How to Show Messenger-Like Popups Using AJAX but it wasn't a reusable component. So I just used his styles for demonstration.
After going through Matt's post, I decided to build it up right away. So Let's dive into the code. Below is the init method for the widget, I just initialize some local variables with to store current bottom position and height of the popup message element.More...
Yesterday, Janco tagged me in Michael Eaton's software development meme that's been flying around recently. I read most of the stories around, specially Dave, Matt and Janco stories. So below is my simple story.
How old were you when you started programming?
I was 19 or 20 I don't remember exactly, but it was in 1999. That was when I joined the college, Faculty of Computers and Information Sciences. Before that I never worked on a PC or even had one. So I wasn't a video game player either.
How did you get started in programming?
I joined Computers and Information Sciences because I wished to be a software engineer. So, my early steps were very academic; Lectures, classes and labs where we practice basic of programming.
What was your first language?
C++, that was my first language when I do not use currently!! Shame on me! More...
Yesterday, I was reading Efficient Paging in SQL Server 2005 post by Justin Etheredge, then in the comments I found Kevin Hazzard pointing to his Efficient LINQ to SQL custom paging approach. I liked his way, which reflects Justin's method which I already seen before but never apply it. I think it is more efficient than my method I provided in an earlier post. And if you googled about custom paging with LINQ to SQL you'll find few more implementation.
Today, I'm updating my method and provide the same sample I made last month with Kevin's method. I made an extension method to IQueryable Interface and called it KavinPage. You can view a demo here
Here is the code for the Extension Method:
1: public static IQueryable<T> KevinPage<T, TResult>(this IQueryable<T> obj, int page, int pageSize, System.Linq.Expressions.Expression<Func<T, TResult>> keySelector, bool asc, out int rowsCount)
2: { 3: rowsCount = obj.Count();
4: if (asc)
5: { 6: return obj.OrderBy(keySelector).Skip(page * pageSize).Take(pageSize);
7: }
8: else
9: { 10: return obj.OrderByDescending(keySelector).Skip(page * pageSize).Take(pageSize);
11: }
12: }
It is all about Extension Methods and how to use them to build SQL Queries. You can return for Kevin's post for detailed explanation. Also you can return to my previous post about this subject for more details about how to put it all together to build Paging ASP.NET ListView using LINQ to SQL and ObjectDataSource.
Download the updated sample.

Well its 2nd of July, but day before yesterday was a good day. BlogEngine.Net 1.4 released, and today I performed my blog upgrade. But I didn't apply widgets yet but, I'm ready to do so once I got some time to be online to do so.
The upgrade didn't take too much time from me, actually no time at all but the uploading time. I performed kind of local upgrade test first to make sure that everything will work fine then I performed the live upgrade, and that is why actually I performed my upgrade so fast.
You can refer to this upgrade post by Al Nyveldt. I wish to share my upgrade experience, but these days I'm preparing for a business trip so I don't have much time to be online. Hopefully soon I'll be able to blog about it.
But one thing I can say, BlogEngine.Net 1.4 is 100% backward compatible with BlogEngine.Net 1.3, that means you will not lose anything or fall into trouble if you just do first stage upgrade like I did. My first stage doesn't include widgets, because I need to set them up and arrange them. So I preferred to write this post over continue my upgrade process :) . You can image how second stage will be easy :)
Have fun with BlogEngine.Net 1.4.
Few days I decided to take exam 70-504 TS: Microsoft .NET Framework 3.5 – Windows Workflow Foundation Application Development so I decided to register the exam for today. And today I attended to the exam and passed with score 800. I worth to mention that I used a promotion code submitted to my by Microsoft because I registered on Microsoft Visual Studio 2008 Learning Portal to be the first to know and save 40 percent on select Visual Studio 2008 exams.
I prepared for exam during the last month (June). I basically studied the from Microsoft Learning products, course Course 6462: Visual Studio 2008: Windows Workflow Foundation and Clinic 6262: Introducing Windows Workflow Foundation using .Net Framework 3.5 & Visual Studio 2008. And really, about 45% to 50% and maybe more of the exam question are totally covered by Course 6462
The exam consist of 53 questions. You'll not find any exam simulator for this exam now, so if you wish to prepare for it just attend Course 6462 and use some external resources such Microsoft Windows Workflow Foundation Step by Step book.
Below is my score card for this exam.
Last week I posted about building custom paging with LINQ to SQL. And I wrapped the functionality with Extension Method to IQueryable<T> Interface.
Today I'm going to put the custom paging in a practical sample using ASP.NET ListView, DataPager and ObjectDataSource Control. Click here to download the sample. View demo here.
The sample is using Northwind Database. So first I created a Northwind LINQ to SQL class ".dbml"
More...
I wanted to have good short start overview on WCF. My first pick was from Microsoft E-Learning, Clinic 6264: Introducing Windows Communication Foundation using .Net Framework 3.5 & Visual Studio 2008. For me, it was a great choice, exactly what I need to start my learning steps on WCF.
Here I'm going to write my review about this Free E-Learning Course which is part of a Free E-Learning Collection, Collection 6261: Developing Rich Experiences using Microsoft .NET Framework 3.5 & Visual Studio 2008.
Course Objectives:
- Describe WCF and provide scenarios for building WCF applications.
- Describe WCF features for developers of service-oriented applications.
- Describe how to create a WCF service.
- Describe how to create and invoke a WCF client.
- Describe how to customize WCF with behaviors.
- Describe bindings in WCF.
- Explain the main features of WCF security.
- Describe reliability in WCF applications.
More...
Introduction:
Since my early days with web application and I used to observe people writing different techniques for paging data coming from the database. Many articles where written, and different techniques for different databases. All that I am talking about paging data on the database before returning results to the application which will renders it to the client.
One Technique:
You might be familiar with queries like this one:
1: SELECT TOP (10) [R1].[ProductID], [R1].[ProductName]
2: FROM (
3: SELECT TOP (77) [R0].[ProductID], [R0].[ProductName]
4: FROM [dbo].[Products] AS [R0]
5: ORDER BY [R0].[ProductID] DESC
6: ) AS [R1]
7: ORDER BY [R1].[ProductID]
The above query is one of the techniques used for paging data on the database side. When wrapping this query with a stored procedure it will look like this:
1: CREATE PROCEDURE [dbo].[usp_Product_GETPAGE]
2: (
3: @page int,
4: @pagelength int,
5: @sortfield varchar(100),
6: @descending bit,
7: @rowcount int output
8: )
9: AS
10: BEGIN
11: SET NOCOUNT OFF
12: DECLARE @Err int
13: SELECT @rowcount = COUNT(*) from [Products]
14: declare @innerrows int
15: declare @sortdesc varchar(100)
16: declare @sortasc varchar(100)
17: declare @a varchar(6)
18: declare @b varchar(6)
19: IF @descending=0
20: BEGIN
21: set @a = ' DESC '
22: set @b = ' ASC '
23: END
24: ELSE
25: BEGIN
26: set @a = ' ASC '
27: set @b = ' DESC '
28: END
29: IF charindex(@sortfield, ' [ProductID]') > 0
30: BEGIN
31: set @sortdesc = ''
32: set @sortasc = ''
33: END
34: ELSE
35: BEGIN
36: set @sortdesc = ', [ProductID] ' + @a
37: set @sortasc = ', [ProductID] ' + @b
38: END
39: set @innerrows = @rowcount - (@page * @pagelength)
40: DECLARE @sql nvarchar(1000)
41: SET @sql = 'SELECT TOP ' + STR(@pagelength) + ' [ProductID], [ProductName] FROM
42: (
43: SELECT TOP ' + STR(@innerrows) + ' [ProductID],
44: [ProductName]
45: FROM
46: [Products]
47: ORDER BY [Products].' + @sortfield + @a + @sortdesc + '
48: ) Alias
49: ORDER BY Alias.' + @sortfield + @b + @sortasc
50: EXEC (@sql);
51: END
The above procedure is somehow complex because it support paging and that is why it build the SQL statement and use EXEC function.
I'll not discuss its performance; my target is to discuss how to convert this query into LINQ query using extension methods then generalize it to be as an Extension Method for IQueryable Interface.
LINQ Equivalent:
The LINQ Equivalent is very simple using Extension Methods of the IQueryable and IOrderedQueryable interfaces. The following code shows that:More...
Few days I wrote a review about uCertify product for Exam 070-553 C#. And today, I received an e-mail from uCertify, here is an excerpt from that e-mail:
"We are offering a discount to the readers of your Blog. (If there is certain suggestion in review) Your suggestions will definitaly help us to improve our products and ultimately benefit our users. Your readers can use our discount code given on your Blog and get 10% discount on the uCertify PrepKit of their choice"
So you can apply this Discount code "MMMOSA" and gain 10% discount on the uCertify PrepKit of your choice as mentioned above.
So 10% discount and money back guarantee if you didn't pass from the 1st attempt! Check uCertify.com for more details about money back guarantee.
Introduction:
I almost attended & passed more than 10 Microsoft Certification Exams. With the assist of self-learning paced training as well as official Microsoft Learning products. And before taking the exam, I used to practice the exam using some of the available exam simulators as well as assessments provided by Microsoft. And sometimes I just took the exam using my person experience.
And today uCertify gave me the chance to review one of their best exam simulation tools & preparation kits produced and provided by uCertify for exam 070-553: UPGRADE, MCSD.NET Skills to MCPD Enterprise Developer using C#.
About uCertify:
Founded in 1996, uCertify is a leading provider of exam preparation solutions for IT certifications from leading vendors such as Microsoft, CompTIA, Sun Java, Oracle, CIW, Adobe and Cisco. They are committed to help their clients to pass their certification exams by providing the highest quality preparation software. uCertify has devoted much of its resources in Computer Assisted Learning (CAL) research. Through continuous research and development, our products are designed and updated to cater to the needs of changing technology. uCertify PrepKits replicate the actual online exams, and help you experience the real exam environment. This gives you the confidence to pass your certification exams in the first attempt.
My Story:
I have a simple challenging story with exam 070-553 which I’m going to review its preparation software provided by uCertify. I passed this exam on 2006. I didn’t prepare for it. I was moving beside an exam center then I decided to take the exam. And I took it on the same day. Challenging my knowledge and experience, I hardly passed this exam with score 700.
Today and after 2 years, I found this exam preparation and test simulation software from uCertify, I wonder what would be my life and how would be my score if such product were available at that time. I would simply use my knowledge with assist of this product and pass the exam, gaining much more score I’m sure.
More...
This collection of 3 2-hour premium clinics teaches about the new capabilities provided by the .NET Framework 3.5. These clinics are for experienced Developers and Software Architects who are looking to adopt Microsoft's next generation technology within their solutions.
Collection 6261: Developing Rich Experiences using Microsoft .NET Framework 3.5 & Visual Studio 2008:
This is a one year subscription offer for free. I've already take Clinic 6262 and started with Clinic 6264. I must say I am ignorant about these new technology and I decided to start from scratch and have an overview over them before starting reading more detailed materials. And it needs total of 2 hours for each clinic.
Few days ago Microsoft released both Virtual Server 2005 R2 SP1 & VPC 2007 SP1 updates.
Microsoft Virtual Server R2 SP1 includes support for the following additional Host and Guest Operating Systems:
Additonal Guest Operating System support:
Windows Vista® Ultimate Edition with Service Pack 1 (SP1)
Windows Vista® Business Edition with Service Pack 1 (SP1)
Windows Vista® Enterprise Edition with Service Pack 1 (SP1)
Windows Server® 2008 Core
Windows Server® 2008 Standard
Windows Server® 2008 Datacenter
Windows Server® 2008 Enterprise
Windows Server® 2008 Small Business Server
Windows XP Professional with Service Pack 3
Additional Host Operating System support:
Windows Vista® Ultimate Edition with Service Pack 1 (SP1) (non-production use only)
Windows Vista® Business Edition with Service Pack 1 (SP1) (non-production use only)
Windows Vista® Enterprise Edition with Service Pack 1 (SP1)(non-production use only)
Windows Server® 2008 Core
Windows Server® 2008 Standard
Windows Server® 2008 Datacenter
Windows Server® 2008 Enterprise
Windows Server® 2008 Small Business Server
Windows XP Professional with Service Pack 3 (non-production use only)
While Microsoft Virtual PC 2007 SP1 includes support for the following additional Host and Guest Operating Systems:
Additonal Guest Operating System support:
Windows Vista® Ultimate Edition with Service Pack 1 (SP1)
Windows Vista® Business Edition with Service Pack 1 (SP1)
Windows Vista® Enterprise Edition with Service Pack 1 (SP1)
Windows Server® 2008 Standard
Windows XP Professional with Service Pack 3
Additional Host Operating System support:
Windows Vista® Ultimate Edition with Service Pack 1 (SP1)
Windows Vista® Business Edition with Service Pack 1 (SP1)
Windows Vista® Enterprise Edition with Service Pack 1 (SP1)
Windows XP Professional with Service Pack 3
You can optain the download from the following links:
The WPF team at Microsoft is going give us “WPF Application Quality Guide”. They plan to release the
Guide in stages, updating and fine-tuning the content, based on
feedback provided by audiences.
Current version is 0.2, this version contains -as specified in the link above- more examples that illustrate how to find the
AutomationElement object by using UI Automation; introduction to the
WPF programming stack and software testing; high level overview of test
methodology, planning, and strategies; visual verification testing;
media testing; verification of animations and other transitions;
performance best practices resources; security testing considerations;
a list of tools for creating, debugging, and testing WPF applications;
and additional topics in the Appendix about resources for WPF data
binding and debugging, and about WPF interoperability with Win32 and
Windows Forms.
Introduction:
Last month Matt Berseth posted very good post about how to build Master-Detail with the GridView, DetailsView and ModalPopup Controls. Today I'm going to clone his post and build the same feature using jQuery with jQuery Plugins; one for popup windows jqModal& and the other is for Color Animation. You can view a demo of this sample here [View Demo].
Prerequisites:
Because I'm using some design tips and styles posted in Matt's posts, I recommend to return to his original posts regarding styling and UI enhancement. I used the styles and design shown on his post Building a VS2008 Styled Grid with the GridView Control.
In my sample I'm using UpdatePanel, and used a client side technique to update the UpdatePanel. To read and review more about this technique please read Dave's post Easily refresh an UpdatePanel, using JavaScript.
It is important also to review documentation of jqModalas I'm not going to explain its APIs.
Implementation:
To make a long story short, I just modified Matt's sample and replaced ModalPopup control of AJAX Control Toolkit with jqModal. Also Matt used to indicate the updated row by setting a style sheet class to the updated row for certain period of time then remove it to make it look as before. I did the same, but I used some kind of animation provided by Color Animationplugin for jQuery.
More...