Friday Freefall

Well, yesterday vomited snow to the tune of six or eight inches all over us, just before my evening commute started. I left the office about an hour early to beat the rush. What a laugh. Travel normally in the 35-40 minute range took me about 90 minutes.

But I did make it home safe and sound, despite the incredible tsunami of stupidity. When it rains here, people drive safely, normally, as if life mattered. When it snows? Not so much.

But I’ve been doing some heavy duty computer programming this past week or two. Unfortunately none of it is related to the major projects I have on my plate. I have a mid-year performance evaluation from my boss coming soon. I’m a little nervous, so I’m going to start praying about that now. Long and hard.

I’m working my butt off to get up to speed on these things, to resolve the issues this website has. Unfortunately, the amount of knowledge required to do that seems continuously to escape me.

What I’m doing this week is macros for MS Excel. They’re very important. It’s critical we find out why our division and the manufacturing divisions don’t have orders which align. We keep missing shipment dates, the customers start counting what we call On Time Delivery (or OTD) on a quality score card they use to measure us, and if we’re sufficiently behind in our ability to meet their demands, they will go elsewhere. Sometimes they go directly to the manufacturing division. I think I told all of you how last year we lost one of our major customers to division direct. It was $12MM dollars. Not funny. Not good. We don’t want that to happen again, so we’re working to resolve the differences between our dates and divisional dates.

See, the problem seems to be the customer gives us a date on which they require the material. Whether they require it be shipped that day or whether they require it on their dock that day is up for grabs, and varies by customer. But one thing’s for sure – somewhere between us and the division. something’s going extremely wrong.

Here’s how it works:

We enter the customer’s required date in our system. Our system also requires we provide a promise date – which is the date the part is promised by. That would normally be provided by the division, but we have to put something in or the order won’t work, so we enter the same date for the required date and promise date.

The order transmits to the division and is consumed, somehow, by use of gremlins, gnomes and probably a few trolls and squirrels, by the division’s system. The order has then successfully transmitted via Electronic Data Interface (EDI) to the division’s system…which is probably not the same as ours, for many reasons I won’t get into here.

The division receives the order, provides what they call a promise date; that’s the day they promise they can provide the part. They examine the order and, if necessary, make the translation between their part number(s) and ours. Then, the division sends us an acknowledgment on the order, also via EDI, and provides us with their sales order number (which is different than ours), the promise date (affectionately known as a “PromDate”), and a lot of other information about the order on their side.

We only care about a couple of things, though. We want their sales order number, we want to know what they think we ordered, and we want to know if – and if not, why – they can make our required date. If they can’t, the Customer Service Representative will contact the customer and see if they can accept the division’s promise date. If they can’t, the CSR goes back to the division to see what they can do to get the part expedited. Yada.

So, what we think might be happening is, sometimes the CSR chokes. The division tells us somehow they can’t make the required date but the CSR forgets to update the sales order in our system. Or the division enters the dates incorrectly, if they have to manually address them (a few do). Or there’s some other hiccup in the system, since we’re migrating from our old standard mainframe system to a new, shiny, point-and-click system.

But we feel the biggest culprit might be the divisions are changing the dates without saying anything to our people. They’re free to change the PromDate. They’re free to tell us they can’t meet the required date. But they absolutely, positively cannot CHANGE the required date. Doing so means they are altering the customer’s requirements to attempt to make their division look better on OTD statistics. It means we are never going to get correct and acceptable OTD from the customer’s perspective. And it means the entire company, not just the divisions involved, look bad in the eyes of the customer and they don’t want to continue to do business with us.

Sure, our department can point to the manufacturing division and say “Their fault! They’re to blame!” But how does that look to a customer? If you go to Walmart and get a lot of finger pointing and excuses and blame put on other Walmart departments and employees, how do you react as a customer? It doesn’t do anything to address your needs, and it only makes the one pointing and shrieking look foolish and petty.

So we’re caught between a rock and a hard place. To solve that issue, we have a set of spreadsheets with the division’s order book and one with our order book And we compare them through a process which makes sure we have everything exactly the same. If there’s not a match, it’s for two possible reasons – either the order doesn’t exist in one of the systems and a match can’t be made, or the orders DO exist in both systems but something’s wrong. We can then sort the orders and highlight the orders due in the next two weeks to make sure THOSE pending problems aren’t issues. In this way, we should align the orders eventually.

So, I’ve been asked to do that work. And it’s getting there. I have one more to do. Our three biggest divisions will be done once a week. The CSRs get the spreadsheets with the mismatched orders highlighted, go through at least the urgent ones (due in the next two weeks), and then explain why the orders which are legitimately issues are such.

Two down, one to go. It’s sort of weird. VBA – the programming language integrated into Microsoft Office programs – is similar to ASP classic, the language upon which our intranet site is built. The one for which I have to create Appmageddon and have the other projects pending. So you’d think, because I’m facile with VBA, I’d be facile with VB or VBScript (variants of the same language, based on Visual Basic version 6 or prior). But it’s not so. There’s enough differences I can’t make the programs work right, and there’s no testing ability in ASP pages. I have to just…run the page and hope. Or hope I get something more helpful than a generic and cryptic IIS error message (IIS is the web server, FYI).

Tomorrow’s another day. Here’s hoping I can finish everything I’ve got to do and get back on track with the projects I’m now sure I’ll miss in terms of deadlines. *Sigh*

Prayers appreciated, and hope you all have a GREAT weekend. I’m going to the bank on Saturday to pick a new checking account because our bank is imposing them on all customers. Isn’t that charming?

No, it’s not.

See you Monday.

-JDT-

And Around Comes Monday, Again

No matter how I try, I just can’t outrun Mondays. How ‘bout you?

Over the weekend, I took my friend Spark’s encouragement and my loving spouse’s advise and just…did nothing productive. I played video games on Saturday, which means I didn’t do squat in other areas of my life. You know…like training videos. And then on Sunday, I sat around and wrote a second installment to a short story I’m working on. I like the way it’s turning out, even if it is a little repetitive to something else I wrote a little while back.

I’m experimenting in noir and trying to keep it…well, me. So that’s going all right. Maybe I’ll peck away at it a little at a time until I get the hang of it. I want to write full-on hardboiled detective type stuff with a horror twist. Maybe someday.

Still, I laid down about 2000 words on Sunday without much effort. That’s AFTER I fixed my broken fantabulous keyboard. The “x” key popped out of place, for no apparent reason. It happened after I’d had the keyboard about a week, but I fixed it then. I was able to get it back on without trouble. This time, not so much.

I had to Google the solution and found out how to do it. It went lickety-split when I followed the video instructions, but the key wasn’t right. It didn’t have the right action. I think somewhere along the way the little mechanism under the key itself broke. So I took a rarely-used key (for me anyway), the NUM LOCK key, and I swapped the mechanisms. Then I replaced both keys. Now if the NUM LOCK key isn’t springy and have the same action as the other keys, I won’t care. The ones I type on day in and day out work fine, and the number pad works fine too.

So, all’s well that ends well I suppose. Although for the amount of money I paid for this keyboard it shouldn’t be so fragile, frankly. I also discovered it’s a flaw with this model; a LOT of people contact the manufacturer about it. At least, they did as of 2012.

No need for that drastic a measure for me, though. I’m happy as a lark again. So onward. I was able to then sit down with my outline and bang out those 2K without any further keyboard issues. I do believe I’ll pick up the wireless version soon, though, because the wires are killin’ me in my tiny, cramped space.

After writing, I did some Internet searching for a woman wearing a sheath dress. I need some free stock for the cover of this thing, so I can put it on Amazon’s Kindle store. But I couldn’t find a single piece of FREE (that’s big!) stock. And even the pay stock I found isn’t really what I wanted. Besides, I sell so few of the stories, I’m not willing to start it out financially in a hole from which it will not likely dig itself out.

I gave up on that Sunday evening, and thought about writing again. But then I thought, you know what? I ought to quit while I’m ahead.

Next week, I need to get back into the learning videos. Back on your heads, as the old joke goes. But for this weekend, I just let myself go and do something I love doing.

Hope you had a good weekend too, and have a good Monday.

-jdt-

Friday Flurry

Not much happening, so I guess it’s not a “flurry”, per se, but there are a few things happening.

For one thing, I found an issue with our data which has been plaguing my ASP classic pages for a few months. Every once in a while, one of the intranet pages would fail to find a customer someone looked for, or wouldn’t locate a customer to populate the pages with their orders for us, or something like that. For the ATR Coordinator, the problem manifested a couple months back when she tried to enter an ATR for a customer and couldn’t because the pages couldn’t locate the customer.

She asked me to add them to the database so she could process the request. When I tried, I found they were already in the database. But…then what gives? Why wouldn’t the customer come up in a search?

So the new IT manager for the business group with which we share the space – who is a full-on .NET developer and knows his stuff – was brought in (by the ATR Coordinator without my consent or knowledge) and offered to help. I accepted eagerly. He sat down and started working through the page methodically and when he saw the issue, he was stumped too.

Then he did something magical – he added a tiny bit of code to make the query see two different kinds of values from the database, and voila! The customer was found! But… there was a cost.

The customers each showed up two, sometimes three, times in the search results. Complete with duplicated IDs, contacts, phone numbers – you name it.

But hey! At least it worked, right?

So we’ve been like that for a bit. Then, a similar problem cropped up in a completely different area of the intranet. But the data was the same. I’ve been crawling through it for a couple of days now trying to fix the problem, but to no avail, until yesterday.

I discovered the database contained not one, but two types of data for a single field, when the field didn’t have an entry. There’s either a NULL value, which is a database standard, or a zero-length string, which is a series of characters. For example, the word “pie” is a string of length three; i.e., three characters long. Of course, “213” is also a string of length three, IF you consider the characters (digits) as characters instead of numbers. So, that’s a string, and in this particular field of this particular database, there are values stored as either a string (when there’s an entry) or a NULL (when there isn’t) or a zero-length string.

But the bizarre part? The zero-length string is the only value the web page searches the database for. So if the customer record had a null in that field, it wasn’t found. Because nothing, empty strings (zero-length strings) and nulls are all different things in computer world.

Why the old admin chose to look only for the zero-length string is anyone’s business. I can’t ask him, and there’s a story behind that, but that’s for another day. Or blog. Or blogger. But that’s what I’ve got and that’s what I found by poring over the page, the data, and crawling through line by line, cleaning up the code on that page.

Then, I used Visual Studio’s query utility to quiz the database and get all the data in that table. That’s when I found the mixed values in this particular field, which is used as one of the criteria for the query on the ASP page. Mystery solved. Now, how to fix it?

There are some 40K records in that database. I’m NOT going to walk through it by hand and change the values. I can set the default value to be NULL on the table design in Microsoft Access (which is the database we use for some reason), but that only works for new records. So I have to update the table with either one or the other. I think the best choice is NULL, but then, I’m not a dba.

Next, I lost some weight. Rolled the middle digit down. But I gained that back and then some, so I’m miffed about that.

And I’m still not able to find time to write anything. Between the programming classes and the work and everything else, there just doesn’t seem to be time during the week anymore. I can’t figure it out. Up until recently I seemed to be able to get more done when I get home at night. I suspect we have an issue with increased TV time, but can’t be sure. And I can’t stop the family from enjoying themselves just because I can’t.

Hope you all have a good weekend. I plan to!

Next week I start MVC training, I think.

-jdt-

The Insomniac’s Stressor

I have no idea what’s caused me to become an insomniac of late. I can’t seem to sleep longer than about three and a half hours a night. When I go to work I want more than anything to go to sleep.

Appmageddon’s on hold for now. I’m still WAY behind on it, but now other things have been elevated in priority and I have only two hands. So, it will wait for them to be finished.

Oh, and being without sleep caused me to fall a teensy bit behind on the video courses. So the one I said I finished on Wednesday? Yeah, not so much. But I promise, by Monday not only will I be into a new series/technology, I’ll have all my notes transcribed and docked away for future reference.

What’s up for you this weekend? I hoped to write something. I used to hope I’d see a UFO too. They have about the same chance of occurring at this point.

-jdt-

Another Notch in the Belt

Well, I think I’ve finally found my groove on this computer programming video learning thing. I’ve figured out how to take notes in a way which works well for my mind, and allows me to keep up with the video much better. No more trying to “take notes” (read: “transcribe”) by pausing the video and re-wording what I see on the on-screen slide.

I’m doing it faster and retaining it longer, and last week, I put some stuff I learned to work for the first time. I not only remembered the processes but some of the details too. (Not all of them, of course, but I’m still new at this and didn’t exactly “study” beforehand.

What this all means is, I finished another class. By the time you read this I’ll be moving on to the next one, trying to decide what that will be. So go me!

The downside to all this is, I’m slacking off a bit on the viewing. I’ve been tired and drained every night when I get home and slept in on Saturday. While I love what I’ve got working for me right now, in terms of the note-taking (I never did learn how to do this in school, btw), it has become a two-step process for me. I have to take the raw, rough notes and then make them legible and clear in their permanent location elsewhere. I’m not sure how I feel about that and I wondered whether it would create problems with recall for me to go too long between viewing sessions. So I deliberately waited a few days as a test.

I found as I transcribed and cleaned-up the notes, my recall was pretty good. I knew what everything meant, and actually expanded on some things a bit as I worked through them. And the best part is, I covered more ground more quickly with fewer pages. I love it.

So now, to apply.

I’m excited to tackle the next phase of my learning – MVC. I think I’ve described that one to you already, but if not, don’t worry. A horrible and boring review probably isn’t far off as I work through Appmageddon and see where it takes me. I have to hurry up and get it done, though, so prayers are appreciated.

On and up!

-jdt-