You Ever Have One of those Days…

Where you look back on everything at the end of the day and feel like you’ve been totally and utterly unproductive?

I’ve had several of those in a row now. I’ve set out with x, y and z on my to-do list and for one reason or another, most (or none) of them have gotten accomplished. I look back on what I’ve done, and there have been a bunch of small tasks, or things like familiarizing myself with pieces of code, but I haven’t actually “accomplished” anything tangible.

I’ve got Thursday and Friday off, so I’ve got to buckle down and get some things done… I need to get some coding done on a new project I’m working on, I need to get some blogging done here, and I need to get back to Gordon from NewsGator (no Gordon, I haven’t forgotten about you!) since it’s now been over a week since I told him I’d try and get him more detail about my problems the next morning.

To top it all off, I had to force myself away from the keyboard when I started writing an email to Ian (the Openomy guy) offering to write a PHP interaction class for the Openomy API… I guess there comes a point at which you just have to draw the line and start turning down projects, even if you think they’d be really cool and beneficial.

Who knows, if no one else has stepped up to the Openomy API-plate, maybe I’ll still slap something together… next month.

Maybe now’s the time to hire a secretary…

Post Meta

10-25-2005
Date
7:51 pm
Time
125
Views
263
Words
Comments
Comment Feeds

IVR Ponderings…

Since Michael ran off to Iraq to make money hand over fist and left us without a phone system nerd, I was the lucky one that got elected to pick up the slack and figure out how to modify our IVR phone enrollment system this year…

Well, as I look at this code, I realize what a cluster fuck this is. I really don’t know that it’s actually that “bad”, in the scheme of IVRs, but it’s certainly not what I’m accustomed to:

Work Enrollment IVR Screenshot

Now, imagine 50+ pages of that (if you printed it out at 70% size that is). All the lines are intertwined and looping back and forth over each other.

So I got started thinking… This is really horrible. How could we simplify this?

Well, if we modularized this code a little more, it’d certainly help. There are several areas that would easily lend themselves to this purpose.

At the very beginning, we set all our initial variables to null (so we don’t get old loop data). Since we loop, we’re repeatedly jumping back up to those, meaning about a dozen seperate lines all returning to the very beginning of the file. We could easily break this out into a seperate subroutine that could be called in-line each time we need to call it, instead of looping back to the beginning every time we need to null out variables.

We could also break out each enrollment “section” into its own subroutine. We’re letting the user select their Medical coverage, their Dental coverage, etc. etc.. Why not put each selection in its own subroutine? There’s really no reason we couldn’t clean up the base flow by eliminating all this extra stuff and simply calling its own subroutine.

After thinking about the ways we could split everything out into subroutines, I started thinking “There has to be a way I could do this with less effort on the IVR side…”

Well, Ajax instantly came to mind, since it’s the “big thing” right now in the blogging world. Sure we can’t actually use it on the phone system, but maybe we could harness the same type of idea.

In an Ajax app, we’re doing JavaScript on the client side, which calls back to server pages (like a PHP or ASP script) for all the processing. That page simply spits out the return text, and the Ajax / Javascript just spits this out on the page, with a very minimum of processing on its end.

Well, this idea could be applied to the IVR, couldn’t it? It has built-in XML support, so why don’t we have it call pages on our intranet server (enroll_ivr.php?type=MED&level=3&plan=1), which goes through the steps we need:

  • 1 – Check the validity of the input. If you can’t get level 4 with plan 2, spit out an error.
  • 2 – Poll the database. Either retrieve current coverages so we can tell people what they have right now, or insert data into the database to store their selected coverages.
  • 3 – Spit back result. Either an <error> segment in the XML, or a <result> segment, containing simple indicators of what to say back to the user.

So it really looks like this would work, making the system a lot easier for me to maintain in the future, at least for me. I imagine that this is a typical reaction for a new developer coming into a system. There are certain areas he doesn’t like or understand as well as others, so he tries to move everything towards the areas he understands. In this instance, I understand the line-by-line nature of a PHP script much better than the arrows-everywhere cluster fuck of this IVR system.

I guess the only problem now is timing. There’s not enough time to make these changes before the enrollment goes live… Hey, maybe I could get it done in time for next year’s enrollment…

Post Meta

10-20-2005
Date
6:40 am
Time
92
Views
651
Words
Comments
Comment Feeds

Caching a Thin Client’s Data for Offline Use?

As I continue to read through my backlog of Scoble’s posts (backwards), I find older and older stuff that peaks my interest. In this post, Scoble discusses the comments made by Jonathan Schwartz, Sun’s COO, which we’ve all probably heard by now:

Or finally, as I did last week at a keynote, ask the audience which they’d rather give up – their browser, or all the rest of their desktop apps. (Unanimously, they’d all give up the latter without a blink.)

Scoble provides a simple thick vs. thin client example: Outlook. The 2003 version of Outlook Web Access (the server-side web-based version of Outlook) kicks ass. It’s honestly almost exactly like the actual Outlook install. If we were running 2003 at work, you better believe I’d push like crazy to dump the actual Outlook client and have 90% of the company run it over the web. The only problem?

Yet I wouldn’t trade that for the real Outlook for anything. Why? Well, the real Outlook works offline. The real one is far easier to manipulate. The real one looks better. The real one doesn’t go away if I accidentally hit refresh (or, worse, walk out of network range).

This is a common complaint people have about web-based apps. It’s one of the reasons I refuse to use webmail entirely. 90% of the time, I have my laptop with me. Probably only 80% of that time do I have a network connection available. That other 20% of the time, I’ve got my laptop, but if I were using webmail, I wouldn’t have anything to do with it. If our internet connection were down at work, and I needed to get that list of IP ranges I got from my ISP in an email last week, I’d have to run 2 miles down the road to Starbucks, just to snag it into Notepad and run back to enter 12 characters. If I were using Outlook, I could rev it up in offline mode and check out that previously downloaded message easily.

Since I love PHP and web design in general, this makes me wonder… So I have a question for you other web nerds out there. Isn’t there a way we could accomplish this in a thin client interface?

Most Ajax-based thin clients I’ve used have specifically killed all caching of their pages (through meta tags, etc.) to ensure that clients always get the latest data when they click on a javascript-powered link. Couldn’t we do the opposite and harness this caching support in browsers to ensure that emails would be available for a specified period of time after the internet connection was severed?

I’ve never tried this of course, and really can’t think of an easy method for testing it, but theoretically, shouldn’t this be possible? I mean, that’s part of the point behind cached pages, right? There’s got to be a way to accomplish this, even if it’s through some ikky ActiveX control that only works in IE (which would suit Microsoft just fine for OWA)…

Anyone out there reading my blog have more experience with the caching support in modern browsers? Aside from forcing browsers not to cache a page here or there, I’ve never done much with it, so this is all really theoretical…

Post Meta

10-8-2005
Date
7:10 pm
Time
106
Views
538
Words
Comments
Comment Feeds

Back to Columbia Tomorrow (Uhh, Again…)

Yeah, once really wasn’t enough. On the 2 hour car ride down Thursday, Jeff and I were talking. At one point, we both just glance at each other and exchange one of those “I have a bad feeling about this” moments. Everything was planned out to the letter, we’d tested everything on our end, and we predicted smooth sailing. In and out by lunch.

WRONG!

We walk into the HR department, and are told everyone is in their conference room. As we walk down the hall, they shout out at us “You’re not going to be happy!”… We walk in and sit down to meet everyone and go over our game plan, only to find out that the entire campus (this is a hospital BTW) was down this morning with networking problems.

We groan and I trudge off to find an office to occupy for the morning, and check to see that the internet is up at the moment, so everything I need should be good to go. After reading their helpful company intranet page, I find out that they’re still having some issues at their remote data center, and are trying to get some of their servers back up, which are still having problems after the outages. No biggy, all I need is a ‘net connection anyway.

Welp, I spend my time from 10:15 to about 11:30 trying to get our VPN client to connect properly. I even go as far as pulling out my laptop and jumping on their ever-ready visitor wireless connection to make sure everything’s A-OK at home. Next we call up their helpdesk and get in touch with the desktop person that logged me in as an administrator so I could install the software in the first place. I start blabbering out stuff about my suspicions that it was their firewall blocking access, since I was able to connect just fine using my laptop over wireless. It doesn’t take me long to realize that she doesn’t have a clue what the hell I’m talking about. She does desktops, and I’m sure she does them very well, but firewalls and routing just aren’t her area. In our small company, we all have at least a vague idea of what’s going on, but it’s not fair to expect that from people at a company employing thousands across the state.

After about 15 minutes and no return phone call, we call the desktop girl again. She says she checked, and that she doesn’t think there should be any firewall issues preventing us from connecting, but says she can’t get anyone to help us right now, because they’re all still going ape-shit over network problems at the data center that have services down for multiple hospital campuses.

To be continued…

Post Meta

10-3-2005
Date
6:04 pm
Time
84
Views
457
Words
Comments
Comment Feeds

Back to Columbia Tomorrow

Welp, I’m off to Columbia to do some VPN installs at a client site tomorrow morning. Testing connectivity last time wasn’t too bad. Actually, it was a new experience that I somewhat enjoyed. This time, it’s going to be different…

Not only will I have to be on my best behavior since I’ll be meeting 7 different people at our biggest client, any one of whom could make life miserable for all of us, but I also have to drive because my partner in crime with this project had a, uhh… small accident. Driving long distances (3 hours total) isn’t my thing… There’s also a big Friday planned, so that kills my plans for taking it off… Yeah, they tell me I need to use up 27 days of vacation time by the end of the year, but then book me solid so I can’t… That makes sense!

Anyway, guess there probably won’t be much to report tomorrow. Unless I can snag some time on their 43mbit connection… mmmm…

Post Meta

9-28-2005
Date
6:01 pm
Time
155
Views
166
Words
Comments
Comment Feeds