Posted on May 7, 2013 by

Quick C# XML Former

While I was working at FedEx, we had a lot of systems that would need to communicate with each other. These systems often communicated using an advanced messaging queue that was simply called the broker. The broker logged everything it did in great detail, the only issue was that it logged everything in a single line of XML that ended up being extremely long (which means it had no line breaks and made it hard to find the info you were looking for).

I wrote this quick tool that will take any XML and show it in a tree-view. This is a great plugin that many text editors have now that makes this easier, but just in case you want something to mess around with: here ya go.

The code behind is quite simple. The bread and butter fall into two methods mainly:

FillTree is the first method which is the parent method responsible for the flow of adding elements to the tree.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
        private void FillTree(TreeView currenttree, TabPage tabName)
        {
            try
            {
                XmlDocument dom = new XmlDocument();
                dom.Load(Application.StartupPath + "\\xmldump.xml");
                currenttree.Nodes.Clear();
                if (dom.DocumentElement.Name.Contains(':'))
                {
                    currenttree.Nodes.Add(new TreeNode(dom.DocumentElement.Name.Split(':')[1]));
                }
                else
                {
                    currenttree.Nodes.Add(new TreeNode(dom.DocumentElement.Name));
                }
                TreeNode tNode = new TreeNode();
                tNode = currenttree.Nodes[0];
                currenttree.Nodes[0].ContextMenuStrip = treeviewmenu;
                AddNode(dom.DocumentElement, tNode);
                if (chkClearInput.Checked == true)
                {
                    txtInputXML.Clear();
                }
                treecount += 1;
                if (booExpandTree == true)
                {
                    currenttree.ExpandAll();
                }
                booSuccess = true;
            }
            catch (XmlException xmlex)
            {
                booSuccess = false;
                MessageBox.Show("XML Malformed. Reason for Error: - " + xmlex.Message, "Error");
            }
            catch (Exception ex)
            {
                booSuccess = false;
                MessageBox.Show("Non XML Error Occured: " + ex.Message, "Error");
            }
        }

AddNode is the second. It is simply responsible for taking the XML node and filling the tree branch with it.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
        private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
        {
            string strCheck;
            XmlNode xNode;
            TreeNode tNode;
            XmlNodeList nodeList;
            int intLength;
            int intStart;
            int intEnd;
            int i = 0;
            if (inXmlNode.HasChildNodes)
            {
                nodeList = inXmlNode.ChildNodes;
                for (i = 0; i <= nodeList.Count - 1; i++)
                {
                    string tester;
                    xNode = inXmlNode.ChildNodes[i];
                    tester = xNode.Name.ToLower();
                    if (xNode.Name.Contains(':'))
                    {
                        inTreeNode.Nodes.Add(new TreeNode(xNode.Name.Split(':')[1]));
                    }
                    else
                    {
                        inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
                    }
                    tNode = inTreeNode.Nodes[(int)i];
                    tNode.ContextMenuStrip = treeviewmenu;
                    AddNode(xNode, tNode);
                }
            }
            else
            {
                if ((inXmlNode.OuterXml).Trim().Contains("></"))
                {
                    strCheck = (inXmlNode.OuterXml).Trim();
                    intStart = 1;
                    intEnd = strCheck.IndexOf("></") + 3;
                    intLength = strCheck.Length - intEnd;
                    strCheck = strCheck.Substring(intStart, intLength - 1);
                    if (strCheck.Contains(':'))
                    {
                        inTreeNode.Text = strCheck.Split(':')[1];
                    }
                    else
                    {
                        inTreeNode.Text = strCheck;
                    }
                    inTreeNode.ContextMenuStrip = treeviewmenu;
                }
                else
                {
                    strCheck = inXmlNode.OuterXml.Trim();
                    inTreeNode.Text = strCheck;
                    inTreeNode.ContextMenuStrip = nodemenu;
                }
            }
        }

I added it to a WinForm and added some exporting functionality. You can see it below, I took my RSS feed from here, and put it into the tree view:

You can download XML Former for you to try for yourself. Let me know if you have any questions.

Posted on May 7, 2013 by

SurpassHosting (HostDime) Support Quality is Deminishing

Oh, Surpass, why must things be this way?

I have had a co-located server from SurpassHosting for several years. In my time there, I would have gladly recommended any one to use them (or their parent company, HostDime for that matter), but as time goes on, and as they continue to grow (I’m assuming here), their support is getting much less helpful, quick, and efficient.

There have been several support cases that I have had with them where they have shown a very lackadaisical approach to support. I think it’s pretty clear that their left hand isn’t talking to their right, and they are having their level one tech spend more time troubleshooting issues that are out of their realm. These cases went on for a very long time with very little progress being made. It wasn’t until we tweeted about them, that we started going any sort of help assistance. Even then, they started doing “troubleshooting” that they had already previously done. I finally tweeted that I was done with @HostDime and this is when they asked to help. I sent them a message that contained this:

The issue is not one ticket in general. It’s the overall view of the support and your support staff. They don’t seem to care, nor do they seem to be operating as they should.

They are unable to explain why anything happens, why anything is wrong, or why anything magically occurs. Granted hardware is a slippery slope and CAN be very difficult to work with. Especially when you deal with virtualization and servers that other people manage. I get that. I am a senior support engineer for IBM and work with all OSes on very complex applications. I know what it’s like to work on these types of issues so I sympathize, but when the issues you are dealing with are very complex, you need to make up for that lack of “knowing whats wrong” with the customer by making them feel like you are organized, structured, and are on top of the issue. This is where you have fallen short. If I were to support my customers anywhere near the way you guys have, I would be without a job.

The real trouble comes from the lack of mannerisms and management of the cases. Let’s take a look at a few examples for you to find my frustration.

1.) My current issue: 682905 – This issue could have been simple. The server halted for whatever reason. I opened a ticket for the issue as when I tried to trigger the restart from the core panel, I received an error. It took an hour and 15 minutes for your level one tech to tell me that the server had been “restarted” by him and that I could have done that myself in my panel. An hour and 15 minutes….. At any rate, after I replied to this, the case was escalated to level 2 and they found that my BIOS settings had magically changed, because ya know, those values stored on CMOS always magically change. Now, I have asked for what I need to get a minor refund on this issue since your SLA was not met. Since that request is has moved from Accounting to Client Relations, no less than 3 times. People must not think that gets paid attention to. Here we are, past noon Eastern Time and they still haven’t replied but it has been “actively viewed” several times throughout the day….

2.) [Name Redacted]‘s issue 645984 – Now, while I am sure that you can’t talk to this one since I am not on his account, I can assure that I was involved in every piece of it and most of those replies were from me. There were SEVERAL instances where your support staff couldn’t even tell us what had changed from the last technicians post. This in itself is asinine. If they make changes, they need to be documented! Additionally, they spent 2+ weeks chasing a rabbit down the rabbit hole and they weren’t even close. Which I pointed out to them several times. It wasn’t until we tweeted we started getting someone that was competent to look into the issue. At that point we had to go down the route of several things we had ALREADY TRIED. I am not sure whether this is because we were lied to before, whether it wasn’t done correctly before, or what, but this type of stuff should not happen.

These are the kinds of things that have been rampant in the more recent cases that we have both had on our accounts. It is becoming more of a burden then we can afford to have at this point in time. The 3rd account is a startup company which promises to grow very large, very quickly. We CAN’T afford to have improperly supported servers when that time comes. We have been exploring our options and you are likely going to lose 3 accounts over this. My goal is to not hurt you, or make you afraid, as I am sure that we are merely a drop in a bucket for how many clients you have, but you should know I do have some resentment over this though, as I used to love hostdime and would recommend you to anyone in a moments notice. I now feel like I would be doing that person an injustice if I recommended your services.

We never received a reply from anyone, or any kind of sign to show us that they would do their best to prevent these issues from occurring again. At this point in time, I am looking at my options to move to another host as soon as I find the right price/support/reliability ratio.

Posted on May 2, 2013 by

Why you shouldn’t use Hypernia gameservers

One month before the release of Battlefield 3 & Modern Warfare 3, we at GSN Gaming realized that because of our recent growth it was time to get away from pay per slot servers and rent a dedicated gaming machine. We only had one requirement: It had to be able to handle multiple Battlefield 3 64-slot servers. After shopping around for different server providers we ended up having to decide between Nuclear Fallout & Hypernia.

After many clan meetings to go over details and pricing, we finally decided that a 2x Intel Xeon Westmere E5620 2.4GHZ server from Hyperniawould support the growth of our community. We were assured over phone calls and emails with Hypernia that this server would be handle many 64-slot Battlefield 3 servers, as well as any other games we wanted to run. (This is after they had done testing of their own during the open beta). We were excited to finally have our own box. Little did I know how big of a mistake this move would be.

One Month Later
Battlefield 3 launched and many servers from many providers were not able to run 64-slot servers without lagging, rubber banding and crashing. We contacted Hypernia and they told us it was not the performance of the server, but rather the actual BF3 game files. DICE did the best they could to quickly release patches to fix these issues. In the meantime to decrease the lag, rubber banding and crashes, we reduced our slot count to 48 on each battlefield 3 server. Anymore then 48 players would cause issues. Patch after patch came, but none that fixed our problem. We continued to submit support ticket after support ticket to Hypernia about these issues. They assured us again it wasn’t their server and instead was DICE & Punkbuster and it would probably be fixed in the next patch. So we waited.

Three Months Later
Around the R12 patch we were still having these issues. I quickly started reaching out to other server companies to see if their servers were still seeing these issues with 64 players. Many server providers responded with “We haven’t seen these issues since the R8 patch.” My jaw dropped. This whole time Hypernia was saying that it was DICE, when it clearly was our 2x Intel Xeon Westmere E5620 2.4ghz server. I quickly brought this to the attention of the support staff at Hypernia. Over and over I asked them straight and to the point questions on whether our server could handle Battlefield 3. Every reply I received ignored my direct question and blamed the lag on everything but them. I knew Hyperniahad lied to us and they just gobbled up $1,200 (3 months) of our community donations. I was furious.

Around this time I found a forum thread from another gaming community called Geezer Gaming that was having the same exact issues as us. Guess who was their host? Hypernia. Guess which server they had? The same server as us. I quickly got ahold of the clan leader, and after 20+ emails, we realized we had both been ripped off. Geezer Gaming then told us after 7+ years of hosting with Hypernia they could not believe they did this to them, and that they planned on moving to NFO servers as soon as possible.

Time To Take Action
The next day I started talking with Nuclear Fallout support about switching over. Both the support team and the NFO president John were EXTREMELY helpful with my questions and always replied within minutes of my email. Even though it was clear at that point that we needed to move server providers, I felt bad because the community here at GSN had worked so hard everyday to keep our servers running and full to raise the rank of the server. Moving meant we were going to disappear from players favorite list and have to start all over. After talking with the members at GSN, everyone quickly agreed we needed to move. That day we put in a cancellation for our server with Hypernia, and put in a new order for a E3-1270 dedicated server from Nuclear Fallout. This was the best decision we could have ever made for GSN Gaming.

Within 1 day, our server was installed and ready to be used. (We waited 9 days for our server to be setup with Hypernia). We quickly installed (4) Battlefield 3 64-slot servers on our new machine from NFO and played for hours without any type of lag or rubber banding. Within 2 weeks we have been able to get our server ranks back to where they were with absolutely no lag, rubber banding or frequent crashing.

I took the initiative to write a lengthy e-mail to Hypernia in hopes to explain why we were frustrated and felt that it was largely their responsibility. Their response to this e-mail was simply: “no”. They claim they couldn’t do anything we had asked for and refused to be of any assistance at all.

The Moral of the Story
If your thinking of going with Hypernia, don’t do it. Save yourself the hassle, stress and disappointment and just sign up with Nuclear Fallout. They are more expensive then the competition, but their service, servers and support is worth every single penny.

Posted on April 30, 2013 by

Welcome to ParoniLaw

My name is Paronity (Mike, actually) and I am an engineer by trade, engineer by hobby, and engineer by birth.

I have always had a fascination for all things technical from programming and networking to mobile-electronics and all things web. The ParoniLaw things was thrown at me by a member of a community that I am involved in. I am not sure why, but it just stuck. Now, some stuff about me…

I spend a lot of my time taking care of my amazing family:

  • Wife: Lynn
  • Sons: Alex, Thomas and Kevin
  • Daughter: Cadence
  • Dog: Duke
  • Cats: Ducky, Sam, Wheezy

They take a lot of my time, but that does not prevent me from being extremely active in my gaming community over at GSN Gaming. I am a Head Admin over there and I put a lot of time in making sure our servers and community as a whole, run as smoothly as they can. It is a great community to be a part of and it really has some great people in it.

I work as a Software Support Engineer for IBM on a piece of their software called DataExplorer. It is a corporate search engine tool used to help companies take advantage of their data by providing a centralized location of all of their indexes and various faucets of data. In my spare time (what little I have), I program tools and applications daily just to increase my knowledge and skills in that area. I am self-taught in everything that I know and am eager to learn new things every day.

One of the biggest projects that I took on was a Call of Duty RCON tool that I designed and coded from the ground up. It’s called Paronicon. It can manage multiple server from one application and can do them simultaneously. It will mange CoD4 MW, World at War, MW2 (4D1 servers), and Black Ops I.

Hit me up in the comments if you have any questions. You can also reach me on twitter @Paronity