Cockadoodle Doo, Yo

Well. I’ma crow a little bit today.

Yesterday, I was ridin’ high coming into the day. I’ve been blowing away the tasks assigned to me. Sure, it takes me months to solve the riddles sometimes. Sure, I do some mumbles and humbles and get beet-red when I have to say “I don’t know  how” in staff meetings with my boss and associates. But every macro I’ve had to tackle I’ve knocked out of the park.

Even when I thought I didn’t.

So late last week, the ATR coordinator asked me to look at a problem she’s had with one of the screens she uses. I told you about this – it printed the serial numbers over and over, remember that? Well, I hit that one out of the park too.

Then I came back today and decided I’d have another run at getting the email attachment problem solved. You might not remember this one. Back in the summer we decided it might be a nice feature to be able to attach files to our outgoing email messages to divisions and customers. Sounds easy, right?

Yeah, not so much, it turns out.

Well, for the last – what? six, seven months? more? – I’ve been banging my head against that particular wall. This even came into play before Appmageddon. But I couldn’t do anything with it. I just…couldn’t get it to work.

Yesterday, I opened up that page again and took another look. I saw something I didn’t notice before. Well…that’s not exactly right. I guess I just didn’t see it this way before.

I tweaked. I tested. I tweaked again. Tested again. And you know what?

Shut the front door – I got the email. AND the attachment!

VICTORY! VICTORY FOR ZIIIIIIIMMM! Praise the Lord Most High, for clearly this came from His inspiration. Know how I know that?

Because I have no idea what’s different now that it works when it didn’t before. NONE.

There were a couple of routines I saw, and I recognized a bit of what they might be doing. I changed the references a touch, thinking, “Well, maybe it should be this instead of that.” And voila! Success. Sweet, gratifying success.

OH, I danced! I danced like Snoopy dances, and at my weight, that’s quite the spectacle.

I ran to my boss and bragged, “Hey, I beat your man GW again! I got the email attachment thing to work! I did it!”

I chatted and beamed a moment, and then went back to my desk. I deployed the solution to the production web server. Then, I had a meeting to go to with my boss and his staff members. During that meeting, the ATR Coordinator had to leave for the “Kaizen Event” I mentioned to you before. The meeting broke maybe an hour later, and when I got back to my desk, guess what?

I had an email from the ATR Coordinator.

She said, “We have issues with the intranet. I can’t send any notifications to the divisions. It’s giving an ‘Empty Path’ error now.”

My sphincter tightened so fast and so severely I gained an inch in height. You couldn’t have driven a toothpick in it with a ten-pound sledge.

Okay, I thought, stay calm. The error indicates the message can’t be sent without an attachment now. So…so…what’s that mean?!

OHGODWHATDOESTHATMEANFORTHELOVEOFCHRISTHELPME!!!

Or, you know, something like that.

So, this was like, two o’clock. I putzed around with other solutions but they weren’t going well. Finally, it hit me like a ton of bricks.

Before, we could send messages but not attachments. Now we can send attachments but not messages without them. Solution – put both scripts on the page and have them execute at different times.

Okay, how do I do that?

The way I did it was simple, and a little stupid, but then, so is this entire way of working with this crap, in my view. I simply put two buttons on the page. The first one calls the original script, and sends the message without attachments. The second one uses a modified script, takes the object in the file box (which I added), and embeds it as an object. (No, I didn’t come up with that code; neither did my predecessor though. He borrowed it from the Internet, so we BOTH stand on the shoulders of geniuses to do what we do. So there.)

Then the script sends the message through the local email client running on the machine being used.

Done!

And tested. And tested. And tested. It sends through the Internet, sends through the intranet, and sends the attachments faithfully.

Score!

Appmageddon just got a little less scary.

Now, back to the NAFTA database macro. I have to automate it. And I did; problem is, the automation through the database itself is ssssslllllllllooooooowwwwww. So I did it through an Excel spreadsheet instead, but now have to figure out how to get the two together. Two-step process, maybe? I’ll see.

But the process took something like half an hour through the database. The exact same code, copied and pasted to the workbook’s code editor directly from the database’s editor, runs in eight seconds from the workbook.

Uh…this is a no-brainer.

So, I’ll see what happens there later. For today, I have month-end reporting to do, weekly reporting to do, and I’m still way behind on some of these things.

See ya next time.

-jdt-

Good Friday

I have to confess, I’ve no idea why today is called “Good Friday.” I’ve wondered that for years. But that’s another post for another blog, for another day, I suppose.

For now, I want to celebrate the joyous Easter coming.

And I have some reason to celebrate. Yesterday at work, I had some cool things happen, and only one bummer thing.

See, on Wednesday I had someone come to me and ask me if I could adjust one of the legacy intranet pages because it showed serial numbers for our return requests from customers. Some of our manufacturing divisions require a serial number before they’ll authorize a return. When we put that data into our system, it’s called up when we do prints of the requests. Long story longer, no matter how many serial numbers you enter, it shows up ten times. And, if you put in more than one, only the first one shows up…ten times.

An interesting conundrum. I found it more interesting when I learned my predecessor had been informed of the matter but never resolved it.

When I looked at the print page, I saw the matter. A loop was the problem.

(Aside: In programming-ese, a “loop” is a block of code which is executed multiple times, so instead of writing the code over and over again, you write it once and instruct the program to do it over and over until a condition is either satisfied or stops being satisfied.)

See, the loop was told to execute ten times. A counter was set to 1, and the loop was set to run until the counter became 11 (incrementing ten times). That same counter was used to extract the index number of the serial number data. So let’s say there are five serial numbers for five units being requested for return. The counter (called “x” in this case) was set to 1, like so: x=1 (complex programming code, eh?) Then the loop was told to run until x=11, like so: Do Until x=11 (wow! Can you handle that technical jargon there?!).

Okay, then the serial numbers were selected by saying “Put the serial numbers in this HTML table cell where the serial number = SN(x).” Then the counter gets incremented by one (“x=x+1”, more super-intense computer code), and the loop repeats. Got it?

So, for some reason (and I’m still not precisely sure why), the code never worked correctly. Instead of getting serial number index “x” like it was supposed to, it got the first one it came to and then repeated that cycle over and over again.

I knew what to do, though. And damned proud of myself I was for knowing! I changed the loop to say, “Do this stuff UNTIL THERE ARE NO MORE SERIAL NUMBERS, regardless of how many there might be.”

This is called a “Do Until” loop. Instead of saying “Do this until the counter is incremented ten times” (and ten wasn’t random; the page in which serial numbers are entered only has slots for ten of them), my code says “Do this until you don’t have any more records in the serial number spot” and then finishes. Got one serial number? It goes through the code once. Got ten? It goes through ten times.  And, should I ever improve the page, if you input 40, you’ll get 40 out.

So I made the alterations and tested the code. It failed. Programming error. I left on Wednesday night feeling pretty dejected and stupid. I woke up a couple of times on Wednesday night – as is my habit, due to bladder requests or thirst or whatever – and every time I did awake, this problem was running through my head. I have no idea how that happens, but it happens occasionally. So when I woke up Thursday, I went to work thinking about the problem and still didn’t have any clue why my loop didn’t work and his did.

Feeling sort of inferior and humbled, I looked at the problem again. And I noticed something… a missing piece of the code. When I altered the loop, I forgot to tell the computer code to advance to the next record, if there is one, and do it again. When I added the simple line “recordset.movenext” to the code just before I told it to loop through again, BAM! Success! The page loaded perfectly and ran flawlessly, and ONLY shows the existing serial numbers once!

And now, it shows ALL the serial numbers, not just the first one over and over.

VICTORY!

Okay, great, on I go. I spent the better part of last week working on two things: a NAFTA database macro which would automatically perform some tasks rather than having to perform those tasks manually, and a page which shows the number of times one particular customer is changing their orders. (The sales team for that customer, and the quality representatives for that customer, will be in our location for what’s called a “Kaizen Event” to improve quality communications. We’re using it as a chance to provide ammunition to our sales team to get the customer under control. Long story, but it’s something we have to do; their people can’t keep up with the changes being made, how are we supposed to do so?)

Well, I got the new web page built using the new, “better” technology, and tested it repeatedly. Then I set it aside. I finished it about 4:30PM last Friday, and figured I’d deploy it this week. Well, I sorta forgot, so when it came up again, I scrambled to get it uploaded to the web server.

And it bombed.

For the next two hours, I cursed, banged my desk, pulled my rapidly-graying hair, and stormed to the bathroom to fume. The test server simply won’t provide me with the error messages and I can’t remember what I did in production to get it to happen. So, flustered, I deployed the new application to production to see if I could find the problem.

I almost screamed it was so simple. So, I quick-fixed the issue and BAM! Success!

VICTORY! …and I copied the fixed version to the test server as a back-up and they’re working fine. The requestor is very excited to arm our sales team with this data next week, and I’m pleased it worked as intended. Phew! Close one!

Finally, time to turn my attention to the NAFTA database macro.

*Sigh*

I still don’t know what’s wrong with it. So, two wins and a loss. In the grand scheme of things, I suppose that’s not too bad.

There’s always next week.

I hope you have a happy and joyous Easter if you’re celebrating, and I’ll see you Monday or thereabout.

God bless you.

-jdt-

Inexorable Monday

Well, I put yet another short story collection up on Amazon’s Kindle store over the weekend, and the reception’s been quite warm. It went up on Friday, the launch promotion went live on Saturday (wherein it’s free for five days), and so far, I’ve gotten 140 downloads. Not bad. Not as jaw-dropping as when eReaderLove.com picked my books up, but not too shabby just the same. I’ve also opted to promote this one on Twitter. I didn’t do that with the last couple and they didn’t seem to take off as well. Not bad, but not well. So we’ll see if this helps. I guess. It should pay off sometime, right? Maybe? Ah well. It’s been fun anyway.

I’ve noticed a tiny bit of trickle-down to other stories, too. Not much, but a trickle of trickle. I’ve sold a handful of not-free books, but I’m not going to be able to retire on my writing’s earnings anytime soon. Still, it’s something, and the more readers with my work in their hands, the better.

I might’ve done a better job pimping the book on this blog too. I don’t know how many “followers” I have, but every little bit helps, so I might just do that next time.

For the record, it’s called Shudderbugs and already has a five-star review! W00T!

Speaking of reviews, my buddy and loyal fan Raga has posted a review for me too, on The Case of Lenny Tiggleman – in which she appears as a character! Thanks, Raga! God bless ya, darlin’! I really appreciate it.

Other than that, I did absolutely nothing over the weekend except shoot off a message by my buddy Bryce, who hasn’t responded yet. I hope to hear back from him about helping him get the sequel to his novel “Oasis” out in early April. Hey, B, let me know what’s up, brother.

I’ve got to get back to my training videos, but LORD HELP ME, I can’t seem to find the motivation to do it. The prospect of sitting through them and taking notes excites me about as much as the idea of having my gums scraped.

On the other hand, I’ve fashioned yet another book cover for a new short story I’m mulling. I hoped the cover would spark inspiration. And it would be sci-fi/horror, maybe. Something scary in space, y’know? And it would be a short story, so I can peck at it a little at a time. But I really need to pump out a full-length novel sometime. I just can’t ever seem to block out enough time to do so. Can you say “time management”? I knew y’could.

Anyway, I hope you had a nice weekend, and Bob, I hope your bachelor party was a blast, bud. I’d have been there if I could.

Take care and see you next time, everyone.

-jdt-

Busy, Busy, Busy!

I’ve been a busy li’l bee at work this morning.

We had a major upgrade — a full build — to one of our enterprise systems. Everything went swimmingly over the weekend, when the new build was deployed. Then came Monday morning, when, you know, people tried to use that system.

And it promptly crashed.

As of this writing (about 11:46AM my time), there’s no resolution to the issue. They keep sending out updates, but there’s no fix in place yet. Nice.

So, to prepare for the new system — because, in theory, it will eventually be resuscitated — I’ve had to do a few things alongside my regular Monday morning reporting routine. So I’ve been haggard. And last night, my charming, trailer-trash neighbors decided to have some sort of outdoor gathering at all hours of the night, not to mention the banging and thumping like someone dribbling a bowling ball. So today, I’m tired and a little grumpy.

Nevertheless, I’m only halfway through my day and still busy. I’ve finalized a VBA macro already, and tested it (enough…I hope). And now, I’m off to launch my IDE so I can fix some pages I “fixed” last week which, y’know, aren’t fixed.

Over the weekend, I became the proud owner of a brand-spanking-new digital SLR. It’s a Nikon D3100, and so far, I love it. Now, I just need to learn to take pictures. Then the REAL fun begins…Photoshop the pics to make ’em look better! W00T! Can’t wait there.

I also have to get back into my training videos in a more serious way. I’ve really slacked off on how diligent I am about them for a few reasons, but primarily I’ve been doing Photoshop work and (re)publishing my stories on Kindle to keep interest up. So far, so good. I didn’t get one done last weekend though, so this week I’ve got a pair of stories going up which should make me feel better. It also gives me an excuse to do Photoshop work. How bad can that be?

I’ve decided I love Photoshop, and if I could be a professional retoucher and ebook cover designer and charge people enough to make a living at it, I’d be happy doing it. Unless, you know, it ticks me off. Then it’d suck.

Anyway, I hope you had a nice weekend, and, you know, I’ll see you next time.

-jdt-

Dichotomy

No matter what I do over the weekend, I never really feel productive unless I do something work-related.

For instance, I could write 10,000 words in a new book or story and get LOADS of Photoshop images made for book covers. I could read vast volumes of fiction and spend quality Facebook time updating my author page, getting feedback, and promoting my latest and greatest endeavor. I could do almost anything every single weekend and still come away feeling like I didn’t accomplish a doggone thing.

I can spend quality time with my computer programming training videos, though, and even if I only get to a couple of ‘em, I feel like I’ve done huge amounts of work. I feel satisfied, proud of my achievement(s), and the sensation I deserve to relax.

I don’t know why that is, or what it is inside me which drives the disproportionate slant that way. I’m watching a series right now about MVC, which stands for “Model/View/Controller” and is a web site structure which separates the business and data access logic from the presentation and uses something called a “Controller” to route the user’s requests between the two. There’s a great deal of background into how the controller knows how to handle the requests from the user, and where to go with it when it receives them, but in the end, this series doesn’t seem to benefit me as much as I hoped. I have a couple of looming projects and need to get them done, and despite how much I think this has potential for future projects (like Appmageddon, if I can ever get back to that), it’s not having much impact on me and my ability to code now.

So I sit and don’t feel much like returning to those videos on the weekends. I want to watch movies, and write, and make book covers for books I haven’t even written yet, and play with the kids. I want to do all sorts of things and can’t do any of them because I can’t seem to get past the nagging sensation I have to watch those videos. If not the MVC ones (I’m 37.5% of the way through), then something. And nothing strikes my interest right now.

Sometimes I wonder if just making up projects to practice coding is better.

But I find it strange how accomplishing things in other areas of my life feels so insignificant and how little can make me feel accomplished in this area.

How ‘bout you? Did you accomplish anything this weekend?

-jdt-