Martin Cowen (46)

Repairing an IKEA drawer unit

This had broken due to the weight of the items in the drawers causing the brown plastic runners to break. It's not that easy to find replacement runners, and in any case, they are likely to break again if they are used with this much weight - the unit is clearly designed for clothes, not paper files. It was clear that I needed to find a metal runner that could fit in the same slots to replace the plastic runners. Luckily, the slots in the drawers are a standard width and length: 17mm width and 350mm length, so these metal runners fit. They need securely fixing into the chipboard side panels, but an ordinary wood screw is not going to be able to take the weight. The pressure on the bits of chipboard just under the screws would be too…

Continue reading...

Why Can't You Change It? It's Software isn't it?

Everyone expects software to be soft. To be easily changeable. At least more easily changeable than hardware. But that is not always the case, sometimes it is easier to redesign the hardware than the software, but why and what do we mean when we say it is difficult to change software? Before the product has shipped, it should be easy to change both the hardware and the software as necessary to achieve the design. After the product has shipped, the hardware is fixed and you can only change the software. But there are often difficulties in changing software that mean it isn't as flexible as it might appear. What do we mean when we say it is difficult to change software? Let's start with what we don't mean. We don't mean that it's too much typing, or too many files,…

Continue reading...

Fast reading of Excel worksheets into a .NET program

Reading data from Excel into a C# or VB.NET program using Interop.Excel.dll can be very slow because each read operation goes through a slow path in Windows (about 50ms), so instead of looping through each Range or Cell object to read one cell at a time, it is much better to read the entire Range (multiple cells) of interest in one go, and then do the looping on an array inside the program, without having to pull data in from Excel on each iteration. First get the dimensions of the sheet you wish to process. Here is a handy function to do that: ''' <summary> ''' Gets dimensions of Excel worksheet, assuming the first used cell is at (1,1). ''' </summary> ''' <param name="w">Worksheet object</param> ''' <param name="numrows">Returns the number of rows found to be used in the sheet</param> '''…

Continue reading...

The Product Support Trap for Development Engineers

In all the companies I have worked, when the product development is finished it gets passed on to manufacturing and product support but the original developer retains ownership of the design. It's important that the product support department gets full training on how the product works, how to use it, how to diagnose problems in the field and on the bench, and what happens under misuse and failure conditions. But I have never seen a product support department really own the design to the extent that they could diagnose down to component level in the hardware or line of code in the software, which means that the last line of technical support comes back to the R & D engineer. Too often, that last line is perilously close to the first line, such as when the support team are understaffed…

Continue reading...