As a language slut, I've been around the block a few times and never really cared the company I kept, from M68000 to Ada, from Eiffel to C, I've been used and abused by the lot.
Then one day I started Java, I'm used to being on projects where sometimes the comments are the only documentation so I've become a fairly verbose commenter of code. And in Java it suddenly had a point. javadoc a tool that goes through the files, documents all of the APIs and turns them into a professional looking web site.
Having looked at some of the Linux code there are quite a few cases where this would produce pretty good docs right now, and it would encorage people to comment more in future.
Completely agree, simpler is miles better, but because you choose the simpler path the functionality may still be complex to someone who isn't an expert in that area. I know from looking at some Radar code that what is sensible to people who have studied 4D maths in depth is a mind-bending show to those that haven't. And yet when I understood the functionality I understood the code.
That is beautiful code, code that allows you to understand functionality, ideally it should teach you the functionality but most importantly it should never hinder you.
So ladies and gentlemen, use long names, use lots of comparmentalised objects, use many methods on those objects. Don't require callers to understand the internals of methods.
And remember 99% of the time the compiler writer will do a better job of optimising the code than you.
A truly obfuscated program cannot be translated into code that the average programmer can understand. Ever
Eh ? There was me thinking the Church-Turing Theorem held. Obfuscated code doesn't have to be complex functionaly (just look at some of the hello world contenders in the IOCC) they have to be complex to de-crypt into a quickly understandable form. The functionality has very little to do with the obfuscation.
A well written set of libraries for 3d graphics will in fact be very easy to understand from a code perspective, it is the functionality that is the tough bit to grasp. Obfuscated code is very different from complex functionality. Look at some of the code in the Linux kernel, wonderfully written, and if you understand the functionality you can modify it yourself, if you don't have a clue what it is trying to do its comparable to russian, this doesn't mean the code is obfuscated, but that the functionality is difficult.
Difficult code should be difficult to understand because of the functionality it implements not because someone couldn't be arsed to comment it, use sensible names and wanted 40,000 lines to run in one method with gotos.
Obfuscation is the other end of the scale, its code that is made difficult in and of itself, the difficulty of the functionality is only found after the code has been translated.
I'm not exactly sure what the difference between this and obfuscating the code is. Its not readable code its unreadable _as_ code but readable as English, a cute idea and a fine basis for a competition, but an awful way of coding. This is just, if not more, evil that obfuscation, unreadable code can be translated, readable code in this manner is misleading which can be worse.
Okay I know I'm just a kill-joy but the reason the obfuscation competitions are so good is that they make the point against obfuscation so well, this competition appears to be pushing this as a beautiful way to code. Code is beautiful in and of itself, it is its structure that lends beauty and its simplicity that defines genius. Code as poetry is ugly as code, even if it is beautiful as poetry.
The debate here is one of computers in a nutshell, what could a computer do if it was that small. When we say computer we mean our desktop/server piece of kit. With the rise of things like the PS2 the computer becomes redefined as an IP capable device with certain features. My Psion is another such device that has the PDA logo attached to it.
With IPv6 mobile computing has arrived, so pervasive computing comes into play, every device is IP enabled, every device can communicate, power isn't the problem it is application. Why would you want an intelligent kettle that can send you an instant message when its boiled, I've no idea but I'll bet we'll see it and I bet we'll buy one.
The other side is the demise of the fixed device of any kind, get on a plane, log in, thanks to IPv6 and the software developed by you are now YOU, its not a terminal its YOUR device, with a distributed framework that means you can do everything you could do on a supercomputer.
Browsing the web from a mobile, the screen is too small, just put on your glasses, hell they're the phone too (Thanks to William Gibson for that one). Mobile/PDA/Computer, isn't IMO the point, the next big thing will be the ability to use ANY device and not be able to tell the difference, and others not be able to tell it either.
IMO Sun AND MS have got the vision wrong, it isn't thin client/fat server or fat client/thin server, its applications, IP and connection, the size and distribution will render the client/server paradigm dead.
Excellent review, which almost forced me to buy the book. The finest thing about the patterns books are that we can all finally put the same names to practices we've used for years.
As it was said this is a bit of a suprise move, but surely with the advent of whole APIs like the Java Media Framework (JMF) the actual interface of the media player is becoming less and less required. The major problem I've faced on Linux is that there just don't seem to be as many codecs available that take advantage of the hardware so alot of work is done in software to the detriment of quality and speed. If the Media Player on Linux sees these codecs arrive for all to use, and to therefore enable embedding in other applications then excellent, if its yet another enclosed app then its not as useful.
Is there anyone out there trying to create a performance pack for the JMF on Linux ?
There is an excellent book by Peter Hennesy called "The Hidden Wiring" about how UK goverment works. One of the strongest parts in UK goverment is that while in theory the Queen could wield power in actuality she can not. And also while in theory Parliment can pass any law it so chooses, in reality the commitee stages and the House of Lords act as an excellent check. That said these laws do go against some pretty firm principles of british law.
And remember these laws are pretty much the same ones that currently apply to the Customs and Excise.
If the only purpose of a tool is to cause harm (say an anti-personel landmine) then both the maker and the user must hold responsibility. It is too easy to absolve responsibility claiming that is the users fault alone.
A Newton bio While Newton belived in the concept of god, he had rejected the idea of christianity, considering it a 4th century bastardisation. He wrote many times on the subject of religon and was a devout man, a chrisitan in the sense the word is applied to today he was not. His appointment as professor did not require him to swear an oath (a christian one) unto god, this was at the dispensation of the king.
Back in the days when science was young (let face it pre-Newton was a different beasty) Newton was a bit of a rebel, not relgious in the slightest and he approached the world from a logical perspective. His theories on gravity, optics and the whole shebang which tied together Kepler, Copernicus et al (I'm not a big fan of Gallileo, sounds a bit like Bill Gates to me, pushing off others ideas as his own). These guys founded modern science and of course suffered a huge religious backlash by way of various writings by christians on "why god is right and those blokes are wrong". Of course nobody in their right mind is going to stand-up for perfect spheres and the earth centred universe today, in fact the mainstream religions all except this as fact. Interestingly it was Newton's non-acceptance of religon that changed several rules in the UK (he couldn't have headed a college without swearing an oath to god, he might have refused to so they changed the rule). This could be seen as the start of the religious freedom in the UK which led pretty much directly to the Industrial revolution.
Then a while later came another Brit called Darwin, he drew together various other ideas added some of his own and produced probably the most controversial book of all time "Origin of the Species". This was an era when religon was still strong and many condemned his heresy. Various pamphlets defending the creationist view point were written and shot down by argument, debate and logic. Again today even the Catholic Church excepts evolution (if being a little shaky on abiogenesis).
Now we add to this list of people whom religons have copied in an attempt to destroy... John McCormack. Somehow I never thought I'd be able to link the three.
I can understand how using psuedo-analogue or even real analogue can lead to more realistic images. Fractals to produce better looking trees etc, sparks being blurred by the analogue signal (umm interesting, improve reality by decreasing quality). I'm probably off mark, but isn't there an issue of constraining these to produce an exact rendition of say a racing track. We can generate a load of curves to create a random track but how would a _real_ track be accurately constrained. An accurate representation of say Silverstone can be done in simple co-ordinates but I'm personally unsure as to what rules would need to be in-place to generate this with this approach.
probably comes under the "nice idea that I don't understand heading".
But the issue for people travelling to these countries (whom the releases are aimed at) is whether the infrastructure will collapse. This could effect rural areas that don't themselves use IT as emergency relief procedures that use the Telecom systems are required. For travellers its important to know that the country you are flying to has an Air Traffic Control system that will work. The report notes that for many parts of the Indian infrastructure Y2K isn't an issue (the FO notes that many power stations are analogue). India does have an IT Industry of some note, with many European and US companies having bases in India to take advantage of the reduced costs, its important for them to know what will happen as the New Year roles around.
Todays India Fact: For people in the UK, turn an analogue watch upside down to get the time in India.
As someone who puts himself as being a GUI Designer on his CV (in the technical I write them rather than the draw pretty, useless, drawings on paper sort of way) one of the key things with all frameworks is a consistent interaction model, something many systems fall down on. When adding an element to the list the frame work should provide a list with a visible add method to which models can be added (yup I'm a firm fan of MVC) the system should be driven from the data. This doesn't mean database but the users view of the data. A Framework that allows the designer to specify the datamodel which then drives the interface in a consistent manner (because all Lists of Models use the same add method) means less hastle for the designer (who I assume is also the implementor) and the user. Too often GUI frameworks mearly provide a set of increasingly over colorized components that work in wildly different ways because someone somewhere thought it was a good idea and looked cool. For myself the key to a good GUI Framework is the interaction model, this should give the standard set of components, a standard model for the data and a standard interaction between the components and the data models (pet hate, why does windows have three different styles of file browser ?).
Example. On many systems there is a requirement for a list (or tree) on the left hand side and the data from that node on the right. Adding elements to the list (or at a given level on the tree) is standard, and the rule connecting the selected item to the view on the left is also straight forward (model x has view b). Thus provide a framework that makes it easy to use this method. By enabling developers to ignore having to write this component each time you force a specific look and feel and create a consistent interface that is simpler to learn.
When I wrote straight X I had to worry about pixels and windows and mice etc etc then Motif abstracted away to give a decent set of components with which to develop. The development of kits ontop of these components sets (which ever one you chose) was the next step. IMO the next is to ignore those sets more and more as the object model drives the screen design.
We need to get people off welfare Therefore We need to get the jobs Problem The old jobs are disappearing as we now farm out our slave labour Solution We need new jobs that provide better quality working conditions and improve the standard of the enviroment. Problem How do we create new jobs Solution We need new technologies to enable us to change the way we currently work to create more jobs Solution We need to invest in technology.
Investing in things that appear unreleated is one of the reasons the US has done so well while the UK just plain sucks. The number of great inventions from people out of the Uk has been huge but no-one invested in them as there was no direct gain. The US went off and invested in the dream and became the world power. Putting a man on the moon gave us smaller computers, the space shuttle gave us better non-stick pans. Change doesn't happen when you do the same old things.
As a language slut, I've been around the block a few times and never really cared the company I kept, from M68000 to Ada, from Eiffel to C, I've been used and abused by the lot.
Then one day I started Java, I'm used to being on projects where sometimes the comments are the only documentation so I've become a fairly verbose commenter of code. And in Java it suddenly had a point. javadoc a tool that goes through the files, documents all of the APIs and turns them into a professional looking web site.
Having looked at some of the Linux code there are quite a few cases where this would produce pretty good docs right now, and it would encorage people to comment more in future.
Completely agree, simpler is miles better, but because you choose the simpler path the functionality may still be complex to someone who isn't an expert in that area. I know from looking at some Radar code that what is sensible to people who have studied 4D maths in depth is a mind-bending show to those that haven't. And yet when I understood the functionality I understood the code.
That is beautiful code, code that allows you to understand functionality, ideally it should teach you the functionality but most importantly it should never hinder you.
So ladies and gentlemen, use long names, use lots of comparmentalised objects, use many methods on those objects. Don't require callers to understand the internals of methods.
And remember 99% of the time the compiler writer will do a better job of optimising the code than you.
A truly obfuscated program cannot be translated into code that the average programmer can understand. Ever
Eh ? There was me thinking the Church-Turing Theorem held. Obfuscated code doesn't have to be complex functionaly (just look at some of the hello world contenders in the IOCC) they have to be complex to de-crypt into a quickly understandable form. The functionality has very little to do with the obfuscation.
A well written set of libraries for 3d graphics will in fact be very easy to understand from a code perspective, it is the functionality that is the tough bit to grasp. Obfuscated code is very different from complex functionality. Look at some of the code in the Linux kernel, wonderfully written, and if you understand the functionality you can modify it yourself, if you don't have a clue what it is trying to do its comparable to russian, this doesn't mean the code is obfuscated, but that the functionality is difficult.
Difficult code should be difficult to understand because of the functionality it implements not because someone couldn't be arsed to comment it, use sensible names and wanted 40,000 lines to run in one method with gotos.
Obfuscation is the other end of the scale, its code that is made difficult in and of itself, the difficulty of the functionality is only found after the code has been translated.
I'm not exactly sure what the difference between this and obfuscating the code is. Its not readable code its unreadable _as_ code but readable as English, a cute idea and a fine basis for a competition, but an awful way of coding. This is just, if not more, evil that obfuscation, unreadable code can be translated, readable code in this manner is misleading which can be worse.
Okay I know I'm just a kill-joy but the reason the obfuscation competitions are so good is that they make the point against obfuscation so well, this competition appears to be pushing this as a beautiful way to code. Code is beautiful in and of itself, it is its structure that lends beauty and its simplicity that defines genius. Code as poetry is ugly as code, even if it is beautiful as poetry.
The debate here is one of computers in a nutshell, what could a computer do if it was that small. When we say computer we mean our desktop/server piece of kit. With the rise of things like the PS2 the computer becomes redefined as an IP capable device with certain features. My Psion is another such device that has the PDA logo attached to it.
With IPv6 mobile computing has arrived, so pervasive computing comes into play, every device is IP enabled, every device can communicate, power isn't the problem it is application. Why would you want an intelligent kettle that can send you an instant message when its boiled, I've no idea but I'll bet we'll see it and I bet we'll buy one.
The other side is the demise of the fixed device of any kind, get on a plane, log in, thanks to IPv6 and the software developed by you are now YOU, its not a terminal its YOUR device, with a distributed framework that means you can do everything you could do on a supercomputer.
Browsing the web from a mobile, the screen is too small, just put on your glasses, hell they're the phone too (Thanks to William Gibson for that one). Mobile/PDA/Computer, isn't IMO the point, the next big thing will be the ability to use ANY device and not be able to tell the difference, and others not be able to tell it either.
IMO Sun AND MS have got the vision wrong, it isn't thin client/fat server or fat client/thin server, its applications, IP and connection, the size and distribution will render the client/server paradigm dead.
Excellent review, which almost forced me to buy the book. The finest thing about the patterns books are that we can all finally put the same names to practices we've used for years.
As it was said this is a bit of a suprise move, but surely with the advent of whole APIs like the Java Media Framework (JMF) the actual interface of the media player is becoming less and less required. The major problem I've faced on Linux is that there just don't seem to be as many codecs available that take advantage of the hardware so alot of work is done in software to the detriment of quality and speed. If the Media Player on Linux sees these codecs arrive for all to use, and to therefore enable embedding in other applications then excellent, if its yet another enclosed app then its not as useful.
Is there anyone out there trying to create a performance pack for the JMF on Linux ?
There is an excellent book by Peter Hennesy called "The Hidden Wiring" about how UK goverment works. One of the strongest parts in UK goverment is that while in theory the Queen could wield power in actuality she can not. And also while in theory Parliment can pass any law it so chooses, in reality the commitee stages and the House of Lords act as an excellent check. That said these laws do go against some pretty firm principles of british law.
And remember these laws are pretty much the same ones that currently apply to the Customs and Excise.
If the only purpose of a tool is to cause harm (say an anti-personel landmine) then both the maker and the user must hold responsibility. It is too easy to absolve responsibility claiming that is the users fault alone.
A Newton bio While Newton belived in the concept of god, he had rejected the idea of christianity, considering it a 4th century bastardisation. He wrote many times on the subject of religon and was a devout man, a chrisitan in the sense the word is applied to today he was not. His appointment as professor did not require him to swear an oath (a christian one) unto god, this was at the dispensation of the king.
Back in the days when science was young (let face it pre-Newton was a different beasty) Newton was a bit of a rebel, not relgious in the slightest and he approached the world from a logical perspective. His theories on gravity, optics and the whole shebang which tied together Kepler, Copernicus et al (I'm not a big fan of Gallileo, sounds a bit like Bill Gates to me, pushing off others ideas as his own). These guys founded modern science and of course suffered a huge religious backlash by way of various writings by christians on "why god is right and those blokes are wrong". Of course nobody in their right mind is going to stand-up for perfect spheres and the earth centred universe today, in fact the mainstream religions all except this as fact. Interestingly it was Newton's non-acceptance of religon that changed several rules in the UK (he couldn't have headed a college without swearing an oath to god, he might have refused to so they changed the rule). This could be seen as the start of the religious freedom in the UK which led pretty much directly to the Industrial revolution.
... John McCormack. Somehow I never thought I'd be able to link the three.
Then a while later came another Brit called Darwin, he drew together various other ideas added some of his own and produced probably the most controversial book of all time "Origin of the Species". This was an era when religon was still strong and many condemned his heresy. Various pamphlets defending the creationist view point were written and shot down by argument, debate and logic. Again today even the Catholic Church excepts evolution (if being a little shaky on abiogenesis).
Now we add to this list of people whom religons have copied in an attempt to destroy
When does the Jesus v Santa patch arrive ?
I can understand how using psuedo-analogue or even real analogue can lead to more realistic images. Fractals to produce better looking trees etc, sparks being blurred by the analogue signal (umm interesting, improve reality by decreasing quality). I'm probably off mark, but isn't there an issue of constraining these to produce an exact rendition of say a racing track. We can generate a load of curves to create a random track but how would a _real_ track be accurately constrained. An accurate representation of say Silverstone can be done in simple co-ordinates but I'm personally unsure as to what rules would need to be in-place to generate this with this approach.
probably comes under the "nice idea that I don't understand heading".
But the issue for people travelling to these countries (whom the releases are aimed at) is whether the infrastructure will collapse. This could effect rural areas that don't themselves use IT as emergency relief procedures that use the Telecom systems are required. For travellers its important to know that the country you are flying to has an Air Traffic Control system that will work. The report notes that for many parts of the Indian infrastructure Y2K isn't an issue (the FO notes that many power stations are analogue). India does have an IT Industry of some note, with many European and US companies having bases in India to take advantage of the reduced costs, its important for them to know what will happen as the New Year roles around.
Todays India Fact: For people in the UK, turn an analogue watch upside down to get the time in India.
As someone who puts himself as being a GUI Designer on his CV (in the technical I write them rather than the draw pretty, useless, drawings on paper sort of way) one of the key things with all frameworks is a consistent interaction model, something many systems fall down on. When adding an element to the list the frame work should provide a list with a visible add method to which models can be added (yup I'm a firm fan of MVC) the system should be driven from the data. This doesn't mean database but the users view of the data. A Framework that allows the designer to specify the datamodel which then drives the interface in a consistent manner (because all Lists of Models use the same add method) means less hastle for the designer (who I assume is also the implementor) and the user. Too often GUI frameworks mearly provide a set of increasingly over colorized components that work in wildly different ways because someone somewhere thought it was a good idea and looked cool.
For myself the key to a good GUI Framework is the interaction model, this should give the standard set of components, a standard model for the data and a standard interaction between the components and the data models (pet hate, why does windows have three different styles of file browser ?).
Example. On many systems there is a requirement for a list (or tree) on the left hand side and the data from that node on the right. Adding elements to the list (or at a given level on the tree) is standard, and the rule connecting the selected item to the view on the left is also straight forward (model x has view b). Thus provide a framework that makes it easy to use this method. By enabling developers to ignore having to write this component each time you force a specific look and feel and create a consistent interface that is simpler to learn.
When I wrote straight X I had to worry about pixels and windows and mice etc etc then Motif abstracted away to give a decent set of components with which to develop. The development of kits ontop of these components sets (which ever one you chose) was the next step. IMO the next is to ignore those sets more and more as the object model drives the screen design.
We need to get people off welfare
Therefore
We need to get the jobs
Problem
The old jobs are disappearing as we now farm out our slave labour
Solution
We need new jobs that provide better quality working conditions and improve the standard of the enviroment.
Problem
How do we create new jobs
Solution
We need new technologies to enable us to change the way we currently work to create more jobs
Solution
We need to invest in technology.
Investing in things that appear unreleated is one of the reasons the US has done so well while the UK just plain sucks. The number of great inventions from people out of the Uk has been huge but no-one invested in them as there was no direct gain. The US went off and invested in the dream and became the world power. Putting a man on the moon gave us smaller computers, the space shuttle gave us better non-stick pans. Change doesn't happen when you do the same old things.