Geoff was busy at his desk. The morning was already filled with moments of regret -- mostly the regret of not calling in sick. The billing system misfired over the weekend and spit out errant bills for hundreds of customers of Bright Star Power and Gas. The calls were coming in pretty briskly, and tensions were high as the billing system has been put on hold until a fix can be put in place.
Stop the bleeding then fix the data. Get the customers whole again. A routine that is performed all too often. Geoff didn't realize it yet, but he was the reason for all this. He was the reason for the last dozen or so of all this.
The billing system has been in the wild for almost a decade now. It started out as a shining example of a new system built the right way. The perfect way. Flexible, forward thinking, the last system that needed to be built. Perhaps it would have stayed that way if the original, motivated team stayed together. If requirements didn't evolve and a system that didn't quite evolve in step. If budget pressures didn't overload that team.
One by one, that team dissolved with the exception of Geoff and a seemingly never ending rotation of developers. This billing system could not keep talent. It was not shiny and new any longer. It now had band aid after band aid holding it together -- at least that is what is seemed.
Things were starting to turn around. New leadership came in and have provided support for Geoff. A new team was formed that was motivated to bringing out the best of this system and looking for opportunities to give it a much needed renovation. The bones of the system was still pretty solid. A rewrite was not going to happen, but there is hope once they realize some of the simple habits that can quickly stabilize things.
While there was a new team, new vision, and new hope, Geoff was stuck with the old habits. When an issue came up, a quick, targeted fix was put in to make the problem go away. An entanglement of conditional statements was his mode of operation and this latest fix was about to be the latest to be piled on.
Geoff, meet John. John has been here before. Has fought these battles and learned some good, simple lessons. Keep it simple. Before diving into a fix, look around. Ask yourself why is this code the way it is. Why does one fix here lead to more problems later requiring just one more fix.
In response to this recent incident, John challenged Geoff to ask himself these questions. For the short term, those questions produced a very targeted fix that stopped the bleeding. It also prompted Geoff to take a closer look after the dust settled. He created tests to confirm what he expected the behavior to be and learned about some behaviors that he didn't quite expect. This closer inspection and added scrutiny ultimately tamed this nasty bug generator -- freeing up support time for innovation time.
It didn't stop there. It was a simple lesson learned that really resonated with Geoff. From this point on he takes a look around. He asks why. He tests his assertions and learns how to improve this big system one thorough fix at a time.
Looking ahead, the system is stabilizing. Modernization efforts are now being taken on by the team. The system is becoming more nimble. Problems are now more often found through proactive search and destroy missions and less often when it hurts most.
Look around. Ask why.
Tuesday, February 4, 2020
Thursday, March 17, 2011
Thoughts on HTML 5, Adobe Flash, Silverlight
I have heard a lot lately that HTML 5 is the way to go for rich web application development. There certainly is some appeal to this thought. After all, as a web developer, it would be great to use one technology for the entire application experience. It means, one toolset from front to back and the promise of greater portability across a wide variety of devices.
However, I am skeptical. I've dealt with browser compatibility issues and it is incredibly frustrating. More and more browsers are popping up these days, not less. That means more and more testing and more uncertainty. The good thing about Adobe Flash is that it remains consistent across browsers and devices. Yes, it is a plugin, but Adobe is dealing with the browser interaction and we can focus on making our application work within a consistent runtime environment. The same can be said of Silverlight, but it just isn't as widely accepted and we don't really know if Microsoft is committed to it long term.
So what about Apple and its purposeful attack on Adobe? Reminds me of Microsoft and how it would sabotage other browsers on Windows. Apple is forbidding Adobe on its iPad, and it is not allowing Flash to take advantage of the GPU on Macs. I used to like Apple, and I still like their products, but these shenanigans do not entice me to become a developer for their platform.
Another part of the whole equation are your creative artists. They live in Adobe products. It makes a lot of sense to leverage their skills and tools that already are second nature to them.
So what are my next steps? I'll certainly learn and take advantage of more HTML 5 features, but I welcome the chance to incorporate Flash into my web applications. I may even pop in a little Silverlight as well. For you iPad users, I'll have a nice little message to display. "You should have bought a tablet that supports the web and not just the web Apple wants you to see."
However, I am skeptical. I've dealt with browser compatibility issues and it is incredibly frustrating. More and more browsers are popping up these days, not less. That means more and more testing and more uncertainty. The good thing about Adobe Flash is that it remains consistent across browsers and devices. Yes, it is a plugin, but Adobe is dealing with the browser interaction and we can focus on making our application work within a consistent runtime environment. The same can be said of Silverlight, but it just isn't as widely accepted and we don't really know if Microsoft is committed to it long term.
So what about Apple and its purposeful attack on Adobe? Reminds me of Microsoft and how it would sabotage other browsers on Windows. Apple is forbidding Adobe on its iPad, and it is not allowing Flash to take advantage of the GPU on Macs. I used to like Apple, and I still like their products, but these shenanigans do not entice me to become a developer for their platform.
Another part of the whole equation are your creative artists. They live in Adobe products. It makes a lot of sense to leverage their skills and tools that already are second nature to them.
So what are my next steps? I'll certainly learn and take advantage of more HTML 5 features, but I welcome the chance to incorporate Flash into my web applications. I may even pop in a little Silverlight as well. For you iPad users, I'll have a nice little message to display. "You should have bought a tablet that supports the web and not just the web Apple wants you to see."
Wednesday, February 16, 2011
BlackBerry PlayBook is almost here
We're about a month away from the release of the PlayBook. Thanks to a marvelous offer from BlackBerry to its developers, I have a chance to get one for free. My application is submitted and waiting for approval -- fingers are crossed.
As far as the development experience goes, it was a very interesting learning experience. I had never programmed for the Adobe platform before, and the QNX API also presents another new wrinkle to learn. I had always wanted to learn Action Script programming, so I achieved that goal and hopefully get some real reward out of it as well.
Another first was registering as a BlackBerry vendor and going through the application process for my first published mobile application. Waiving the registration fee for the first year was a brilliant move since I would not have even attempted this if I had to pay $200 up front. While my first application is purely functional and not all that visually stunning, the focus of my next application (assuming I can get a device) will be more fun and also hopefully earn enough to offset the annual fee and development tool cost.
Now, I just need to wait for the "Congratulations!" email.
As far as the development experience goes, it was a very interesting learning experience. I had never programmed for the Adobe platform before, and the QNX API also presents another new wrinkle to learn. I had always wanted to learn Action Script programming, so I achieved that goal and hopefully get some real reward out of it as well.
Another first was registering as a BlackBerry vendor and going through the application process for my first published mobile application. Waiving the registration fee for the first year was a brilliant move since I would not have even attempted this if I had to pay $200 up front. While my first application is purely functional and not all that visually stunning, the focus of my next application (assuming I can get a device) will be more fun and also hopefully earn enough to offset the annual fee and development tool cost.
Now, I just need to wait for the "Congratulations!" email.
Tuesday, September 14, 2010
Brain Clutter
Have you ever been faced with so many possibilities that you simply cannot make a choice? I find myself in that position when in a large store or when looking at a large volume of interesting information. For some reason, I need to pick the right item to buy, or the right tool to get the job done. I spend so much time analyzing that I typically get overwhelmed and abort the mission.
Some of it may be related to that rule of the brain only being able to process a handful of items at a time. Maybe it is all the different paths a choice like that could take that overwhelms my brain. When faced with a large volume of information to analyze to solve a problem, this paralysis of the brain is not evident.
Of course, this simply could be a side effect of the talents God has given me. We know that everyone isn't created equal and people's talents are widely varied. Maybe what makes me good at solving problems, makes me horrible at being spontaneous and taking those leaps without analyzing every possibility.
Hmm... Maybe I just need to take my on advice of "Just Do It" and to heck with the consequences.
Some of it may be related to that rule of the brain only being able to process a handful of items at a time. Maybe it is all the different paths a choice like that could take that overwhelms my brain. When faced with a large volume of information to analyze to solve a problem, this paralysis of the brain is not evident.
Of course, this simply could be a side effect of the talents God has given me. We know that everyone isn't created equal and people's talents are widely varied. Maybe what makes me good at solving problems, makes me horrible at being spontaneous and taking those leaps without analyzing every possibility.
Hmm... Maybe I just need to take my on advice of "Just Do It" and to heck with the consequences.
Sunday, September 6, 2009
Just Do It
No, this isn't a Nike commercial. This is for all the people who have always wanted to do something, but haven't yet. We get all caught up in our daily lives, that it becomes hard to reach into your "someday" list and just do something from it. I am certainly one of those people, and it really feels good when you do grab something off that list and just give it a try.
For years, I have been wanting to get back into electronic tinkering. When I was in Engineering school, I greatly enjoyed the many projects we worked on. It is quite amazing some of the thing we had built. From a 600 baud modem, to a switching power supply to a digital control system. That was some cool stuff. Unfortunately, the direction my career took led me down the software route (not that I am complaining, it has been a great ride) and I lost the urge to tinker.
This year, for my birthday, I took the plunge. I bought an Arduino learning kit from the MakerShed and have been soldering away this holiday weekend. I still have some birthday funds remaining, and that is going to more tools and storage containers for my workshop. Halloween at our house is going to be cool.
Coming this spring, I'm taking another item off my someday list, and will be learning to kayak.
Don't be afraid. Get your list out, pick something and just give it a try. It'll expand your world and you will feel so good afterwards.
In case you are interested in getting started on Arduino, take a look at these resources:
For years, I have been wanting to get back into electronic tinkering. When I was in Engineering school, I greatly enjoyed the many projects we worked on. It is quite amazing some of the thing we had built. From a 600 baud modem, to a switching power supply to a digital control system. That was some cool stuff. Unfortunately, the direction my career took led me down the software route (not that I am complaining, it has been a great ride) and I lost the urge to tinker.
This year, for my birthday, I took the plunge. I bought an Arduino learning kit from the MakerShed and have been soldering away this holiday weekend. I still have some birthday funds remaining, and that is going to more tools and storage containers for my workshop. Halloween at our house is going to be cool.
Coming this spring, I'm taking another item off my someday list, and will be learning to kayak.
Don't be afraid. Get your list out, pick something and just give it a try. It'll expand your world and you will feel so good afterwards.
In case you are interested in getting started on Arduino, take a look at these resources:
- www.arduino.cc -- The official Arduino site. It is such an easy kit to use.
- www.makershed.com -- They have cool kits and don't forget to jump over to the Make magazine portion of the site.
- www.parallax.com -- For those who want more robot-centric kits. The Boe Bot is a good one. Their support staff is very helpful.
Friday, September 4, 2009
Secure Computing -- PCI
Working for a financial services client where sensitive information is exchanged, I have learned that it is important to understand the new rules of secure computing. It is becoming very important to understand the Payment Card Industry Data Security Standards (PCI DSS). Even if your company or your client is not seeking a PCI certification, following these standards will help to reduce your vulnerability to a breach of sensitive data into the public domain.
Here are a few quick rules to follow that will get you started:
Here are a few quick rules to follow that will get you started:
- Try to avoid exchanging personal account numbers (PAN).
- If you must exchange PAN data, do not let the data remain unprotected at rest. Encrypt the data in transit and keep it encrypted whenever the data comes to rest.
- Remove PAN data exchange from your business processes. Never let a credit card number out in an email or be saved in an insecure location.
- Limit access to your applications and secure web sites.
- Limit access to your network.
- Code defensively. Use the tools and guidelines from a security organization like OWASP.
Like all security measures, there's no quick fix. Protecting your systems and data is an ongoing task. You will need to build this into your company's culture and continuously enforce your standards. This is one of those ongoing battles where a victory means that you have no excitement to deal with -- which allows you many clear nights to spend thinking about cool stuff.
Subscribe to:
Posts (Atom)