As a computer programmer I am intimately familiar with the ideas of logic as being answers that can be reduced to a true or false response. The idea of logic as a philosophical discipline, the method of thinking for thinking's sake, has fallen into disuse as an overt exercise.
I have recently been involved in thought as a sort of hobby and have realised that thinking itself is as difficult as some of the more obvious disciplines of mathematics or engineering, both of which I am involved in to some level.
I have been inspired by the work of George Boole, not because of his contribution to computing but to his assertion that every question can ultimately be met with a response that might be reduced to the possibilities of true and false. Logic and thought as an analytical process can be considered to be the reduction of any question to a series of statements that will satisfy those conditions.
Ultimately we might ask "Can a cow jump over the moon?" but in order to say "No" in an unequivocal and unambiguous manner a series of reductions must be made such that we can state with certainty that a cows legs will not be able to generate the power needed to overcome gravity and friction and that the cow itself would not be able to survive for long enough in space to cover the quarter million miles from here to there.
Indeed, to say that a ow cannot jump over the moon might reach down into questions of genetics, engineering, physics, history and many other areas. It isn't enough to simply say no intuitively.
I am certain that Boolean-logic is capable of providing a true or false answer to each and every question asked. Logic however isn't the rendering of answers by the algebraic manipulation of true and false statements, it is the process of arriving at a set of concise questions that might render those questions that have only true or false answers.
Insightful, profound, generous, witty, genius; all words that might be used somewhere in this blog.
Monday, May 27, 2013
Thursday, May 23, 2013
Big solutions big troubles
A recurring theme in companies that I see all over the world is the huge agile solution.
The trend for continuous refactoring and the modular nature of modern software projects mean that application solutions containing dozens or even hundreds of sub projects are common.
Not so long ago I worked for one company that had eighty-five projects under the same solution and their style of continuous refactoring meant that all eighty-five projects had to be built every time.
Two constants spring from this style of work. Firstly, the time to build a project is not necessarily linearly linked with the number of projects. Inadvertent cyclic dependencies can force compilers to process one project several times. Secondly, the productivity of a software design team will be closely linked to its familiarity with a product. Several agile teams working on the one solution all with a mindset of continuous refactoring will pretty soon mess up any possibility of a stable API if your system contains anything resembling a framework.
A company that supplies developer tools has an obligation to provide backwards compatible APIs to their customers and having been both a provider and consumer of these tools I know that resisting the temptation to refactor a tool provides customer satisfaction when the developers don't need to think too hard when upgrading to the latest and greatest version.
My own philosophy is to split out large solutions into groupings of smaller projects that can be treated as providers and consumers of internally developed and externally sourced tools. Here, the all-too easy style of continuous refactoring that has been made possible by tools such as ReSharper and now what is built into Visual Studio and other tools becomes a choice that is applied in the way most efficient for the project. People working on front-ends and consuming the frameworks can refactor all day long but people wo provide the frameworks must have the mindset of a tools developer and maintain familiarity and compatibility at all costs.
The trend for continuous refactoring and the modular nature of modern software projects mean that application solutions containing dozens or even hundreds of sub projects are common.
Not so long ago I worked for one company that had eighty-five projects under the same solution and their style of continuous refactoring meant that all eighty-five projects had to be built every time.
Two constants spring from this style of work. Firstly, the time to build a project is not necessarily linearly linked with the number of projects. Inadvertent cyclic dependencies can force compilers to process one project several times. Secondly, the productivity of a software design team will be closely linked to its familiarity with a product. Several agile teams working on the one solution all with a mindset of continuous refactoring will pretty soon mess up any possibility of a stable API if your system contains anything resembling a framework.
A company that supplies developer tools has an obligation to provide backwards compatible APIs to their customers and having been both a provider and consumer of these tools I know that resisting the temptation to refactor a tool provides customer satisfaction when the developers don't need to think too hard when upgrading to the latest and greatest version.
My own philosophy is to split out large solutions into groupings of smaller projects that can be treated as providers and consumers of internally developed and externally sourced tools. Here, the all-too easy style of continuous refactoring that has been made possible by tools such as ReSharper and now what is built into Visual Studio and other tools becomes a choice that is applied in the way most efficient for the project. People working on front-ends and consuming the frameworks can refactor all day long but people wo provide the frameworks must have the mindset of a tools developer and maintain familiarity and compatibility at all costs.
Tuesday, May 07, 2013
Windows 8 U-Turn
Problems dogging the Windows 8 operating system since its release last year have gone from bad to worse. Lackluster sales of the new system and its inability to compete in the walled garden environment of the trendy app store in the way that Apple do so perfectly and upon which Google seems to be thriving have cost Microsoft dearly over the past year.
Metro as it began and now just an uninspiring Windows 8 was supposed to have placed Microsoft`s operating system onto tablets and touch screens everywhere but instead has just alienated the core user, the business client. Now Microsoft are scrambling to undo the damage by reinstating features such as the start button and enabling the Explorer interface to be configured at install instead of the tile screen.
Since the earliest days of .net when I first saw the managed environments that were being used at the time on the Pocket PC and that later became the virtual machine of the .net framework I have been keen to see Windows running on non PC platforms because I know it would be great if done right. Windows 8 however wasn't done right and the attempt to turn Windows into competition for IOS and Android at he same time was a poorly thought out disaster.
The only way Microsoft will redeem themselves is to go back to providing a full multi-tasking operating system that can run any .Net based application on any machine with a Microsoft OS. I guess that as opposed to three years ago, more than 50% of my day is spent on non Microsoft systems because Apple and Google have made my user experience seamless and simple. I don`t use my Windows tablet or my Windows phone because they are too different to my PC.
So, here Iam. a staunch supporter of Microsoft, editing my blog on my Macbook-Air and using my iPad and iPhone through a network provided by my Android based LG-400.
When I write code for MS systems now I use Virtual Box to run Windows on my Mac because the Air`s battery life is so much better than any tablet or Windows laptop and the integration across apple systems, to quote Apple themselves, "just works"
Microsoft have rested too long on their laurels and look to be too old and broke down to compete unless someone in the company gets a jolt of caffeine real soon! Shame on you guys.
Metro as it began and now just an uninspiring Windows 8 was supposed to have placed Microsoft`s operating system onto tablets and touch screens everywhere but instead has just alienated the core user, the business client. Now Microsoft are scrambling to undo the damage by reinstating features such as the start button and enabling the Explorer interface to be configured at install instead of the tile screen.
Since the earliest days of .net when I first saw the managed environments that were being used at the time on the Pocket PC and that later became the virtual machine of the .net framework I have been keen to see Windows running on non PC platforms because I know it would be great if done right. Windows 8 however wasn't done right and the attempt to turn Windows into competition for IOS and Android at he same time was a poorly thought out disaster.
The only way Microsoft will redeem themselves is to go back to providing a full multi-tasking operating system that can run any .Net based application on any machine with a Microsoft OS. I guess that as opposed to three years ago, more than 50% of my day is spent on non Microsoft systems because Apple and Google have made my user experience seamless and simple. I don`t use my Windows tablet or my Windows phone because they are too different to my PC.
So, here Iam. a staunch supporter of Microsoft, editing my blog on my Macbook-Air and using my iPad and iPhone through a network provided by my Android based LG-400.
When I write code for MS systems now I use Virtual Box to run Windows on my Mac because the Air`s battery life is so much better than any tablet or Windows laptop and the integration across apple systems, to quote Apple themselves, "just works"
Microsoft have rested too long on their laurels and look to be too old and broke down to compete unless someone in the company gets a jolt of caffeine real soon! Shame on you guys.
Subscribe to:
Posts (Atom)