Thursday, December 19, 2013

From concept to reality in 6 weeks - part 24

I tried to get a few hours of sleep. I went to bed at 10:30pm exhausted and needing sleep. I have a big demo of what is working today at 9am so I wake up at 4:30am worried about the app still not working. Thankfully the mapping engine lead had worked thru the night, which sounds harsh but those are his normal working hours. This day is paid off. After a wake up shower I checked my email and sure enough there was 3 emails from him waiting for me. He had just got to bed when I was starting. He did not fix my problem but had several suggestions. After eating a quick breakfast and taking a deep breath I was ready to go at 5:30am. I had 3 hours to get it all working again so in I dig.

I had misunderstood how to use the mapping engine on Windows as it is very different from iOS in loading resources and managing threads. I needed to load all of the images up front and then create a map layer and only update the markers on the layer when it needed to be updated dynamically. It was time to start some major rewriting.

At 8:10am I finally got all of the map layers to display the markers correctly. Just when I thought I needed to hurry up and face a traffic jam on the freeway, I forgot that I have no access to the internet at my customer's office so I had to make an installable build and then email it to myself and then download it on the demo machine. That took me 30 minutes so I was in the car racing to the office 30 miles away. I turned on the radio and found out that there was a wreck half way there. The only problem by that time I heard about the wreck is that I had no other way to get there. As I entered the stand still traffic, I called my customer to let me know I would be late. I reached the office 15 minutes late.

The demo went really well and I entered tasks that were required to be fixed for the conference, where my app would be shown in the first week of January, as they came up in our discussion. There was a brief talk about running out of money but my main task was to find out what would make him happy for the final product I needed to have delivered to him. I definitely captured all of that important information. About half way thru the morning discussion a guest arrived who was the fellow in charge of the server API I was using to load the data. We discussed a couple of issues I was having and we decided to put a back up plan in the app to load 24 hours of data from local files on the computer in case the WiFi at the conference did not work, which is fully expected to have issues as it does every year! Good thing I added all of that code to read from files when I was stuck in a Starbucks with no working WiFi.

I visited another client only a mile away on the same road and the person I was supposed to meet was not there so I moved on. I decided to call my old work buds and have lunch with them since I was going right by their office and I needed a serious break anyway. Then of course I had to make my rounds and talk to everyone I knew that I saw in my old work building. Old is not really an appropriate word as there is nothing old about the building - maybe previous palatial mansion would be a better word. It was a great and well needed break from constant eating, breathing and sleeping Windows Store app code.

As I left my previous employers digs, I decided to drive to the Starbucks that had Google Business Class WiFi and call the mapping engine lead to see if he could meet me and help me work thru the critical issues. I was there less than an hour when he showed up.

For the next 4 hours we worked thru issues, crashes and general Microsoft debugging stuff I never wanted to know about. I had to read up a bit on using await and async in Windows Store apps. This is really a feature in VSE that is supposed to make asynchronous programming very easy. I must admit it is very easy but I needed to get a better understand since I was definitely seeing random crashes and thread problems. Some of the tools we used on his machine as these tools were so low level that they scared me and I did not want them on my machine. The first scary tool was called WinDbg and the reason it was scary is that you run the command and it changes registry settings and if you don't forget to change them back or remember how then your executable program will launch and then immediately enter into the debugger. Just the user interface alone was scary enough to just forget I ever saw it. The next scary tool was Application Verifier which seemed really super helpful but there again it changed registry settings. Anything that needs to change the registry is not going to happen on my machine. The mapping engine lead showed me how to enable checks to run automatically and how the reference app he wrote would fail all of the time. That is not what I wanted to know but I did see this tool's usefulness.

After 4 hours, I had even more tasks as I was basically testing the app the whole afternoon long as I was trying the duplicate the crashes I had been seeing. I found a couple of problems in my code that I immediately fixed. As I was fixing them we would discuss how I was doing things and he would suggest improvements. I recorded those in new tasks. This was the most important thing I could be doing as I need to make sure the app did not crash at all and was bullet proof for the conference. Finally after about 3 ½ hours in I got a crash. We had tried all kinds of things to get useful information on my machine when a crash occurred. We added a divide by zero in the code and could not find a way to get what we wanted. We looked at the system event log, VSE settings to allow debug symbols, basically nothing worked. Finally we found a setting in VSE File menu to saw the output as a debug dump file. My Windows laptop for some odd reason fails to read a USB thumb drive sometimes, so I had to reboot the machine and then it worked. I copied the 215mb dump file on the drive and gave it to him and he loaded it on his Mac pretending to be a Windows 8.1 machine. He has all of the Microsoft tools on his machine so was able to find out where the problem is, so I left Starbucks as I had to pick up my son at 7pm, but I knew he would find the problem for me.

No comments: