Wednesday, December 31, 2008

Happy New Year

Happy New Year everyone.
2008 was a wonderful year, with the birth of my first child and everything else that happened. I hope and believe 2009 can and will be even better.

Saturday, December 13, 2008


eJOn Edmiston posted a great response to a little rant I put in his comments wondering why Arena was not open sourced. Here is a link to his post

And you should really check out his blog in general

I have re-posted a comment I made in response to that post below, and hi-lighted the part about creating a "competing" open source church management solution.

Thank You so much for the response.

I did not realize when I posted the "rant" on the comment that your church was the one who created Arena.

Given the continuing support you would have felt compelled to provide your decision makes a lot of sense. It is just frusterating to be the IT guy at a church of 500 looking for a new church management system and realize there is no way we could ever afford the best system out there, the one with all the features we could REALLY use and\or want. Honestly even for a "small" church no other system really comes close to matching the features of Arena so good job. And thanks for deciding not to just keep the project in house but to share it with the world.

All that being said if there are people reading this who would like to join me in creating an open source church management system for the rest of us, probably based off a Dot Net Nuke backend, please let me know.

Thursday, November 13, 2008


Its been a while since I have posted on here.

I have hit a mid to long term pause on the CHMS project due to my not having enough paid time in the week to get all my other Chapel Hill work done and my having other things to do with my volunteerable time.

I am working on an update for the Central Homeschool Family Ministries site, including some front end design work and more back end functionality improvements. The online web base school class registration system I built for them was one of the first real ASP.NET web applications I ever built and is still the largest programming project I have ever worked on.

I am spending most of my free time with Kati and Kristen these days. Being a dad is great and Kati is growing so fast. I love her so much and feel so blessed.

Saturday, September 27, 2008

Postmodern Math

Last Saturday I wanted to do something just for fun since we take Saturday’s as our Sabbath. Thinking about fun things to do (that are free since money is tight right now because car registrations came due this week) I decided I wanted to go to the library and get some books on math. This is something I do every once in a while, and we have been watching a lot of the show Numbers lately (Netflix is great) so my brain has been in a math mode.

We took Kati to the library for the first time, which we enjoyed much more than she did, and Kristen got some books on house design and scrapbooking. I brought home and armload of fun looking books about math and mathematicians.

The first book I ended up reading was Philosophy of Mathematics: an introduction to the world of proofs and pictures by James Robert Brown. C 1999 published by Routledge an imprint of the Taylor & Francis Group. ISBN 0-415-12275-9

This ended up being a fascinating general overview of the different strains of philosophy behind mathematics. I never realized there was so much debate among mathematicians about how to think about how math works.

There were several strains of thinking represented in the book but one debate that stood out was the question of whether mathematical concepts actually exist in some sort of platonic abstract realm of existence and mathematicians just discover these truths, or if mathematics is really just a social construct. The author believes in the platonic version of math and after reading the book I mostly agreed with him, but think he puts too much of a hard separation between the realm of math and the world we actually live in.

I found it particularly interesting to note that some of the extreme questioning of reality that has been connected with postmodernism has also made its way into mathematical philosophy. In particular chapter nine on how human’s follow “rules” especially when working from an existing sequence of numbers and seeking to extend them.

Suppose a teacher gives the following list of numbers to her student and asks them to extend the sequence (see page 133-134) 1, 4, 9, 16, …. “What is the next number? The student will likely answer 25. Why? Probably he will reason that the sequence obeys the rule of taking each number in turn and squaring it, i.e. 1 squared, 2 squared, 3 squared, 4 squared, and so on; the next number in the sequence would then be 5 squared which is 25.

But what if he answered 27? Would this be wrong? His reasoning might be as follows: The sequence is growing by adding successive odd prime numbers to the elements of the sequence. The odd primes are: 3, 5, 7, 11, 13, 17, …. Thus the sequence is:

4 = 1 + 3
9 = 4 + 5
16 = 9 + 7

And so the next number in the sequence is 16 + 11 which equals 27.”

Both of these are reasonable continuations of a mathematical sequence and the only sense in which one answer could be considered wrong has to do with the teachers “intentions” but are her intentions enough to justify considering one answer wrong?

The book goes on to give more extreme examples of a student following a rule to the best of his ability and getting an answer that is “obviously wrong” or is it? The answer given is absolutely not the one the teacher expected or intended, and would be considered wrong by most people, but is it really?

A mathematician named Kripke extended an argument by one named Wittgenstein on this topic to give the following set of arguments.

Causation is just regularity – nothing more; our inferences about the future are based on custom and habit – nothing more. Thus in this view:

  • · There is no fact of the matter about whether the teacher/questioner meant one sequence rather than another.
  • · The only way to solve the problem is to abandon the view that meaningful sentences purport to correspond to facts. Language does not word by being representational.
  • · However, this is not to abandon language. There are many useful things that various ‘language games’ can do.
  • · The conditions for the use of any language game involve reference to a community, all of whom play the same game.
  • · Ultimately, we act without hesitation, without justification; but this is not to act wrongly. In following a rule we simply do what we think is right. There is nothing deeper. But it is not enough to do merely what we think is right. ‘To think one is obeying a rule is not to obey a rule. Hence it is not possible to obey a rule “privately”; otherwise thinking one was obeying a rule would be the same thing as obeying it.
  • · We are trained by others, and we are judged to be following a rule correctly when we give the same answers as other members of the community. There is a strong tendency for all members of the community to give the same answers – a shared ‘form of life’. This is just a brute fact, like Hume’s regularities in nature. There is no explanation for this, no hidden cause: ‘What has to be accepted, the given, is – so one could say – forms of life.
  • · Our answers are (in some loose sense) in accord with the rule; but they are not caused by it. We do not grasp a rule which then determines our behavior; we do not agree in expanding a sequence because we share a common conception of some mathematical function. Rather, we say that we share a common conception because we agree in our answers, we agree in how we go on expanding the sequence.

The author of the book finds this conclusion “wholly absurd and thinks it ridiculous to say that it is only an amazing coincidence that we all agree in developing a sequence in the same way.” He concludes that “something is wrong with the premises of any argument that leads to this absurd outcome, and concludes that there are, after all, independently existing mathematical entities and we can grasp them, just as the Platonists have been claiming all along.” (Page 144-145)

I tend to agree with the author though I find Kripke’s argument to be challenging and I hate to link myself in any way with a Platonic view of the world. What do you think? Answer in the comments below.

Several times in the book, the author expressed what I would term a “negative view” toward religion, which I found to be interesting in a book on math. However I found his conclusion, especially coming from someone with this negative view of religion to be challenging.

“The real action today – the living philosophical issues for working mathematicians – cluster around visualization and experimentation. The clarification of this cluster of problems presents us with our greatest challenge. If our philosophical duty lies anywhere it is here, after the elimination of poverty which, of course, must be the first duty of all.”

How is it that a secular anti religious mathematician can view “the elimination of poverty” as “the first duty of all” and so many Christians can seem to view this issue as being unimportant compared to questions like “what style of worship is best?” Shouldn’t all Christians treat this issue as being at least one of our first duties?

Thursday, September 18, 2008

Image Upload Web Service in VB.NET

Image Upload Web Service in VB.NET

We are going to be doing and in house pictorial directory here at Chapel Hill this fall. I want this directory to be integrated with our website and allow us to view the directory pictures online.

The process as I envision it would include a family taking some time out of their Sunday or Wednesday night to have a picture taken. The photographer would take a family picture as well as individual pictures and transfer these to a computer. It would be ideal if the pictures transfered as they were being taken. We would then have a piece of software that would allow us to look up the info we have for this family, update it if needed, and upload pictures for the family and for each family member.

This software will need to re-size the images down from the hi-quality images taken by the camera to something that is a web appropriate size, upload the image, and update the family / individual profile to indicate which image belongs to them.

In order to do this, I needed a way to upload an image to a website using a VB program. I decided I would use a web service to do this and through some Google research I was able to put together a web service to do this.

Here is the code I used for the web service with a web form to test it out.
When I have finished the vb program I will post that code.

First the web service
Public Function UploadImage(ByVal imgdata() As Byte, ByVal FileName As String) As Integer
'Find the path on the server of our apps images folder
Dim FilePath As String = Server.MapPath("images")

'strip the path and .jpg etc out of our filename
Dim i As Integer = InStrRev(FileName, "\")
FileName = Mid(FileName, i)
Dim j As Integer = InStr(FileName, ".") - 1
Dim k As Integer = Len(FileName)
FileName = Mid(FileName, 1, j)

'Create a memory stream to hold the image data
Dim MS As New System.IO.MemoryStream(imgdata)

'Convert the memory stream to a bitmap image
Dim BM As New System.Drawing.Bitmap(Image.FromStream(MS))

'Convert the bitmap to a png and save it in our images folder
BM.Save(FilePath & FileName & ".png", Imaging.ImageFormat.Png)

'eventually we will create a database entry for this image and return the image ID
Return 1
End Function


Now the VB code for the web form
Imports System.IO
Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ws As New localhost.ImageUpload
Dim fs As Stream = FileUpload1.PostedFile.InputStream
Dim img(fs.Length) As Byte
fs.Read(img, 0, Convert.ToInt32(fs.Length))

ws.UploadImage(img, FileUpload1.PostedFile.FileName)
End Sub
End Class


I hope someone finds this useful.

Tuesday, August 26, 2008

Buying a Server

I have been having problems with my website hosting company. I host 11 websites with and twice now all of these sites have been down for a couple days at a time, and the site for the company was down at the same time as well, so there was no way to submit a support ticket. After this happened the second time I decided I had to find a new hosting company. I wanted to be able to host all of my websites on one account with room to grow. I have 3 different accounts with hostonce since they offer a deal where you can upgrade to a 5 site host for 45 dollars above the 80 something price of one site. This was a good enough deal at first since I had locked in a yearly rate of 60 odd dollars plus the 45 for my first set of 5 sites, but over time it has proven to be a bit of a pain.

I looked into getting a dedicated server hosted for me, or ever a Virtual Private Server. The dedicated server setup would have cost over $4000 dollars a year, more than I can afford, and the VPS solution I found would have limited me to 30 websites and cost over $800 dollars a year.

Looking at those prices I began to wonder what it would cost to host my own webserver.
AT&T recently raised the price I was paying for internet from around $35 dollars a month to around $55 becuase we lost a discount we were getting.
Cox business internet service offers a plan with a dedicated IP and an OPEN port 80 for website hosting for $69 dollars a month. Not that much more than AT&T.
Dell offers a varity of servers for different price ranges. I found and ordered a very basic one on sale with a dual core 2.0ghz processor, two 80 gig hard drives, and 2gig of ram for $423.08 with taxes and Shipping. It should arrive next week.

Now I need to save up for the software to put on my server. Windows Web Server 2008 $469 Web Server-only product, no CALs required. Available in 32-bit and 64-bit versions. Fortunatly there is a 60 day downloadable trial version of this software (which I am downloading right now) so I can install and setup my software now and pay for it next month.

Fun, Fun, Fun, I have a new toy on the way.

Monday, August 4, 2008

Importing Data From Shelby Systems

Today I did most of the Spark, caught up on email, and did the following work on the new CHMS:

Worked on Creating the Ability to Import People and Families from Shelby, this included creating Data Access and BLL layers for the needed Shelby tables, and new methods in several of the BLL Classes along with some Data Access methods to go with them.

Fortunately, Shelby stored its data in a SQL Server database as well, so I was able to shutdown SQL server on our Server computer, make copies of the database files, re-start SQL server, bring the copied files to my computer, and attach them to my local SQL Server Express edition. Thus I can work with the Shelby database without having to connect to the actuall database on the server, and thus risk data, or kick other people out.

I may eventually work on a way to move updated data back and forth, but for now, getting data out of Shelby and into the new system is enough of a challenge.

Tuesday, July 29, 2008


Today I finished up the bulletin for next Sunday and worked on the BLL and started the presentation layer for the Open Source Church Management System named Hill CHMS I am working on building for Chapel Hill.

I need to AJAX enable the site before I can go much further. I want admins to be able to start typing in a last name and have a list of choices appear below, with the list getting smaller as more letters are typed. I know this is possible with AJAX, I just don't know how hard it would be to actually do. If I can't do this right away I will settle for a list that populates when a button is hit.

I need to think of this in terms of versions, with version one just working and later versions having more features.

Monday, July 28, 2008

Today's Update

I know no one reads this, or really cares about the Church Management System I am working on at the moment. I suppose it is just my geekishness that makes me want to post all this here.

Today after getting all my other Church work done I worked on the CHMS and did the following"

Created tblContactMethods to hold of all things contact methods.
Created tblMembershipStatuses to hold membership statuses.
Created table adapters for these two tables.

I had forgotten to add these to the original database map, they connect the the people table

Changed tblPeople and re-created its table adapter.

I need to talk to George Retter, who is doing our Jump In - get people involved ministry here at Chapel Hill before I go any further.

Friday, July 25, 2008

More table images

Here are the images from some more tables for the CHMS

Business Logic Layer

Free Open Source Church Management System Business Logic Layer

Much of the basic logic for my BLL's comes from the following tutorials. ASP.NET Data Access Tutorials

Here is the updated code for the Families BLL

Imports Microsoft.VisualBasic
Imports FamiliesTableAdapters

Public Class FamiliesBLL

Private _theAdapter As tblFamiliesTableAdapter = Nothing

Protected ReadOnly Property Adapter() As tblFamiliesTableAdapter
If _theAdapter Is Nothing Then
_theAdapter = New tblFamiliesTableAdapter()
End If

Return _theAdapter
End Get
End Property

(System.ComponentModel.DataObjectMethodType.Select, True)> _
Public Function GetFamilies() As Families.tblFamiliesDataTable
Return Adapter.GetFamilies
End Function

(System.ComponentModel.DataObjectMethodType.Select, False)> _
Public Function GetFamilyByID(ByVal FamilyID As Integer) _
As Families.tblFamiliesDataTable
Return Adapter.GetFamilyByID(FamilyID)
End Function

(System.ComponentModel.DataObjectMethodType.Insert, True)> _
Public Function NewFamily( _
ByVal FamilyName As String, ByVal FamilyDescription As String, _
ByVal SalutationID As Integer, ByVal Salutation As String, _
ByVal Address As String, ByVal City As String, ByVal StateID As Integer, ByVal StateName As String, ByVal ZIP As String, _
ByVal HomePhone As String, ByVal FamilyCellPhone As String, ByVal FamilyEmail As String, ByVal ShelbyFamilyID As Integer, _
ByVal ImageID As Integer _
) As Boolean

Dim SiteID As Integer = 1

Dim TBL As New Families.tblFamiliesDataTable
Dim ARow As Families.tblFamiliesRow = TBL.NewtblFamiliesRow()

ARow.FamilyName = FamilyName
ARow.FamilyDescription = FamilyDescription

ARow.SalutationID = SalutationID
ARow.Salutation = Salutation

ARow.Address = Address
ARow.City = City
ARow.StateID = StateID
ARow.StateName = StateName

ARow.HomePhone = HomePhone
ARow.FamilyCellPhone = FamilyCellPhone
ARow.FamilyEmail = FamilyEmail

ARow.ShelbyFamilyID = ShelbyFamilyID

ARow.SiteID = SiteID

ARow.Created = Now()
ARow.CreatedBy = HttpContext.Current.User.Identity.Name
ARow.LastEdited = Now()
ARow.EditedBy = HttpContext.Current.User.Identity.Name

Dim rowsAffected As Integer = Adapter.Update(TBL)

Return rowsAffected = 1
End Function

(System.ComponentModel.DataObjectMethodType.Update, True)> _
Public Function UpdateFamily(ByVal FamilyID As Integer, _
ByVal FamilyName As String, ByVal FamilyDescription As String, _
ByVal SalutationID As Integer, ByVal Salutation As String, _
ByVal Address As String, ByVal City As String, ByVal StateID As Integer, ByVal StateName As String, ByVal ZIP As String, _
ByVal HomePhone As String, ByVal FamilyCellPhone As String, ByVal FamilyEmail As String, _
ByVal ImageID As Integer _
) As Boolean

Dim TBL As Families.tblFamiliesDataTable = _

If TBL.Count = 0 Then
Return False
End If

Dim ARow As Families.tblFamiliesRow = TBL(0)

ARow.FamilyName = FamilyName
ARow.FamilyDescription = FamilyDescription

ARow.SalutationID = SalutationID
ARow.Salutation = Salutation

ARow.Address = Address
ARow.City = City
ARow.StateID = StateID
ARow.StateName = StateName

ARow.HomePhone = HomePhone
ARow.FamilyCellPhone = FamilyCellPhone
ARow.FamilyEmail = FamilyEmail

ARow.LastEdited = Now()
ARow.EditedBy = HttpContext.Current.User.Identity.Name

Dim rowsAffected As Integer = Adapter.Update(ARow)

Return rowsAffected = 1
End Function

(System.ComponentModel.DataObjectMethodType.Delete, True)> _
Public Function DeleteFamily(ByVal FamilyID As Integer) As Boolean

Dim TBL As Families.tblFamiliesDataTable = _

If TBL.Count = 0 Then
Return False
End If

Dim ARow As Families.tblFamiliesRow = TBL(0)

ARow.LastEdited = Now()
ARow.EditedBy = HttpContext.Current.User.Identity.Name

ARow.Deleted = True
ARow.DateDeleted = Now()
ARow.DeletedBy = HttpContext.Current.User.Identity.Name

Dim rowsAffected As Integer = Adapter.Update(ARow)

Return rowsAffected = 1
End Function

(System.ComponentModel.DataObjectMethodType.Delete, False)> _
Public Function DeleteCompletly(ByVal FamilyID As Integer) As Boolean
Dim rowsAffected As Integer = Adapter.Delete(FamilyID)

Return rowsAffected = 1
End Function

End Class

Wednesday, July 23, 2008

Today's Update for the Church Management System

Today's Update for the Church Management System

Today I created table adapters for most of the tables in the church management system, and also made images of the tables for documentation.

Here are some of the images of tables in the system.

Sunday, July 20, 2008

Today's Updates to the Church Management System

I think I will call the CHMS "Hill Church Management System", at least for now.

I need to eventually re-do some of my existing code base to make it faster, and eliminate any copyrighted code so I can distribute this system.

Today I:
Created tblGroup positions to hold info on the various positions people can hold in A group, such as leader, facilitator, member, former member.

Created tblGroupTypes to hold info about the various possible group types. There are a lot of these Whole Church, Commitee, Small Group, Wednesday Night at the Hill, Children's Sunday School, Adult Sunday School, etc...

Created tblLocations to hold locations used by the Calendar and to denote where groups meet.

Created tblLocationMapping so that I can have locations that map back to multiple other locations for purposes of seeing if a room is busy. For instance, the basement at Chapel Hill might be listed as a location "Lower Level" but would actually comprise many smaller locations that would be busy whenever the entire basement is busy.

Created tblEvents to hold information about events for the calendar.

Worked on this from 4:30 - 5:15

Friday, July 18, 2008

Requirements for Open Source Church Management System

Requirements for Open Source Church Management System

The new CHMS must:
• Allow staff to view and edit information for individuals, families, groups, small groups, ministries, calendars, individual spiritual gifts and abilities.
• Allow ministry and small group leaders to login and communicate with people in their small group; create events for their ministry, etc.
• Allow people to sign up for a login, and edit / enter their own information, plus allow them to indicate interests in different ministries.
• Have a process for tracking and managing tasks/processes (i.e. a new visitor process: who follows up with them, when etc...)

Change Log for Open Source Church Management System

Change Log for Open Source Church Management

Created tblFamilies Table, Table Adapter, and Business Logic Layer

It took 40 minutes to create all three of these. There are around 20 tables in the current design leading to 13.333 etc hours of work if every table takes 40 minutes. This still leaves the pages to actually put data into these tables.

Created tblPeople and PeopleInFamily tables, also edited tblFamilies to add some fields, including ShelbyFamilyID to be used to import date from Shelby.

Deleted PeopleInFamily table, Added FamilyID and FamilyPosition fields to tblPeople and removed a few fields duplicated from tblFamily. I am designing as I build this.

Created tblStates, found a list of US states with postal abbreviations and imported this data into tblStates.

Created tblFamilyPositions, I have had to re-consider what data goes in this table. I don’t really like what using Head of Household says about hierarchy in families, but only having husband and wife does not work for single people who live alone.
Created tblImages, to reference images used by the program.

Created tblGroups to hold information about all kinds of groups.

Open Source Church Management System

With the current financial situation at Chapel Hill I don't think they are going to be willing to shell out $3000 for CCB any time soon. However, I do think the pastor see the value in going to a web based Church Management System that is one centralized place where we store all our information, that can be accessed from anywhere.

So, given the opportunity and the need, I have started working on building a Church Management System "in house" using and Visual Basic. The plan is to post this to the Microsoft Open Source system so other churches can use it.

I am going to be posting my logic, progress, change logs, etc... here just because.


Sunday, July 13, 2008

The Human Brain is Amazing

I don't think Chapel Hill is going to shell out for CCB so I am looking into building our own web based Church Management System from scratch.

Yesterday's planning issue had to do with the calendar part of this system. I want small group leaders to be able to add events for their group to the calendar, which can then be approved later by an Admin if they require a room here at Church.

One of the features of the scheduler should be a warning if someone is going to overbook a room. So I was trying to figure out the best way to tell if two events are taking place at the same time. Here is where the human brain amazes me. We can just tell intuitively if two events overlap without really thinking about how we know.

I ended up deciding to test to see if two events do NOT overlap and deciding that they must overlap if they do not NOT overlap. This may seem complicated but there are four different ways events can overlap and only two ways they can NOT overlap.

Monday, June 9, 2008

New Layout for Chapel Hill Website

Today I changed the layout for the Chapel Hill website, here is a link Chapel Hill Church Wichita I added the green area streching to the sides and the silver bar for the links, along with putting the links along the top, rather than the left side.

I am trying to increase our google page rank for people searching for "church wichita" so if you would like to add a link to Chapel Hill with the text "Chapel Hill Church Wichita" that would be appreciated.

Saturday, June 7, 2008

Three Weeks with Kati and an empty house

Kati has been with us in person for 3 1/2 almost 4 weeks now. What a blessing! Kristen took Kati to a baby shower for Quin from church today. Quin is expecting in either July or August (I am a guy, I'm not good with dates OK :-) never have been) The house feels empty without either of them here, especially with both dogs outside.

Kristen asked me to go get dinner while she was gone, she was feeling like a burger so I think I will grill out. Maybe I'll pick up some steaks as well if they are affordable.

Monday, May 19, 2008

Baby Girl

Our little girl, Kati Elizabeth Rowley was born last Tuesday, May 13th, 2008 at 6:16PM
She weighed 8lbs 3oz and was 20 inches long.

We wanted a home birth but ended up transferring to Wesley near the end because Kristen wasn't pushing hard enough to get that little girl out. (I think she may be stubborn like her parents.) So they put Kristen on some pitocin and about an hour and a half later we had Kati.

We came home Tuesday night around 11pm.

Sunday, May 11, 2008

Waiting on Baby

We are still waiting on Baby to arrive. We are going to induce Kristen with casteroil again tomorrow and our midwife says our little girl should arrive sometime on Monday.

Wednesday, May 7, 2008

Our Senior Pastor is blogging

Jeff Gannon has started blogging. This is cool as I think most if not all pastors in American Churches should blog to better reach and communicate with people in this electronic society.

Tuesday, May 6, 2008

Job interview

I had a job interview this morning and it looks like they are going to hire me. This is a part time job to go along with my work at Chapel Hill. A big thank you to everyone who prayed for me or suggested job leads.

Monday, May 5, 2008

Video from one of my new favorite Bloggers

It is official, I am blogging about blogging, or at least about other people who blog. Still, check out this video from Tony Jones book "A New Kind of Christian" and here are links to the first two videos in this series.

Saturday, May 3, 2008

Being Missional

I often wish Chapel Hill put more emphasis on being "missional", which to me means joining the "God of the Oppressed", in working for the redemption of this world by ministering to the poor, the friendless, and the needy. I personally am less concerned about witnessing to people in order to save their souls, and more concerned about loving "the least of these", and helping those in need. As a side benefit people WILL come to know Christ when they see our love in action.

One problem I face as a staff member of Chapel Hill is where to draw the line between actions taken as a staff member, and actions taken as a member of the body of Christ.

I did not grow up as a Methodist, and am in some ways I am still not one at heart. I strongly believe that there is no Ontological difference between the so called "clergy" and "laity" (terms which aren't even biblical as far as I know). I really believe in the "priesthood of all believers" something the UMC claims to believe but, in my opinion, denies by their actions in only letting certain people teach in Church, or give communion, or baptise, or even marry people.

Because of this belief I sometimes struggle with wondering what my role should be as a paid staff person at a Church, since I am not even sure I think churches should have paid clergy, let alone staff. The best answer I have found is that our role should be "to equip the people of God to do the work of the ministry." If this is true, as I believe it is, then the staff and ministers need to be very careful not to takeover doing the work of the ministry for the people of God. Hence my dilemma, in not knowing where to draw the line between doing ministry and empowering ministry.

Being on staff brings with it a fair bit of power, and the temptation would be to use that power to move the Church and the people in a direction I want them to go, instead of trusting God to move the Church and the people in the direction He wants them to go.

Friday, May 2, 2008

Solution to Calendar problem

I solved my calendar problem today and the calendar for the website is up and live at

One of the requirements I had for a calendar on the website was that the computer automatically do all the updating based on events from our current Shelby calendar. I struggled and struggled to be able to make this happen, and in the end it just wasn't going to be worth the time or effort to create this in order to not have to update the calendar every week or so. The final straw was that the start times in the second table I needed to export were not stored as a date time value. (see my previous post on this.) So I gave up and decided to use Google calendar for our website. Shelby has a feature that allows a person to export a calendar date range to Excel and I then modified the excel doc to have the correct column order and headers, saved as a csv file, and imported this into google calendar. From there adding the google calendar to our website was simple.

Thursday, May 1, 2008

Exporting calendar data for the website

I have been struggling with a programming problem for work this week. For our church management system we use Shelby Systems V5. This is a powerful program but it is not very user friendly or overly easy to use. Also it is a server based software system that can only be accessed at the church by people with a user ID / password, and enough training to know how to use it. We have been using Shelby since before I came on staff and we still do not really have a true handle on it, mostly because with a system like Shelby you need one person to be full time dedicated to the software, learning it, updating it, training others on how to use it, etc... and we do not have that person.

My preference would be for Chapel Hill to move to a web based system that would be easy and intuitive to use, and would require very little training for volunteers to use, but we have a lot of money invested in Shelby, and that makes it hard to justify a change. So we deal with what we have.

Right now I am trying to bridge the gap between our Shelby calendar system which we use to schedule church events (and make sure we do not over schedule the building) and our website, which really needs to have a calendar of events for the church on it.

Shelby stores event data in a SQL server database in several tables. The ones I am interested in are a table to store the names of the different locations that events take place, a table for one time events, and a table for re-occurring events. It is this last table that is causing me the big problems, as each re-occurring event is only listed in the table once, along with info on the date it starts happening, the date it stops happening, and how often in happens.

What I need is a composite table of the tables containing one time events, and the table containing re-occurring events, only with each event instance listed as its own record. Shelby creates this composite table on the fly whenever it is needed using an SQL server stored procedure. I have looked at this solution, but my T-SQL is not good enough to figure out how to copy and modify it for what I need, and I am not sure this would not be a licence violation anyway. So I am left with either doing a manual export of the calendar data each week and then importing this into my website database, or figuring out some programmatic way of combing these two tables to get the data I need.

Tuesday, April 29, 2008

Perfect Church

What would your perfect church be like?

I have been thinking about this a bit, being on staff at Chapel Hill I get to see and experience the great things about CHF and the not so great things. Seeing a church from the inside can sometimes burn you out on church because you see all the ways the Church and people are disfunctional and just very human.

The other part of my thinking has been caused by my struggling with the question of my being called to the ministry and what this really means.

Some things that bother me about CHF are less a problem with CHF and more and issue of my not agreeing / fitting with CHF and more especially Methodism in general.

My perfect church would:
  1. Truly believe in and practice the priesthood of all believers. To the degree that we would not really differentiate between those on staff and those not on staff at the church. Anyone could baptize, give communion, marry people (we would have to work this out with the laws of the state) etc... and not just one or a very few people would get to teach in our meeting.
  2. Be a VERY communal place. Community would be central to the life and DNA of the church.
  3. Be good for the world and our community.
  4. Be a place that preaches and practices grace.
  5. Be a place that believes in hope for the world.

I will add more to this later.

Sunday, March 9, 2008

Starting Blogging

Hellow World

Jesus Loves You

Our Due date is May 11, 2008

Those are the important headlines in my life right now.