Archives

What happens in Vegas… The Final Battle.. or Something. (Part 3)

*** Note: This is a 3 part post and they are shown in the order I published them. Please read parts one and two below before reading part 3. ***

Try to imagine it. You’re stuck in the middle of the night on top of a mountain surrounded by short pines without food, water, flashlight, or warm clothes.

I carefully and slowly walk around the top of the mountain with the cell phone held up high. I’m hoping to get a signal, but it’s dangerous to walk around in the dark like that. I sit down to think about my situation. I just can’t bring myself to consider climbing back down the mountain. There’s no way in Hades I want to go plunging down the side of the mountain again tonight. I was lucky not to incapacitate myself the last time.

So, I continue to slowly move around the top of the mountain and watch the cell. After what must be hours, I get a slight signal. No bars per say, but the red light turns off. I immediately dial 911. Unfortunately, 911 location wasn’t working at this time so my call got routed to West Michigan. I quickly explain to the Michigan State Police what has happened, and then I have to wait while they transfer my call across the US, praying all the while that the call doesn’t drop.

As soon as this kind lady, who sounded like my grandmother, answered the phone she immediately demanded my cell phone number and instructed me not to call anyone if disconnected. She would try me back. As soon as I give it to her, the call drops. In fact, it drops so suddenly I wondered if she had gotten the number. So, I sit down on a rock, watch the stars, and think about the terrible turn my life had taken this day.

To be honest, I cannot remember exactly who each person who helped me was and which department they worked for so I am making up names. After at least 30 minutes, the phone rings. The kindly elderly lady interviews me.


Me: Hello!
Dorothy: This is Dorothy of the Las Vegas Police Department. What is your situation?
Me: Well, my name is David Stein. I’m a tourist from Michigan and I’ve done something very stupid. I’m lost on top of a mountain, I think it’s Charleston, outside of Vegas.
Dorothy: Are you injured?
Me: I’ve twisted my ankle pretty badly. It’s swelling, but I’ll live.
Dorothy: Do you have water? Are you dressed warmly? Do you have a flashlight?
Me: (sheepish) Umm… none of the above…
Dorothy: Sir, what are you doing in the desert without proper clothing, water, or a flashlight?
Me: Ma’am, I’m stupid. I’m from Michigan and I’ve never been in the desert. Please save me.
Dorothy: Don’t worry, we’ll save you. Use your phone to get your GPS coordinates and I’ll call you right back for them.

I go through several attempts of getting the numbers and struggle to remember them until she calls back. I answer her call:

Me: blurts out the coordinates.
Dorothy: Alright, I’ll have Sargent Smith from Air Rescue call you back. Sit tight.
Me: Yes ma’am. Please don’t forget about me.
Dorothy: laughs… don’t worry.

So, I wait about another hour freezing on top of this mountain and listening intently for mountain lions who I am sure are just waiting for the right time to devour me alive. I think I’ve been away from my car for at least 4 or 5 hours now. Finally, the phone rings. Try to imagine Sargent Smith as an older leathery guy like John Wayne. He certainly sounded like it.


Me: Hello.
SS: This is Sargent Smith of Air Rescue. Is this David? (I swear the man asked this)
Me: Yes Sir.
SS: What is your condition son?
Me: Well, I’ve been out climbing mountains for about 5 hours. My ankle is twisted and swelling. I’ve had nothing to eat or drink, and I’ve got to pee really bad. (I added that last bit as a joke because I really needed to break the tension.)
SS: Don’t you have water?
Me: No Sir. (I cringe because I know what’s coming next)
SS: Son, why on earth are you hiking in the desert without water?
Me: Sir, I didn’t intend to hike. I got lost. I’m an idiot from the Midwest, who’s never seen a mountain before. Please save me anyway.
SS: Well, since you have to pee, you’ll need to catch that and re-drink it. (I swear he said this).
Me: (Incredulous) Umm… how long am I going to be stuck out here? You have got to be kidding me about drinking pee.
SS: Laughs. Yeah, I’m just fooling you. We do that to all the lost people. However, it will be a couple more hours before I can get you out.
Me: Sir, I’m not trying to sound unappreciative but why so long?
SS: Because hikers just found some guy on the other side of Vegas who was lost for over 2 days without water and he’s hallucinating. I’ll call you when the helicopter gets near you.

So, I wait another 2 hours, until I hear the helicopter’s wump wump wump… As soon as I hear the helicopter the phone rings.


SS: Alright Son, they are looking for you. Can you shine your flashlight at them?
Me: (cringing again) Sir, I don’t have one. Again, I’m an idiot, please save me.
SS: What are you wearing?
Me: A black t-shirt and ripped dark green shorts.
SS: How are they going to see you? Why don’t you just hide under a tree?
Me: Laughs. Well, I can signal them by using my camera to flash at them.
SS: Good, do that. I’ll be in contact with the pilot. Good luck.

So, I repeatedly take pictures of nothing but the dark outline of the copter and it hovers above me. A real mountain man comes down on a line and winch kind of like this.

Rescue Harness

I have a conversation with the Mountain Man. We’re yelling as to be heard over the rotors.

MM: Sir, I’m Jeff and I’m here to get you out.
Me: I’d greatly appreciate that Jeff.
MM: Put this harness on like I have mine (and he helps me).
MM: Are you a hiker or mountain climber?
Me: Do I look like one? (I ask this in a joking way as if you’ll remember, I am a large person)
MM: Well, how did you get up here with a bad ankle.
Me: Umm.. I was terrified. I could have carried that helicopter up the side of the mountain if I had to.
MM: How much do you weigh?
Me: Around 250lbs.
MM: Oh no. That winch isn’t rated for that much weight. We’ll have to have you dangling out on the line when we fly out. You won’t actually be inside the helicopter.
Me: (I was just about at my emotional breaking point) You have got to be freaking kidding me???
MM: Yeah I’m messing with you. It’ll pull you inside the copter.

So, he goes back up into the copter and I wait for the line to come back down. I hook myself up and I slowly raise into the air. I wish I could say that I handed it like this:

Robert Downey Jr.

Robert Downey Jr. Air America

However, the truth is that I am scared to death until Mountain Man gets me into the copter and buckled into my seat.

Amazingly, the pilot doesn’t take me straight back to my car. They buzzed around Vegas and gave me a tour. It was an amazing ride. At this point I asked the Mountain Man how much the fine would be. I figured they gave me the tour because there was going to be a huge “stupid tax” I would have to pay and I was more than willing to do so. Again, I was amazed to find out the rescue was paid for by the tax payers of Nevada. They did tell me that I could donate to a fund for new equipment as the Mountain Men were volunteers. I did so after I returned to Michigan. They sat me down right near my car and suggested I go to the hospital to have my leg looked at.

So, why did I tell this story? Well, because parts of it are really funny, though I suspect it’s better when I tell it in person. Also, it was a great experience because I learned something about myself. I learned that I can go farther than I thought, and it’s important to test your limits from time to time. For another, I learned that I need to watch more SurvivorMan.

Finally, I learned to take tours and refrain from getting myself into stupid situations.

In fact, this year I’m going to skip the rental car.

What happens in Vegas… Part 2

“It is an ironic habit of human beings to run faster when we have lost our way.” -Rollo May

Spoken in an old time radio announcer’s voice:

When last we left our “hero”, he had left his car to take a picture of the desert in the mountains near Lee Canyon. Of course he managed to get himself lost, and couldn’t find his way back to his car. As he became more and more agitated, he moved faster and less carefully until…..

Anyway, I quickly climbed down the mountain. I had to be at least 500 yards from the valley floor when I slipped and took the express elevator to the bottom, flat on my behind. Do you remember the movie “Romancing the Stone” and the muddy fall to the bottom of a mountain? Both Kathleen Turner and Michael Douglas slip to the bottom and end up fine and dandy.

Romancing the Stone

Douglas lands on Turner

Aren’t movies wonderful? The reality is somewhat different. I hit the ground at incredible speed, my knees buckled, and I fell forward onto the rock floor on my face and head. I think I blacked out. When I came around, I had this incredible pain in my chest. I pushed myself up to a sitting position and found something embedded in my chest.

Cactus

I landed on something similar to this.

Instinctively I reached towards my chest to determine what was wrong and damaged my hand on the spines. I had to use my car keys to pop the cactus ball out of my chest. So, now I’m at the bottom of the canyon and there is no stream or road. It’s nearly pitch black and I can’t see much as there isn’t any moonlight.

At this point I have a definite shift in perspective from a self reliant, confident man to a state perilously close to panic. I stopped thinking about being embarrassed to be lost, and started thinking that my name might be in the news in a few years. I could literally die out here.

I take stock of my situation. I’m very cold, bleeding from the chest and hand, completely lost, disoriented, in the dark, and already thirsty, but at least I”m not seriously injured. I stand up and I realize that I have no idea which mountain I fell down and therefore which direction I came from. I also realized one more important thing. I was wearing comfortable shorts on the way down the mountain. Somewhere along the way, they ripped almost completely up my backside. Luckily I was wearing some novelty boxer shorts, I think they were Super Mario Brothers (yes, I am a geek), and the pattern kept them from tearing. So, Mario literally saved my a$$.

I decide right then and there that I am not spending the night in that canyon. I’d like to pretend that this was a movie like decision where the hero has had enough and just won’t take it anymore. This was more like I’m cold, hungry, and afraid and don’t want to eaten by rabid wild animals. I check my cell phone and unsurprisingly it has no signal.

So, I start back up the mountain. The climb is exhausting, as to call me stocky would be charitable. So, I’m dragging my chubby butt up the mountain in the dark and I step into a crevice and twist my ankle pretty badly. I flopped down on Mario on the side of the mountain to check my ankle and it’s rapidly beginning to swell. It is at this time that my survival drive really kicks into overdrive and I begin to get extremely angry and determined to get through this. I hobbled over to one of the stubby pine trees and broke it off at the base. I stripped the branches off, shoved it into my armpit, and used it as a crutch to continue climbing. At this point I am no longer calling out in a manly way, I am screaming for help.

I’m in extreme pain, but at this point it doesn’t matter. I’m aware of me making pained noises and swearing, but I keep climbing. Every so often I stop, take a breath, and check my cell still without signal. I am hoping that as I climb upwards, I will find a road or get a cell signal. I’m not sure exactly how long I have climbed and I’m using those crappy pines as hand holds because the incline is steep enough that I don’t trust my balance.

I manage to make it to the top of the mountain. This is not good news as it means I have not run into a road, any kind of help, or a cell signal.

I can tell you that I have never felt so helpless as when I reached the highest point on the mountain and still had no signal…..

Will our “hero” survive in spite of himself? Part 3 continues here.

What happens in Vegas.... Part 1

This article isn’t about the User Conference which was held in Vegas a few years ago. This is about me and my life and death struggle against my own stupidity.

Some have found this story hard to believe, but I swear it is true. This was my first trip to Vegas, so I decided to stay over for a week and enjoy some of what Vegas has to offer.

However, I don’t drink or gamble. I don’t have any spiritual issues with it, but it just doesn’t interest me. Instead I went went on an ATV ride around the rim of the Grand Canyon, a similar trip to the Valley of Fire, drove out and toured Hoover Dam, and other fun stuff.

However, little did I know that a simple car trip to Lee Canyon and the mountains outside of Vegas would be the most memorable part of the trip. I had a few hours to kill in the evening after the conference was over and I decided to take a drive to the top of Mount Charleston and around Lee Canyon.

Lee Canyon

Beautiful, isn’t it?

Anyway, on the way up to the top, I passed a scenic overlook and intended to take some pictures there of the sunset on my way back down. When I got to the top, I was surprised at how cold it was up there. I was wearing shorts and a t-shirt and the temp went from 100 degrees when I left Vegas to well below 70 at the top of the mountain.

When I got back to the scenic overlook there had been a violent crime out there and the police had it roped off. I went back up the mountain until I got to a place where there was a wide shoulder and I could park. I grabbed my camera, cell phone (which wasn’t working well in the mountains), and climbed up the shoulder to get a picture. Now, keep in mind the mountain is covered with these 6 foot tall pine trees. They’re all water deprived, wind tortured, and look like they’re suffering from radiation poisoning. I kept climbing, hoping to get to a crest, so I could take a picture.

Now, as someone from the midwest, I remember news stories over the years about motorists who did something stupid in dangerous environments. You’d hear something like, “Tuesday, hikers found the remains of a guy from Michigan who was reported lost 2 years ago. In skeletal hands were found a cell phone, camera, and a an identification book for desert rattlesnakes. Authorities have no idea why he left his vehicle in the desert.” I, like my friends, would ask, “who could be stupid enough to do that?”

Well folks, I am that dumb. I tried to walk in a straight line, but there were no landmarks other than identical scrubby pines. After a few minutes of climbing/walking I realized I wasn’t going to find a clearing so I turned around and headed back. Of course, I never found my way back. I remember exactly how I felt.

10 minutes in…
I still thought I would find my way back to my car.
20 minutes…
I knew I was lost and was extremely angry with myself for being so stupid. I wasn’t worried yet and didn’t call for help for fear of looking stupid. I got myself into this, and I could get myself out.
60 minutes…
It’s getting dark and my anger is rapidly turning to fear. At this point, I am trying to talk myself out of being afraid. I’m a man, and I can handle myself. However, I had already visited the Natural History Museum and had seen the stuffed Mountain Lions which inhabit those mountains. Around this time, I start yelling (in a manly way) for help. The roads don’t typically go over the tops of the mountains, but between them. So, I begin to climb down the down the mountain in the hopes of finding the highway.

Then I fell….

Will our hero survive the fall? Part 2 Continues Here

Code is never finished, only abandoned.

I enjoy reading a little bit right before bed, and I’m a big fan of Uncle John’s Bathroom Readers. Where else can you read short articles about Star Wars trivia, how the invention of currency came about, and the famous hoaxes of the last century all in one sitting?

Bathroom Reader

Anyway, I found the following quote in the book pictured above.

A poem is never finished, only abandoned.- Paul Valery
French critic & poet (1871 – 1945)

I marked it because it made me think about the way I work with code. Whether I’m creating VFP or Crystal Reports, writing VBA code, or transact SQL, I regularly go back and improve my work.

There are several things which may trigger me to do so. I may have learned a new programming technique or perhaps something just flashes in my mind and I realize a better way to do something I’ve done in the past. I feel compelled to go back and “fix it.”

It’s this commitment to constant improvement which makes you a better admin and programmer.

ECM Auditing. Its Limitations and a Solution.

What is ECM (Engineering Change Management)?

The basics as to what it is and how to use it can be found on M2M Expert.

Here is an excerpt from the site. I’ve emphasized the text relating to today’s post.

This feature of Made2Manage manages the process of engineering changes in parts and associated documents such as job orders and sales orders. It provides a way to limit changes users can make to the database and a way to notify users of proposed changes in advance.

You can use ECM auditing to oversee changes users make to standard item master parts as well as documents (e.g., purchase orders, quotes, etc.).

How it works

Many companies, including my current employer, use this auditing to monitor changes to sales orders, quotes, and purchase orders. This is administered from the ECM tab of the CSPROD screen. If enabled, and I believe it is by default for all options except quotes, M2M will output all user induced changes to a SQL table called SYECAUDT. You can use the RPECAU, ECM Audit Report, to view them.

Sounds great, what is the catch?

ECM auditing is a good idea, and one that I suspect will be revamped and improved because of SOX compliance requirements. These improvements cannot come too soon because there are several problems with the system.

First, the report is not very intuitive. For example, the sort range descriptions don’t match the choices you make. You choose sales order and you get “Form Mnemonic” as a description. When you go to use it, you’ll see what I mean. I’ve written some Crystal Reports as a substitute for RPECAU and I may post them in the future if readers request it.

Second, M2M has not created a mechanism to allow the user to delete data older than a certain date. So, if you enable auditing of sales orders and leave it on, it will gather that data literally forever and take up needless space doing so. Since many companies have this enabled without realizing it, this is particularly troubling.

Third, it can take quite awhile to run the report depending on how many transactions are logged.

Finally, this audit runs every single time a table is changed and it uses resources to do so. Only enable the audits if you really need them.

A Perfect Example

I was recently working with a Made2Manage implementation that had been operating since 2001. They were tracking everything except Quotes with it and I ran some tests. Incidentally, the overall size of the database was approximately 11 gigabytes.
SYECAUDT Table Size: 470mb Record Count: 526,000

When I ran the RPECAU report on this database searching for a single job order number from about 2 weeks ago, I had to wait 21 seconds. I realize that this isn’t awful, but I’d rather not have users wasting time staring at their screens for that long if I can help it.

What can I do about it?

Well, SYECAUDT is a SQL table. You can use a SQL delete statement to cut down it’s size. Before I go any further, let me issue my standard disclaimer.

Important: All information on this site is provided “as is” for informational purposes only.
In particular, all code samples are provided “as is” without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

If you should decide to use any of the code taken from this site, make sure you test it thoroughly on a test company, or better yet a test server, before you ever use it on your live data.

Here is a sample SQL statement which will delete all records over a month old:

DELETE FROM M2MDATAXX.DBO.SYECAUDT -- Replace XX with your company number such as 01
WHERE       FTDATE <= DATEADD(DAY,-31,GETDATE())

Incidentally, never create a delete statement without a WHERE clause as it will delete every record in the table. In fact, it's best to create a SELECT statement first so you can examine which records will be affected when you take the next step.

For example, suppose you only wanted to delete sales order records older than 2 months. However, you also wanted to leave those records where users have deleted items from sales orders in the SYECAUDT table. Here is the SELECT statement:

SELECT * FROM M2MDATAXX.DBO.SYECAUDT -- Replace XX with your company number such as 01
WHERE       FTDATE <= DATEADD(DAY,-62,GETDATE())
AND fcaction <> 'D'
AND fcform = 'SO'

After you have run the statement and reviewed the records returned, you would then simply substitute "DELETE FROM" FOR "SELECT *" and you're all set.

Anyway, after running the first delete statement against that sample database I mentioned I got the following:
SYECAUDT Table Size: 7mb Record Count: 6,000

As you can see, that is quite a difference. How did that affect performance of the RPECAU report? I ran the report with exactly the same parameters above and received the response in 3 seconds.

In addition, you can set this up as a recurring job in SQL Server to automate future clean ups. I'll demonstrate how to do that in a future post.

“Don’t Panic!” A FastForms/VBA project goes awry….

Hitchhikers Guide

The Hitchhiker’s Guide to the Galaxy by Douglas Adams, which was a radio show back in the 70’s, is near and dear to the hearts of many geeks. It branched out into many forms, including books and video games, over the years. What I remember most fondly is the Commodore 64 game released in the 80’s.

For the past few days I have been working on a FastForms customization of the SYCSL Customer Service Inquiry screen. The users need to track a set of 10 dates and various other pieces of data per inquiry and I wrote some VBA code to control the interaction of the controls. This is a time sensitive project, so I had to drop my other projects and complete this one as quickly as possible.

As I was nearing the end of the project, they requested that I make the screen change to the closed state when certain criteria are met with these controls. I’ve never done this before, but there’s always a first time for everything. So, I start experimenting with code that looks like this:


Public Function BEFORESAVE() As Boolean
  If conditions are true then
    DoCmd ("oActionBar.btnstatus.click()")
  end if
BEFORESAVE = True
End Function 

This code will “ring the bell” on the Action Bar for you and I was working towards controlling the change status screen from the BEFORESAVE event on SYCSL.

However, I ran into a dead end there as the status window doesn’t have a mnemonic and I wasn’t sure that it could be manipulated. I began looking for a SQL solution, but this isn’t my first choice because of the risks associated with direct manipulation of the database.

I opened TOAD for SQL Server, and intended to use it to compare the database before and after using M2M to close an inquiry. With this comparison, I would know exactly which tables are changed in the process. I intend to blog about this tool later. I was in a hurry, and restored the last backup from my production server back to my test server over Data 01 and to Data 06. I intended to use Data 06 as my static database to compare changes. You are using a test server right?

Now, perhaps those of you experienced with FastForms have already spotted my mistake. For those who haven’t, let me take a second to explain the basics of how FastForms works. When you add controls to a screen, the changes are recorded in Visual Foxpro (VFP) tables called formxmaster and formxitems. The actual data is recorded on the SQL server in tables named in a systematic way. If you modify the SO (Sales Order) screen and you are adding fields regarding the master table, your FastForms table will be named Somast_ext. Somast is the sales order master table, and the FastForms table is an extension of that.

So, if you are working as quickly as possible, and dealing with the normal interruptions in your day, you can slip up and do something very stupid such as restore your pre-modified database right over the changes you spent around 13 hours of work creating. My VFP tables were fine as they are untouched in a SQL restore, but the SQL tables were gone. It’s important to note that I couldn’t open up SYCSL in M2M or in FastForms without forcing M2M to quit via the Task Manager. Even though this was all on a test server, I was in a bind as this was a rush job. This all happened right before lunch, so rather than panic I went home and spent some time relaxing with my bird.

While I was home, I planned in my mind what my game plan would be. First, I thought I would export the form changes and attempt to re-import them hoping that would re-create the tables. That didn’t work as the export program requires the SQL database structures to export as well.

At this point, I thought I may just have to remove the VFP information about my customization and recreate all of them as fast as I could. I would have missed my deadline doing so. So, I thought I would just manually recreate the tables in SQL, but I needed a template to start from. Since my Data 01 company was hosed, I opened my Data 02 and intended to recreate the _ext table with a sample date field and then use that as a guide to re-create the entire first table in Data 01.

I then realized that through a “feature” (bug) of FastForms, I could save myself. Let me explain. When you begin to customize a screen, M2M asks you if you want to customize it for only the current company or all companies. I always choose the current company and assumed that it only customized that company. This is not true. It only customizes the VFP for one company but all the structures and fields for SQL are customized in both companies. I had this revelation because when I opened Data 02 and proceeded to add a DateTime field, all of the fields I created for Data 01 were already there.

I opened Query Analyzer and used it to output a script to create that table and applied it to Data 01. I’ll discuss SQL programming for M2M Administrators and how to use the Query Analyzer to do this in a future post. After re-creating the table in Data 01, I tried to open the screen in FastForms and got an error which mentioned that it couldn’t find wp_SYCSLM_EXT. This is a stored procedure created by FastForms. I used Query Analyzer to output a script to recreate that in Data 01 as well.

At this time, I re-tested the SYCSL screen and got a more generic “Cannot Open SYCSL” error which is fairly common when working with FastForms. I believe it has to do with corruption of the VFP tables. The way to deal with it is to pack and reindex the formxmaster and formxitems tables and then run Createdbc. This is another reason that you need to use a test server as everyone has to be out of M2M to perform this maintenance.

I breathed a lot easier when everything came up as normal after that and I was able to do more work on the customization.

So, what did I learn from this? First, I’ll not make this particular mistake again. More often than not, a person becomes an expert through years of making mistakes and learning from them. Second, through this mistake I learned more about the behavior of FastForms which will prove valuable in the future. All in all, a very good day.

VBA and Yellow Mnemonic Inconsistencies

When a screen has been customized with VBA, the mnemonic background is yellow. The reason for this is for the admin, or Made2Manage techs, to quickly determine whether a screen has been customized or not. FastForms customizations are designated by an italicized mnemonic.

Yellow SO

Over the years, I’ve noticed a few screens which do not properly show this.

  • ABOUT – The information screen accessed at help, about.
  • ARINV – Accounts Receivable Screen.
  • SYCSL – Customer Service Request

The inconsistent behavior with the ABOUT screen doesn’t matter as I don’t know anyone who’s customized it. However, the inconsistency can be a problem for the other screens if you don’t remember it.

What other screens have you come across that don’t designate properly?

Blah Blah. Click ignore to get back to work.

As I mentioned in a previous post, this is a typical red box error you will get from Made2Manage.

Red Box Error

Compared to some of the red box errors, this one is actually descriptive.

Some other examples are:

107 Operator/operand type mismatch.
5 Record is out of range.
13. Alias ‘SLCDPM’ is not found.
1429 OLE IDispatch exception code 0 from Microsoft OLE DB Provider for SQL Server

Now in all fairness, many of these error descriptions will make sense to experienced admins, but those admins are not standing over the shoulder of the users so they do not see them. Yes, the admin can and should be looking at their ERROR.LOG file, but how many of us do that on a daily basis?

Over my 10+ years of working with Made2Manage, I’ve come to the conclusion that this is what the user actually sees.

My Red Box Error

Please pardon my lack of Photoshop skills.

I was reminded of this a week ago when a user came to me with a Made2Manage problem. Unfortunately, I had to ask him to wait as I was already on the phone with M2M support regarding another problem. 10 minutes later when I got back to him, he informed me that he had “fixed it.” I asked him to explain and he told me that he got several red box errors and kept clicking ignore until they went away. I asked him what they said and he replied, “Dave, I get so many that I don’t read them anymore.”

My users’ attitude regarding the technobabble in error messages remind me of a favorite “Far Side” cartoon:

What dogs hear

Fortunately, Made2Manage logs all of these in the Error.Log file, but when you go to look at it, the volume of errors can be daunting. Now in all fairness, normally only the first error of the cluster is important. In a later post, I’ll give some tips as to how to better manage your Error.Log.

In an effort to improve the product, these are what I view to be the problems with the current method of error management. These are not just related to Made2Manage, but to software in general. Why don’t users read the messages? Why should they?

  • Users don’t care about errors, they care about getting work done. Error messages are seen as getting in the way of work.
  • There are simply too many errors.
  • Most errors can be cleared by clicking ignore, or with a Made2Manage restart, without penalty. In a sense, the program is crying wolf.
  • They all look the same to the user. How would they know if they really should notify their Admin right away? They’re all red.

Accordingly, these are the actions I would take to fix this problem.

  • Errors must be less frequent
  • They must be in regular english.
  • The error messages should suggest an action. If it truly is a grave error, the user should be instructed to stop and notify the admin immediately.
  • To that end, errors should have differing severity. The different levels should look different.

The ultimate goal of course would be life without error messages at all.

Has anyone ever answered yes?

M2M Home Page

All joking aside, do any of you intentionally answer yes to make M2M Expert your homepage while installing M2M?

Do you answer yes to make M2M Expert your homepage?

View Results

Loading ... Loading ...

Hold On To Your Butts… (You Need a Test Server)

In a previous post, I emphasized the importance of testing customizations.

The Made2Manage implementation consultants that I’ve known have all recommended having a practice company. The directions for creating one are posted on M2M Expert, and of course this is a necessity. However, I take it a step further and keep a separate test server.

Why do I need a test server?

You need a test server for several reasons. First, as of Version 5.6, you still cannot change the background icon on the M2M screen. This makes it entirely too easy to mistake your test and live companies. This is especially tricky because people normally use a copy of their live data for practice. I myself have either accidentally made changes to my live data or made the opposite mistake several times over the years. I read somewhere that 6.0 is the target release which will enable you to designate different backgrounds for different companies, but until that happens I will advocate a test server. Our test server has a very distinctive background to remind me which version I am working on.

Jurassic Park

“Hold on to your butts.” – Samuel L. Jackson, Jurassic Park

The second and third reasons have to do with the scene above in Jurassic Park. Everything has broken down and the dinosaurs are creating havoc. Samuel Jackson’s character is being compelled by his boss to cut the power to everything in the hopes that it will boot back up and function. He is of course reluctant because he’s unsure of what will happen. This is exactly the feeling I’d get when if I created a complex SQL statement and ran it against my data.

Second, when working with SQL it is possible for novices to write queries which could cause performance issues. You do not want to be responsible for your entire company “timing out” of Made2Manage while you practice or learn.

Third, if you are working with SQL, and doing anything other than SELECT statements, you can accidentally make a mistake with your live data which could be disasterous. Consider the following code:

Delete from somast where fsono < '12345'

Assuming your live company is M2MData01 and your working with your test company which could have the name M2MData06, this is no big deal. You just deleted all sales orders with a sales order number less than 12345. However, if you weren't paying attention and M2MData01 was selected at the top of the screen, you just orphaned all the records in the soitem and sorels tables which correspond to all the somast records you deleted.

Fired Error

I wish the SQL Management Studio had this error.

Needless to say, if you're working on your test server anyway, who cares? You can fix it with a simple restore which takes minutes. In my opinion, SQL development simply requires a separate server.

Fourth, even with the latest versions of Windows, the software environment on our regular desktop machines are constantly being degraded over time. You surf the web for information, constantly use software unrelated to M2M development on them, and install and uninstall software on a regular basis. I advocate using a separate test machine so the software environment remains relatively constant and much less prone to errors.

Finally, everyone needs to create a test server whenever they migrate to a new version of Made2Manage. I'll discuss my migration and testing procedures in a later blog post. Since we all have one at one time anyway, why not just keep it and do your testing on it?

How much does it cost?

I can imagine the accounting folks cringing, but this is not as expensive as it seems. My "server" is nothing more than a desktop PC with the following:

  • Windows XP - Included
  • Visual Foxpro 9.0 - Around $600 (Necessary to create/edit M2M Reports
  • SQL Server 2005 Developer Edition - Less than $100

According to Microsoft the requirements for SQL 2005 Developer Edition are:

Processor - 600-megahertz (MHz) Pentium III-compatible or faster processor; 1-gigahertz (GHz) or faster processor recommended
Memory - 512 megabytes (MB) of RAM or more; 1 gigabyte (GB) or more recommended

Who doesn't have an extra computer in storage which exceeds those requirements?

So by my estimation, it costs you one throw-away PC, and around $700 for the software. This buys you convenience, stability, and insurance against data incidents.

Isn't your job worth $700?