I was absolutely amazed by what people set forth to achieve, especially something so adventurous such as creating a camera that can take an image at a gigapixel resolution (that is a thousand times more resolution than your standard 1 megapixel camera of today). Check it out.
Admit it - the photo below intrigues you? Right? If not, then click the back button on your browser now to avoid any possible head injuries.
Warning and Disclaimer: If you are a sensitive reader or easily offended, do NOT read any further.
I have several strong opinions (note - these are all my own, personal and humble opinions and should be interpreted that way) on several aspects of society. I want to start with developers. By developers I refer to anybody that designs and writes computer programs. Traditionally, when the whole concept of programming started way back in the 60's and 70's (excluding the VERY early days as I know nothing about that :)), developers were very, very different people than the modern developer of today.
As an illustration, those days developers did not have the luxury of a PC (Personal Computer). They shared a mainframe on which they developed their respective applications. You had to book your time with the mainframe several weeks ahead in order to debug and test your code. This had several important consequences. Firstly, because time was a luxury and not a given, it was absolutely imperative for developers to make sure they maximise their productivity for each session on the mainframe. To maximise your productivity, it was obvious that you could not spend your time debugging faulty code. Time was much better spent ensuring that the program worked correctly than on debugging. They managed to do this by debugging their code using pen and paper. Yes, you heard right. Pen and paper. They used variable inspection tables and lots of different diagrams to trace the dynamics of the application before even running it on the mainframe. It was also quite expensive to punch the wrong program on the punch cards in use at that time, so in order to optimise your efficiency the program had to be as close to perfect as possible the first time.
Mathematics is, for most people, something you use in order to calculate the total price of groceries, make some year end financial calculations, for engineers it could be to do some FFT's (Fast Fourier Transforms) etc. The concept I want to portray is that I am rather sure most people assume mathematics is correct, sensible and without any inconsistencies - they just use it unconditionally in their everyday life.
Well, fortunately I will not completely burst your bubble about mathematics. It is indeed correct, consistent and sensible in the right frame of reference. But how can we be so sure that what we call mathematics, is indeed correct? The answer lies in the concept of mathematical theorems each accompanied with a rigorous proof, and axioms.
Based on a recent discussion I had with a friend of mine, I am curious to know what other people think.
The discussion revolves around the use of defensive programming techniques, as implicitly discussed in my recent article. I am going to discuss two issues.
public void doSomething(SomeClass pClass) {
... // Do some things
pClass.executeSomeFunction();
... // Do some other things
}