On Hiatus

Due to an unbelievably busy schedule, I'm putting my plans for Doxology Software on hold for a while. There is a lot more that I could say about this, but let's just leave it at this:

  1. Unless the LORD builds the house, those who build it labor in vain. Unless the LORD watches over the city, the watchman stays awake in vain.
  2. It is in vain that you rise up early and go late to rest, eating the bread of anxious toil; for he gives to his beloved sleep.
  3. Behold, children are a heritage from the LORD, the fruit of the womb a reward.
  4. Like arrows in the hand of a warrior are the children of one's youth.
  5. Blessed is the man who fills his quiver with them! He shall not be put to shame when he speaks with his enemies in the gate.
    Psalm 127 (ESV)


Let me re-introduce myself

It's funny. I've had this blog for over a year now, but I still feel as though I need to introduce myself to you again. I've kinda neglected this blog. The poor thing has embarrasingly few posts, and my readership consists of me...and maybe my wife if she's really bored. But this has got to change. There are tons of ideas rattling around in my head that I really want your input on, and that's never going to happen unless I start a-postin' (I can say it that way because I live in Tennessee).

So, for the last time, let me introduce myself, and we'll get on with the (hopefully regular) business of blogging.

Introductions: Me and Doxology Software
My name is Doug Walker, and I live in Knoxville, Tennessee, USA. Doxology Software is my one-man software and consulting company, which I started back in 2004. Since I started the company, I've been busy primarily with web consulting work for churches and small Christian businesses.

It's always been my goal, though, to create and sell packaged software products for churches and ministries. I see so much potential for software in the church, and I'm just itching to get started. But before I do, I think it's important that we lay some foundations.

Toward a Biblical Philosophy of Church Software
While I'm excited about how software can help the church, I think it also has the potential to do more harm than good. While it's supposed to save us time, I've seen it consume hours and days out of even people's time, making them less productive in the ministry than they were before! How do we make sure that software occupies its proper place in the church? I think it starts with having the right theology about the church and the right philosophy about software.

Over the next couple of weeks, I'm going to be explore these two topics, and I'd really love to hear your comments. Please join me! You can subscribe to my RSS feed so that you'll be sure to know when I post next.


Joel Analyzes Great Design

Joel Spolsky, whose company created the program I use to run this web site, is writing about software design again. His first book User Interface Design for Programmers is an essential volume on what makes software usable and useful (there is a difference). Now, his new series of articles, entitled Great Design, goes beyond usability (which will only take you so far as a good design) to analyze what makes a design great, whether the design be software or soda cans.

He's already written three articles that make up the introduction, so now's the time to catch up! There are lots more articles to come. Highly recommended reading!


ASP.NET Server Control Parsing

Being self-taught in .NET is both a cool thing and a frustrating thing. It's cool because it's cool to be self-taught in anything...it's a bit of a confidence boost. I haven't had an hour's worth of .net training. Everything I know about .NET I've learned on my own. That's kinda neat, but there's a real downside.

See, when you're self-taught, you learn to solve the problem at hand. It's a rare thing to find someone who is self-taught who just picks up a book on a subject, reads it cover-to-cover, answers the questions at the end of each chapter, and is an expert. Even rarer is the person who sets up a long series of learning engagements to master the subject in a disciplined way. Instead, the self-taught individual usually jumps into the problem, wanders around in 20 different books and web sites, and eventually stumbles across enough answers that he solves his problem.

The downside? There's a lot of .NET that I have never been exposed to. I can work in self-taught mode for months and never see some of the most common aspects of .NET because they don't happen to meet the need at hand. Then, when the occasion finally surfaces in which I need to know those things, I feel a bit sheepish that I say I know .NET but don't know something basic that a class attender probably learned on day 2.

Today I had one of those experiences.

Probably anyone who does ASP.NET development knows how a server control parses the contents between its tags. But I didn't. I knew there had to be a way to get at the contents between the tags, but I was at a loss for how that actually happened, much less how to make my own custom control behave the way I want it to.

Actually, it's quite simple. By default, the ASP.NET page parser assumes that anything between the tags of a server control corresponds to a property of the server control. This works well for things like header and footer templates. If I had a server control called BigList and it had a property called HeaderTemplate that defined how its header should be built, the tags would look something like this:

<BigList id="bigList1" runat="server">
<HeaderTemplate><b>Header</b></HeaderTemplate>
[Other Stuff]
</BigList>

But here's where it gets interesting. you can turn that default behavior off and customize how the ASP.NET page parser looks at the contents of a tag. There are three quick steps:

  1. Add the ParseChildren attribute to the declaration of the control class and set it to false. Doing this tells the page parser to assume that everything between the tags is a server control. What's really nifty about this is that if there is any html between the tags that isn't a server control, the page parser turns that html into a literal control.
  2. Override the AddParsedSubObject method in the control class. The page parser calls this method on the server control each time it parses a new server control (or literal control). In this method, the control can analyze the type of object that was parsed and decide what to do with it. Normally, the server control just adds the newly-parsed object to its own Controls collection, and it will be rendered as a child control. By overriding this method, though, you have full control over what gets put in the Controls collection and what doesn't.
  3. Override the RenderContents method of the server control to change how the control should be rendered.

Here's a really quick (and kinda lame) example:

Say for some reason you wanted to grab the first bit of HTML inside the BigList tags and use it as the header, instead of defining a template for it. First, you would set the ParseChildren attribute to false in the source code for BigList:

[ParseChildren(false)]
public BigList : WebControl {
...
}

Then you'd override the AddParsedSubObject method. The point here is to grab any literal controls and use them as part of the header:

protected void override AddParsedSubObject(object obj) {
    // Grab literal controls and add them to the header
    if (obj is LiteralControl) {
        LiteralControl lc = obj as LiteralControl;
        this.header = this.header + lc.Text;
    } else {
        // Add all other controls to the child Controls collection
        if (obj is Control) {
            Controls.Add(obj as Control);
        }
    }
}

Then your tags in your aspx page might look like this:

<BigList id="bigList1" runat="server">
<b>Header</b>
[Other Server Controls]
</BigList>

This would accomplish getting the header set to <b>Header</b>, but it still wouldn't be rendered. To get it to render, you just override the RenderContents method:

protected override void RenderContents(HtmlTextWriter output) {
    // Write header
    output.WriteLine(this.header);

    // The rest is taken care of by the child controls
}

And with that, you've output your header.

I haven't yet exhausted the possibilities. I've only begun to show them to you. You can take this line of development pretty far and do a lot of interesting things with it (one of which I hope to show you soon). But if that isn't enough to make your server control behave the way you want it to, you can create a class that knows how to parse the content between your server control's tags and create objects by itself. But I'll get to that another day. I'm tired, and I need to go to bed!


SMYC06: Coming Soon

I had a meeting today with a returning client: SMYC. I've been working on their web site for years, and it's always a blast. They've got some great ideas for this year's site. And we're thinking we'll be updating the visual design as part of the rework. Woohoo!

The great thing about working with other believers on ministry projects is that you really get to see how technology is helping a ministry. Sometimes when I'm in code mode and I don't emerge from my home office for weeks, I start thinking, "is all this work doing anyone any good?" The great thing about meeting with clients is that I get to see exactly what good God is accomplishing through this work!

That's a thrill!


I haven't fallen off the face of the earth

Wow, it's been a busy spring! I was a bit ashamed to look back on my blog and see that I haven't posted since February! Somehow, I think I'm missing the mark that Eric Sink has painted on transparency for a software company.

In that vein, I thought it would be good to let you in on what's been going on lately with Doxology Software. My first post had a rather poetic discourse on what I was going to cover in my blog...the problems with church software, how we'll fix it, etc. It's painfully obvious from the meager number of posts and their rather mundane titles that none of these topics has been discussed here on the blog. I figured I should tell you why.

The first problem is a lack of time.

Well, let me back up. First, I should tell you that all those things I discussed in my first post are very much on my mind. I have a lot I want to say about them. I want to hear from you about them. I have big dreams that I hope are from God. I have ideas I'd love to discuss; I have opinions that I'd like to share; I have ears that are itching to hear your thoughts. The problem is time...actually a lack of time.

Right now Doxology Software is just me. While that keeps costs down ;-), it means that I'm really, really busy. I have to do everything around here. :-) That means I've had little time to post on my blog.

Lately what's keeping me busy is some consulting work. I'm doing some web site building for a few ministries and companies here in the Knoxville area. This brings in money so that I can buy the fuel I need to do the big dreamy stuff that I haven't gotten to talk about on my blog. Hopefully as these commitments are met, I'll have more time to devote to discussing that dreamy stuff here.

The second reason is that I've been struggling lately with God's will. Without going into too many specifics, let it suffice to say that I just want to be 100% sure that this company is his idea and not mine before I get too far into it.

Have you ever wanted something so badly but you weren't sure that it was the right thing for you to have? That's the way I've felt about Doxology Software for a while now. I think God has gifted me with some software engineering skills that He wants me to use for His glory. But I don't want to just assume that because I love something, it's what He wants me to do.

Look at David. David wanted desperately to build a temple for God's glory, but God shut the door on David because David was a man of war. God instead wanted David's son Solomon to build his temple. Paul is another example. He wanted to go throughout Asia Minor to share the gospel, but God closed that door on him. Even Jesus' own disciples were driven by ambitions of being the highest-ranking politicians in Jesus' earthly kingdom...a task that was never to be theirs.

My point is this: if I'm going to invest the necessary time to run Doxology Software well, then I want it to be God's idea. I want it to be obedience to God's will done in God's way and in God's timing.

So, if you're thinking that things are moving a bit slow, you're right. They are. But before I open the throttle, I want to be sure I'm pointed in the right direction!


SMYC Goodies

For those of you who don't know what SMYC is, let me fill you in. It's an acronym for Smoky Mountain Youth Conference, a conference for Christian teens and youth leaders that I have attended since I was but a lad. Back when I was a student, I was on the receiving end of all the preparation and hard work that went into it...and did I ever love it!! Ever since I graduated from High School, though, I've been involved on the giving end: either helping behind the scenes, building the web site, or teaching seminars.

E-Ministry 101: Planning a Solid Ministry Web Site
This year, I spoke to youth leaders on a topic that is very close to my heart: using the Internet for ministry. With only 40 minutes at my disposal, I thought that planning a ministry web site would be the most beneficial discussion we could have.

So often I see ministry web sites done with what looks like little or no planning. The reason it looks this way is that the people creating the site didn't have a target, and therefore ended up hitting no one where they wanted to. My seminar was an attempt to outline the ministry web site planning process so that people building sites can take the first step correctly and decisively.

Handouts
I thought I'd make my handouts available here for anyone to read. You can download them by clicking the links below.

  • E-Ministry 101: Planning a Solid Ministry Web Site - Handout
    This is my copy of the handout that everyone got when they came to the seminar. The ones they got had lots of blanks for them to fill in. This one has the blanks already filled in for you.
  • Web Site Needs Assessment Worksheets
    These are worksheets that help you answer two of the most important questions in web building: who am I building the site for, and what am I going to put on it. These two questions of audience and content are absolutely essential to planning an effective ministry web site.

I would love to answer questions you may have about these handouts, the information in them, or how to use the worksheets effectively.


The Odds Are Against Me

Tonight I finished reading The Business of Software, by Michael Cusumano. I asked for this book for Christmas because it had such great reviews from the sites I visit most often that I thought I couldn't lose. I was not disappointed. It was a great book, dense with insight into the world of the software business.

One sentence from the book haunts me, though:

Nine out of ten high-tech startups fail.

What?! Nine out of ten! Why, that's 90%! (Don't my math skills impress you?)

At first I thought that sounded high. But the author decisively backs up that statement with case study upon case study of software businesses that have failed.

So how do I get into that 10% that survive?
I have to admit that when I read that, my mind went into overdrive wondering how in the world I could possibly get into that 10% that survive. My brain was about to explode and ooze out my ears when God reminded me of something.

This is His business. It is my responsibility to be faithful to Him and to the commitments He has brought into my life. It is not up to me to stress myself into a drooling frenzy figuring out every little detail to ensure that I can do it all by myself. That's not the biblical model at all. I am to work hard at obeying God with His help, and He will advance His kingdom through our efforts. This business is no different. If I will just obey His leading in this business, it can be one more push to advance the kingdom.

But what about business knowledge? Am I saying that I don't have to have any at all? Am I saying I don't have to work at running the business well? Am I saying that it's not important to keep up with market trends and do market research and refine the development process and work on customer relationships? Is that what I'm saying? Just throw all caution and concern to the wind, find a comfy recliner, and sit there and wait for the money to roll in because God's gonna take care of it?

Not at all. I'm supposed to work hard at being faithful to the calling God has given me. But if this business has any hope of making it into the 10% that survive, it must be God's business. God will bless God's plan...not mine. He will implement His vision...not mine. It's up to me to bring this business--not to mention the rest of my life--in line with His plan and His vision. Then, whether the business "succeeds" or "fails" it will accomplish what God wants it to.

What could possibly be better than that?


It's Official

Well, it's official. Doxology Software is finally on the books as a "real" business in Knox County and the city of Knoxville, Tennessee. Today I braved the icy cold weather and trekked accross downtown Knoxville on foot so that I could get my tax licenses. I never thought I'd be so happy that I get to pay taxes. :-)

Though I just got my licenses today, I have been doing business since August, 2004. In fact, the business has kept me so busy that I haven't updated my blog in over two months. That's no good. Hopefully I'll be able to keep up a little better now. Only time will tell.


Beginnings

Hello, and welcome to Doxology Software! My name is Doug Walker. I'm the founder, CEO, president, accountant, lead engineer, and janitor. I'm all those things because as of today, Doxology Software is just one person. Me.

I've been wondering for a long time how I should present this business to the public. For years it has occupied my thoughts, my dreams, and my fears. While I realize that it's brand new to you, it's not to me. To me, it's a vision: a grand, sweeping dream of software products and services that can help the church see new levels of effectiveness and relevance.

But in reality, right now it's vaporware. There is no demo to download. There are no screenshots to show you. So how do I present it to you?

I've thought of all the "normal" ways, like writing vision statements and functional specifications. Surely, those are important and I'll do that soon enough.

I thought it might be much more interesting, though, to just invite you along for the journey. See, this isn't a startup as much as it's a journey. I've been on this road for at least 10 years already, so I have a lot of backstory to share with you. Like a cross-country trek, God has meticulously pointed me to the next step all along the way...and now I want to invite you to join us.

Where are we going? Well, God only reveals one step at a time, so even I'm not 100% sure where we'll end up. But the direction is sure. We're headed to a church whose staff is informed and whose congregation is connected like never before. We're headed to a church that spends less and less time on technology and more and more time meeting people's needs and pushing them on toward Christ-likeness. In short, we're headed to a church empowered by software instead of encumbered by it.

How do we get there? Well, that's what I want to share in this blog over the next few months. Specifically, we'll talk about

  • What's wrong with church software?
  • How do we fix church software?
  • How is Doxology Software going to be different?
  • What is Doxology Software going to do to help?
  • When will there be a real product?

So join me. I've got a lot of ideas I want to share, and I would love to hear yours!

Share This Page
printer iconPrint this page email iconSend it to a friend
My Reading List