Invisible upgrade

I pushed a new version of ROA today. No new features,  just some internal improvements that will power the next phase of growth. If you notice something broken, please let me know.

ROA site and ROA blog united at last (oh, and it’s live)

ROAblog and the ROA main site are hosted at two different places: WordPress.com and Google AppEngine. But using a little CSS wizardy, I’ve been able to make them look identical. The WordPress.com site does not allow custom themes, so I had to get a little creative to get the links and nav bar on the WordPress page. I used text widgets in the sidebar and “moved” them into place with CSS. The footer was trickier, as the same technique could not move it out of the sidebar, but those of you who subscribe to this blog via email have already discovered the secret: I created a “sticky” post tagged with “footer” and used CSS to move it to the bottom of the page.

At any rate, you can now enjoy a seamless experience between the site, the app (which is live, by the way!), and the blog.

Almost to the finish line

Sorry for the long silence. I have been coding furiously to deploy a decent-looking (and functioning) public beta, and I’m finally down to the wire. Expect a first look next week. No matter how hard I try to account for unknowns, learning curve, etc., in software estimation, I always “misunderestimate.” If you’ve been around software development at all, you will recognize this as a universal phenomenon. I think it’s due in part to the fact that if we had known at the start of a project what we know by the end, we would never have started! Because software is less tangible, than, say, building a bridge, many folks (including developers) think, “how hard can it be?” Perhaps we should think about software more like building bridges. It takes months and years to lay a proper foundation, pour the pillars, raise the beams, pave the road. And in software, you’re almost always working with something new, and therefore have to throw the first one away. True to form, I’ve written most of ROA twice now.

There are currently over 7000 lines of code in my “little” project. I did not see that coming. The learning curve was steeper than I thought, although in retrospect it was silly to think I would be as comfortable with a brand new platform within a few months as I am in areas where I have many years of experience. And the amount of code required overall is much greater than I thought. Almost every week, I think, “Finally, I’m done building foundation, I’ve got patterns I can copy, and now I can just turn the crank.” And then I find some new wrinkle that requires still more infrastructure code. By the way, I’m really, really pleased with my latest bit of infrastructure: a queuing, batching, caching dispatcher just like the one Ray Ryun mentioned in his Google I/O presentation last year. It solves architectural problems in GWT that I’ve been wrestling with since Day One.

But I digress.

I have enjoying watching a bit of the Winter Olympic games these past couple weeks, and have especially admired the athletes’ determination to “keep on keeping on.” Starting is easy. Finishing is HARD. I struggle daily, sometimes hourly, with discouragement and motivation to finish. It’s so much bigger than I thought, and I’m only one man. I can’t do it by myself, but with God, all things are possible. Lord, teach me to rely on the Holy Spirit to supply what is lacking in me.

Startups are quiet

Do you know what it sounds like inside a one-man startup?

The sound of one hand clapping.

I hear bits and pieces from a few friends, but basically, nobody knows about ROA yet. Which is because I haven’t done an effective job communicating, of course. Which is due to two major factors:

  1. A blog is the wrong format to communicate with most of my friends and family. Only one or two friends use a blog reader like Google Reader. The rest use email. I haven’t wanted to spam everyone, so I haven’t maintained a ROA mailing list. Thankfully, WordPress has recently solved this problem for me. You can now sign up to get these updates via email (see the sidebar on the left).
  2. I’m a perfectionist. I haven’t wanted to say much about ROA until I could point you to a beautiful, polished Web site where you can sign up for yourself, your church, etc. But it takes time and money to get there, and meanwhile, well, it’s quiet. It’s not just that I’m a perfectionist. There are real hazards to releasing something too early, especially something public and free.

Given that my progress has been much slower than I would like (it’s software, what can I say?), and given how quiet it’s been, I have been tempted to give up. But I’m not giving up, for two reasons, yea, three:

  1. I was and am convinced that God has called me to this work. He has given me the ability (however slow I may be) and the vision for it, and by His grace, I will complete it.
  2. Christ’s Church could really use this tool just now. Almost daily now, I think, “Sure would have been nice to put that in ROA.” Emailed prayer requests, our church directory, upcoming church events: all are planned for ROA. Just…have…to…get…there. Incidentally, also daily I receive my daily prayer list via email from the beta version of the software and I feel selfish for not letting everyone in on it yet.
  3. If I didn’t finish what I started, I would never be the same. Even if no one ever signs up, all the time and money I’ve spent on ROA are not wasted…IF I finish. If I don’t finish, it’s all a waste. If I don’t finish, I would forever question my own ability to complete anyone’s Web / database application. If I don’t finish, then I have given up on the strongest sense of divine calling I’ve had in my entire life. The cheesy motivational posters are right on this count: the only true failure is a failure to finish the job. This is a biblical idea: God doesn’t call us to succeed. He doesn’t call us to do what only He can do. He calls us to obey, to be faithful, to FINISH! (As you may have guessed, I’m writing mainly for myself here–I use my own blog as a motivational tool).

So what’s holding it up? Lots of little stuff. Putting up a Web page is one thing. Offering a Web service to the public is quite another. Think sign up, sign in, sign out, learn more, join a group, create a group, subscribe, unsubscribe, not to mention terms & conditions, and of course, pay / donate. And then a mandatory upgrade comes out on some critical component, and I lose a day getting the new version working. When you’re already overdue and struggling to go live in 30 days, a lost day really hurts. There’s no one to share it with, no one to clear the jam so you can move on.

And of course, I’ve been wearing a lot of hats: front-end Java coder, back-end Java coder, DBA, HTML / CSS coder. Don’t get me wrong–I love doing all this stuff, but when I’m working on the back end, there’s no one working on the corresponding front end. Which means everything moves…slowly.

I’ve tried soliciting volunteers; however, most capable folks already have full-time jobs so aren’t able to contribute much. I could go faster if I hired someone, but can’t afford it out of my own resources. Should I try to raise funds? I’m incorporating as a not-for-profit organization for this purpose, but again, I’d like to have something up and running before I ask for money. It’s a chicken-and-egg problem.

Which brings me to my challenging quote of the day:

Go after a dream that is destined to fail without divine intervention.

— Mark Batterson (Chase The Lion)

I’m there! ROA is destined to fail without divine intervention.

THEREFORE, would you pray for me, for perseverance and WISDOM at this juncture? I covet your prayers.

Your Web / database developer for Christ,

David Chandler

Introducing blog.RememberOneAnother.com

ROAblog now has an official address: blog.RememberOneAnother.com.

Unfortunately, I learned I cannot host the top-level site here (RememberOneAnother.com) without changing my domain’s nameservers to WordPress. But this would prevent me from pointing other addresses in the domain to the Google AppEngine servers. Otherwise, I think I could have made it work using a custom CSS and the flexible Sandbox theme. So I’ll be using Google AppEngine to host the main site instead. That might be easier, anyway, as the CSS would have gotten pretty messy. Sometimes you just need to be able to edit a page…

ROAblog gets a facelift

I finally decided to host the ROA Web site on WordPress.com for the excellent content management system and great selection of widgets. Not to mention I’m tired of maintaining servers! In preparation for the imminent public launch, I shelled out $15 for the custom CSS option and modified the Digg 3 theme with the ROA logo. Also, I discovered that ROA has had an email subscription widget all along, which is great for ROA fans who do not use a blog reader like Google Reader. I’ll point the RememberOneAnother.com here shortly, and we be rollin’.

The daily email is really helpful!

I’ve been receiving the daily emails for several days now, and it does exactly what I had hoped: remind me to pray for specific people each day. Here’s a sample:

Your daily ROA for December 1, 2009

My Friends
==========================
Andrew

My Family
==========================
Rebekah
Anna
Karen

DI Bible Study
==========================
Hong

I don’t have a lot of people / requests in my dev database yet, but even with a minimal start, it’s already been a blessing to my prayer life, and I trust it will be to yours, too.