We recently finished developing and releasing the online version of our Church Photo Directory Software, Instant Church Directory. The idea behind Instant Ch
urch Directory Online is to provide a user interface where you can easily create and update a PDF photo directory for all of your church members. We also took it one step further and include hosting the PDF for you.
Instant Church Directory came together very nicely over the past 4 months and everyone at Communication Resources did an awesome job designing and building the ASP.NET application. I am always interested in how an application of this scale is put together, so below are some of the technologies that power Instant Church Directory Online:
Amazon Simple Storage Service (Amazon S3) - http://aws.amazon.com/s3/
One of the technical design challenges that we knew we had to overcome was hosting and distribution of the church directory PDFs. We could have stored the PDF on our own servers but the costs for storage and bandwidth quickly would have gone out of control. With Amazon S3 we get pretty cheap hosting rates and the additional scalability and reliability features that Amazon uses to power its own websites. It was pretty easy to integrate Amazon S3 into our application and we used this Amazon S3 C# library by Affirma Consulting to help us out.
TallComponents TallPdf - http://www.tallcomponents.com
Instant Church Directory on CD (the WinForms version of the product) also used TallComponents TallPDF component to generate the church directory PDF file and we took that technology and ported it to our online church directory engine. One of the great features of TallPDF is the ability to stream the PDF to a file through events (pull generation). This is necessary because with all of the pictures that will get included in each church directory PDF document, we could not store the entire PDF file in memory while creating it. So we use the event driven generation method to write each page of the PDF directory to a file as we are creating it. This gets it out of memory and into a file.
One other thing about TallComponents is their great customer support and fast response times. Asking a question or needing technical help gets a fast response from their ticketing system but also if you find a bug, it will get included in a new build within a couple of weeks. I also love the way they expose all of the feature changes for each version.
SWFUpload - http://www.swfupload.org
| We wanted the Flickr image upload experience and so we used this SWFUpload component to give us that look and feel. SWFUpload creates a small Flash movie that is used to post one or more images to our website. The capabilities of the Flash movie along with some JavaScript gives us the progress information that we wanted our customers to see as they upload one or more image files. |
 |
Javascript Image Cropper from http://www.defusion.org.uk/
One of the technical challenges we ran into while designing Instant Church Directory was giving the user the ability to crop the image. We looked into several different technologies and models and in the end the best was the JavaScript cropper developed by Defusion.org.uk. This gave us a very responsive image cropper without a large component download.
http://www.defusion.org.uk/code/javascript-image-cropper-ui-using-prototype-scriptaculous/
CruiseControl.Net for automatic builds - http://ccnet.thoughtworks.com/
This is our first application to fully use an automated build and deployment system and we were thrilled with how this all worked and how much it sped up our deployment process. Hats off to Nimble Software Professionals for setting this up for us and getting us going with automated build and deployment.
Microsoft ASP.NET Ajax - http://www.asp.net/ajax
Many of our pages in the Instant Church Directory Online application are Ajax powered and we used Microsoft ASP.NET Ajax to build those pages. We wanted the same smooth transition when switching between individual list items that we had in our WinForms application and the ASP.NET Ajax UpdatePanel control gave us this ability quickly out of the box. I am not an expert with JavaScript so the UpdatePanel is an excellent control to easily get Ajax benefits into your ASP.NET web application.
aspNetPOP3 by Advanced Intellect - http://www.advancedintellect.com/product.aspx?pop3
We use the aspNetPOP3 component from Advanced Intellect to POP all of our customer service emails from our Instant Church Directory Mailbox. I highly recommend this component if you need to pull email from a mailbox through POP3 protocol. Also Advanced Intellect has great customer service if you ever have a question or need some development/technical help.
Orcsweb - http://www.orcsweb.com
We have our servers hosted at Orcsweb and I can't say enough about the service and support of the entire Orcsweb team. Rick Barber, Steve Schofield, Jennifer Kurrus, Fredrick Cumbee, Desirée Harris, James Kehr, Pamela Dean, Jeff Graves, and Scott Forsyth (and others that I just don't see) all do an amazing job supporting us and keeping our servers up and running.
Camtasia Studio by TechSmith - http://www.techsmith.com/camtasia.asp
We used Camtasia to record all of our tutorial videos for showing how to use Instant Church Directory Online. Camtasia is an excellent screen recorder that is very easy to use to quickly produce a video. You can check out the tutorials that we created with it here:
Instant Church Directory Online Tutorials and Demos
I would love to hear any comments anyone has on the application - there is a 30-day free trial but unfortunately we do not have a demo account available to share. Or post any comments/questions on any of the technologies above.
-Jeff
Chief Architect
Communication Resources
SQL Server 2005 supports a new data type nvarchar(max). This is one of the new max datatypes that are to replace ntext, text, and image in a future version of SQL Server (according to SQL Server Books Online) but you should start using them now.
I recently used the nvarchar(max) data type for the first time in a stored procedure and I had some difficulty setting the parameter size in my C# code. I tried leaving off the size or setting it to the size of the string that was being passed to the stored procedure but none of these worked. Eventually I figured out that you have to set the size to -1 to get it to work.
Here is an example of how to create the SqlClient.SqlParameter:
System.Data.SqlClient.SqlParameter param;
param = new System.Data.SqlClient.SqlParameter();
param.ParameterName = "@Message";
param.SqlDbType = System.Data.SqlDbType.NVarChar;
param.Size = -1;
cmd.Parameters.Add(param);
The latest version of Instant Church Directory includes enhancements to the image cropping and resizing engine. In particular, the previous version exhibited a Moire pattern (or zebra pattern) in certain photos when we were resizing or scaling the images.
A Moire pattern in images is an interference pattern that creates artifacts in the image due to poor sampling (wikipedia: http://en.wikipedia.org/wiki/Moir%C3%A9_pattern).
For instance the picture on the left is the original photo of a person and their shirt. The one on the right is the one from within Instant Church Directory (version 1.0) that exhibited the Moire pattern (or the zebra pattern).
To fix this we needed to make sure to set the InterpolationMode to High Quality when manipulating the image using the System.Drawing.Graphics object. There are several values you can set for the InterpolationMode with HighQualityBicubic being the best quality.
Graphics g = Graphics.FromImage(bmp2);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.DrawImage(OrignalImage, 0, 0, bmp2.Width, bmp2.Height);
I want to give a reference to this Code Project article - Image Resizing - outperform GDI+ by Libor Tinka that pointed me in the right direction to solve this problem.
Today we released an updated version of our Church Photo Directory Software, Instant Church Directory. The new and/or updated features include:
• New pastor's page
• Improved photo-cropping engine and capabilities
• Unlimited number of activity pages
• Font sizing for the roster pages
• Improved installation process
Instant Church Directory is a WinForms application written in Microsoft .NET 2.0. The idea behind Instant Church Directory is to be able to quickly create a photo directory for your church in just a couple of hours. If you have ever tried to put together a photo directory for your church (or any other organization) then you will understand what an overwhelming task this can be - our goal is to make this simple for you.
-Jeff
Chief Architect
Communication Resources
David Rasmussen is starting a series of posts on sharing OneNote Notebooks. Not only is this interesting for people who are setting up OneNote Notebooks for sharing in either a home or corporate environment, but the articles are chuck full of information on file sharing in general. I am very interested for him to get to his second and fifth parts in the series (SharePoint and WebDAV). At Communication Resources, we are using OneNote Notebooks to share all of our corporate information. We are a 100% virtual company (no office building) with employees in 5 different states. Currently we are storing our OneNote Notebooks in SharePoint but we are seeing some performance issues (I believe the upcoming Vista SP1 has solved these issues). Overall, we absolutely LOVE OneNote and could not have developed our new Church Directory Software Application (Instant Church Directory) without OneNote.
You can get to David Rasmussen's first part of his blog post series here:
OneNote Shared Notebooks - Options and Troubleshooting - Part 1: Windows File Shares
http://aspalliance.com/chapters/book.aspx?isbn=1933988142
There is a new sample book chapter available on the AspAlliance sample book chapters website (http://aspalliance.com/chapters/).
ASP.NET Ajax in Action
by Rama Vavilala, David Barkol, Alessandro Gallo
http://www.amazon.com/gp/product/1933988142
Chapter 2: First steps with the Microsoft Ajax Library
From Chapter 2:
"In the age of Ajax programming, web developers need to be more JavaScript proficient than ever. You must accomplish a long list of tasks in an Ajax-enabled page and coordinate activities on the client side. For example, you need the ability to access server resources, process the results quickly, and maintain smooth webpage interactivity. The need for programming patterns that build robust and maintainable code is also on the rise. In a nutshell, a consistent client-side programming environment that works on all modern browsers is essential.
This chapter is the first one dedicated to the Microsoft Ajax Library, which is written on top of JavaScript and constitutes the client portion of the ASP.NET AJAX framework. In the tour of the basic framework components in chapter 1, you began to write code using the library's syntax. This chapter will provide more examples and give you a comprehensive overview of the library's features."
The sample chapter is available for download here:
http://aspalliance.com/chapters/book.aspx?isbn=1933988142
And you can buy the book from Amazon here:
http://www.amazon.com/gp/product/1933988142 Thanks,
-Jeff
http://aspalliance.com/chapters/book.aspx?isbn=1904811698
There is a new sample book chapter available on the AspAlliance sample book chapters website (http://aspalliance.com/chapters/).
Visual SourceSafe 2005 Software Configuration Management in Practice
by Alexandru Serban
Chapter 3: Creating a Service-Oriented Application
The sample chapter is available for download here:
http://aspalliance.com/chapters/book.aspx?isbn=1904811698
I was getting the error below from Internet Explorer when I would try to open a Word Document (or any other Office document) through Internet Explorer. Apparently this is because I have a mized Office environment. I installed OneNote 2007 but the rest of my Office (Word, Excel, Outlook, etc.) is Office 2003. As mentioned in this post http://biztalkdev.com/blogs/paulwu/archive/2007/03/09/IE7-Crash-when-accessing-MOSS-2007.aspx renaming the OWSSUPP.DLL found here: - C:\Program Files\Microsoft Office\Office12
to another name will solve the problem.
-Jeff
---------------------------
SysFader: iexplore.exe - Application Error
---------------------------
The exception unknown software exception (0xc06d007f) occurred in the application at location 0x77e55e02.
---------------------------
OK Cancel
---------------------------
Finally figured out here to get IE7 and WS-FTP Pro to work together on a Windows Server 2003 machine.
http://www.ipswitch.com/forums/shwmessage.aspx?ForumID=6&MessageID=19504
It appears the WS-FTP install includes an old version of psapi.dll. Renaming that prevents the "Never" dialog from appearing.
-Jeff
More Posts
Next page »