Archive for the ‘Software’ Category

Competition

Monday, May 19th, 2008
Trapper and Socks have it outTrapper and Socks in Action I happened to catch this cat fight in my kitchen (yes, it’s between actual cats, but there were no bets placed!). Speaking of fights, I have been doing some tinkering with Ruby and C# (especially using Mono). I have seen people do some magic with Ruby. It does seem to have some very powerful code generation capabilities and seems especially efficient at creating simple database driven web apps (using the Rails framework) . However, I hate the syntax! My background is PHP, Java, C/C++ and shell scripting. I really like using braces for block definition. The whole begin and end thing escapes me. Perhaps it’s the years of using vim as my “IDE”.

C# otoh seems to be a natural transition. I like the separation of the virtual machine from the language itself. Even though I think Microsoft is evil for trying (successfully?) to kill Java, they have done a good job with dotNET. But I would probably have avoided it had not the Mono folks done at even better job at making it work under Linux.

Test Driven Development

Saturday, February 16th, 2008

So I’ve changed jobs after working for nine years at my old company. I couldn’t take the travel any more. It was interesting for a season, but that season has passed. I was very appreciative of being exposed to so many different aspects of running a software business.

Now I am working for a much larger company and it is very interesting to compare the experiences. One of the big differences for me is that previously I followed no formal theory of software design. I suppose my approach was something like: capture requirements, develop rough design, identify risks, develop proof-of-concept code for the hard parts, refine rough design, code components, unit test components, integrate components, test system, document, deploy and fix bugs throughout useful life.

The group I am in now uses agile software development with an emphasis on test driven development. I can’t say TDD really works for me. Although I can see the benefits of automated testing and I think I should have been doing that all along. However, in fairness, the system that I worked the most on was some tire testing equipment. Many of the problems that I had to deal with arose from the integration of the software proper, the PLC program and the realities of a physical machine. Don’t get me wrong, I just haven’t had enough experience with TDD to make a judgment. I guess I will just have to try it for a while and see what happens.

From my past experience, I can see that TDD is definitely not the all-in-one answer to software development. For example, if I have want to implement software protection, a.k.a. interlocks, for some piece of equipment, I cannot write a test and watch it fail before I write my code. People get upset when you destroy sensitive, costly equipment.

Also, you can write a test that exercises every line of code in your module, but still not catch all the bugs. I think TDD can be useful, but you still have to think about what you are doing and what problems are likely to occur in the future. One idea that I have been exploring recently is the concept of defensive design as it relates to software engineering.

Management

Saturday, November 24th, 2007

I was reading a blog on Jack’s site and it got me thinking about project management and management in general. Jack was ranting (his word, not mine) about choosing the right tool for the job. I agreed with him for the most part. But another issue that I feel is just as important is keeping people motivated. Unless you have a horde of slaves working for you, you must always “bring” people along to where you want them. “Because I said so” barely works for my five-year-old (but it is sometimes necessary). However, when working with adults it is much more effective to encourage people to see your point of view. Those of you who have worked with me in the past, please contain your guffaws. I like to think I have mellowed a lot over the years.
(more…)

PHP/GTK

Friday, November 23rd, 2007

I am considering using PHP-GTK for a decent sized user interface project. The project has some fairly unique requirements:

  • M$ windows and X-windows support
  • Major parts (if not all) need to be easily distributed
  • Pretty fast (10 updates/second)
  • Extremely responsive (think machine control)
  • Customizable for each installation

(more…)