Google+ Badge

Tuesday, December 20, 2011

MigCalendar = slow progress

While MigCalendar might be powerful and flexible it is poorly documented and there is pretty much non-existent support on the Web. The company locked down their forums so you can only submit bug reports. I did just submit one so I hope I get an answer to what seems something simple really soon. I hate it when you don't have access to a forum to share problems and solutions with other users.

I did break down what I am attempting to do into a single source code file. I want to get as much running as possible in that before I integrate with the main product. I have been doing work in the main product too and running into the same issues. With all the other work I am attempting in the main product I don't want to get my lack of knowledge of MigCalendar to get in the way of my lack of knowledge on the rest of the scheduler.

I have looked for other products that support our needs and have found nothing. I can find simple calendars that show a day, week or month of events for a single person and with time on left and day above but we need to show times for facilities / room, providers, etc. I need a flexible header and activities driven by categories. I need to show overlapping appointments.

It is getting close to fish or cut bait time. This happens with a lot of 3rd party controls. You get a nice demo going or get a first cut of your code running then you start to run into walls. I am not sure if some of the walls can be broken down here or if they are solid limitations. Writing a header, footer, time range and full grid with drag and drop would take a lot of time but in the end you get exactly what you need. I have written plenty of custom controls in Java and other languages so I can tackle this. Start with a small piece and build it up until it all works.

Others in the office have had the same experience. They can fix an issue here and there, tweak the look and then get out quickly. The open issues have been left open because no one has been able to fully understand what MigCalendar does. I have it working better in some places - especially with two level deep categories in the header - but broken in so many others. We know it can run fast, you can see that in the demos, but our code is rebuilding too many things as things are selected. The demos tend to just have one layout where we allow the user to toggle how they are looking at things similar to pivot tables in Excel. It has to recalculate too many things about the activity when this happens. That also leads me toward doing a custom solution that is optimized for the data we have. Generic is wonderful when you can pull it off but there are times you need things to do exactly what you want and do them very fast.

When I was working in the stock market industry I wrote a custom grid in Java to do high speed painting of real-time market data. It could handle a lot of updates using dirty cell paint management and doing paints on a quarter second timer. For a long time it was used by one of the big "do your own trading" places that you see advertise on TV. Not a scam place, a legit trading company that is still around. Sure I can look over that code and get some ideas. It was all Java 1.1 AWT and I did a conversion to 1.2 Swing at one point. Old stuff but highly optimized.