I am a software developer and I, like several of my colleagues grind in my sleep.
I thoroughly recommend this as a form of stress relief. It was working brilliantly and I've been really chilled out - didn't even realise I was stressed.
It was all going well until the dentist told me what I'd been doing and that I've already flatten my teeth on one side. Now I need a 60 teeth guard to wear in my sleep. Now I'm stressed again.
Here is the setup method for that test suite. Just in case you wonder how all the objects are hooked up.
public void setUp() {
myMockResinApplicationAdmin = new MockResinApplicationAdmin();
myMockResponse = new MockHttpServletResponse();
myMockRequest = new MockHttpServletRequest();
myMockServletOutputStream = new MockServletOutputStream();
myMockResponse.setupOutputStream(myMockServletOutp utStream);
myServlet = new ResinCacheManager(myMockResinApplicationAdmin);
}
OSS are unlikely to use XP or other agile development systems.
Therefore most test first projects are probably closed source. I can't show you our whole code base but we are a TestFirst XP place with 1654 unit tests currently in place.
For large scale testing mock objects are invaluable. See www.mockobjects.com and www.mockmaker.org
Here is an example of what a test looks like using Junit and MockObject testing. It might give you a feel for how easy the tests are to write.
myMockResinApplicationAdmin.verify();
assertEquals("should get message", ResinCacheManager.CLEAR_ALL_MESSAGE, myMockServletOutputStream.getContents());
}
It's a simple test - most tests have more mockobjects. Once you've written that test and it fails you modify the myServlet.processRequest(..) method to pass the test. Then you run AllTests get a green bar, sync with the repository system and go have a cup of tea and some marmite toast.
I will smash up my KISS DV-500 and remove the chip with the stolen code on.
Then I will send back the broken remains to KISS with a message saying
"We want ALL our code back!
Look. ..the people you are after are the people you depend on. Do not f**k with us."
Matt.
Disclaimer: The above only applies if their latest patch doesn't fix their buggy zoom feature that switches off half way through the damn movie. Is THIS fixed in mplayer yet?:)
I am using some code that belongs to SCO and they can take action against me.
Every contributor of Linux code can take out action against me for giving a copy of Redhat to my friend. As although I was unaware of the fact at the time I had no rights to distribute linux under the GPL as it contained non GPL code.
Is any contributor of linux likely to take out action against me? no.
SCO is more likely to take out action against me in my opinion. So perhaps paying them some money not to sue me might be in my interests, even if they can't provide me with a compliant version of linux. I can understand some business logic behind paying SCO, although personally I'd rather wait till hell freezes over.
"Individual songs may be burned or copied to CDs without restriction, although CDs with the same order of songs can only be burned five times to prevent pirates from churning out scores of full copies."
Duh!
I think this clearly shows how little marketing people understand DRM technology. As soon as something leaves a DRM system it can be copied freely. The first CD you burn can then be copied a million times using standard CD burning software!
When will they give up with all the DRM annoyances. There are a lot of people that just want mp3 files (or ogg or whatever) and are happy to pay for it. At the moment we get more restrictions on music we download from their crappy sites than we do if we buy the damn CD.
They are forcing people into using these dodgy p2p systems because they won't let people download music in the format they want. Ooh didums are people copying your music -People don't want DRM that's why! If they buy some music they expect to be able to play it on whatever OS or music system they choose.
RIAA have to get a grip on reality... [trails off into usual slashdot rant]
Yes it's important not to have any weak points in the scheme where unencrypted documents could be viewed. I expect they've already discovered this major flaw in the Longhorn DRM.
I've been lobbying Microsoft to include.NET DRM implants in my brain where documents and music can be decrypted safely. The.NET implant will also have a remote access function like XP so that a Microsoft support technician can help me read documents, listen to music, go to the toilet, etc.
Then I won't be able to do anything without paying Microsoft first. This will finally make the world a safe and secure place.
Inheritance does indeed cause a tight coupling between the parent and child objects and is often over used. It can get very ugly and a complex inheritance hierarchy is one of the most difficult things to refactor.
This doesn't mean OO/C++ is bad it just means programmers overuse inheritance when they should be using delegation.
Personally I blame the lecturers. The examples of simple inheritance in the text books are fine but in the real world of incremental development/patches/hacks over several years - inheritance hierarchies can turn into chaos all too easily.
Speaking as a software developer that works for a company that does try to leverage the unique nature of the medium to make better adverts, trust me when I say that it doesn't always come down to who makes the better adverts.
We have developed software that can make adverts which are better targeted to the page contents, adverts which can pick up live data from feeds and which allows changes to be made to the adverts live - even once they are up on sites. And yes the clickthrough rates and purchase rates are higher.
However, we are competing with creative agencies that are often trying to cut us out in favour of pop-ups and annoying dhtml flying-pig style adverts. These adverts can also get high clickthrough rates, I suspect due to the fact that people accidentally click on them in an attempt to make them go away.
Basically it's difficult to reach the clients through their current 'protective' creative agencies. I guess we all know that it's not necessarily the best tech kit that wins, but I do hope we don't get dragged down to the level of some of the creative agencies, 'cos if I see one more flying pig on my web mail I will kill someone:)
Matthew (matthew@connextra.com) http://www.connextra.com
When I talked about commit I was referring to all changes in a persons local workspace - as an atomic action, not many smaller commits. Also it doesn't actually commit all changes that have happened in the local workspace, it commits individually changed files, not new files. This can easily mean that a local workspace is working but the CVS HEAD is broken due to missing resources. This is a fairly *major* failing in my opinion. If a project passes it's tests when run locally and then after the 'Commit' action CVS contains a broken project which can't even be rolled back easily due to lack of transactions then the system is a bit flawed. This kind of Commit command is not really what I was talking about.
The "CVS update & commit commands" are just not the same as a proper project based "Catch-Up and release" style version control system with transactions.
Although you can use CVS in a sane way if you are experienced, it is far more complicated than it needs to be causing unneccesary grief.
Perhaps it is better suited to old style unix development and less so to rapidly refactored OO projects in Java and the like.
By processing the 'commits' as a transaction it guarantees that only one person is committing at a time.
With both 'Transactions' and 'change list management' commits can be rolled back in reverse order to revert the system to any previous state should a major commit (with many files) go wrong.
I think good basic operations would be 'Catch up' (merge changes into local workspace) then you can run tests and check everything is ok. Then the atomic 'Commit'. The system would also needs to check that no other transactions has been processed between the 'Catch Up' and 'Commit', or the developer should be forced to catch up again.
Why do most version control clients have 6 million options but don't contain just these simple 2 operations you want? Probably mainly for historic reasons I guess.
I think the version control system on VisualAge for Java MicroEdition had a system like this called 'Team Streams'.
Anyone who knows java realises that there is not a speed problem in general. What has given Java a bad name in the past is the poor AWT / Swing libraries.
What would make a *big* difference on the desktop would be if people used a nicer native widget implementation similar like SWT provided by OTI in the eclipse project (www.eclipse.org)
This would make java desktop application responsive and give them a professional look & feel and most users wouldn't realise they were written in Java. In fact I couldn't believe Eclipse was written in java when I whizzed through those pull-down menus and I write Java code 9-5.
I run the latest version of Eclipse and it's GUI is as fast as any native application under windows.
I guess it would be difficult for Sun to admit that they have messed up the GUI implementation twice.
I also know of people who have had bad experiences of using OODBMS but you seem to be mixing up several issues in your post.
I don't think the fact that your company developed a poor Java application running against an OODBMS can justify statements like "The promise of an OO architecture was great, but it just didn't work out in the real world - Linux was the solution for us."
I've seen many fast and stable OO Java Applications running under Linux/Apache/Resin and connecting to a RDBMS. The applications are easy to develop/maintain and are very reliable.
A system is only as reliable as it's weakest link be this an OODBMS, poor coding or Windows/IIS.
My personal experience is that extreme programming (XP) produces code that is exceptionally good quality at a low level but not so great at an overall architectural level.
The reason for this I believe is the heavy use of Unit Testing. By testing first you have normally thought of a very elegant/simple design by the time you write the real code. It is also easy and safe to improve the code because you can check it passes the tests. But the tests also mean there is a great reluctance to change the overall architecture of a project because you will break hundreds of tests that will need to be moved, changed or rewritten.
Another thing that helps with code quality in XP is the fact that you write it with a partner and within a week at least 5 other people will probably have criticised it:)
I am a software developer and I, like several of my colleagues grind in my sleep.
I thoroughly recommend this as a form of stress relief. It was working brilliantly and I've been really chilled out - didn't even realise I was stressed.
It was all going well until the dentist told me what I'd been doing and that I've already flatten my teeth on one side. Now I need a 60 teeth guard to wear in my sleep.
Now I'm stressed again.
Matt.
Unless a better search engine comes along, in which case we ditch google and forget about them in the space of about 3 hours.
Matt.
Therefore most test first projects are probably closed source. I can't show you our whole code base but we are a TestFirst XP place with 1654 unit tests currently in place.
For large scale testing mock objects are invaluable. See www.mockobjects.com and www.mockmaker.org
Here is an example of what a test looks like using Junit and MockObject testing. It might give you a feel for how easy the tests are to write.It's a simple test - most tests have more mockobjects. Once you've written that test and it fails you modify the myServlet.processRequest(..) method to pass the test. Then you run AllTests get a green bar, sync with the repository system and go have a cup of tea and some marmite toast.
Matt.
I will smash up my KISS DV-500 and remove the chip with the stolen code on.
.the people you are after are the people you depend on. Do not f**k with us."
:)
Then I will send back the broken remains to KISS with a message saying
"We want ALL our code back!
Look. .
Matt.
Disclaimer: The above only applies if their latest patch doesn't fix their buggy zoom feature that switches off half way through the damn movie. Is THIS fixed in mplayer yet?
Apparently microsoft will be fixing the mime-type bug in the next service pack. Basically IE will start obeying the mime-type set by the server.
They will also be including pop-up blocking.
Also some usage of the object tag to pass params to flash will start causing a popup dialog to occur to work around some ddogy patent.
IIRC, these are the main changes if.
Matt.
So theoretically, if linux contains SCO code...
I am using some code that belongs to SCO and they can take action against me.
Every contributor of Linux code can take out action against me for giving a copy of Redhat to my friend. As although I was unaware of the fact at the time I had no rights to distribute linux under the GPL as it contained non GPL code.
Is any contributor of linux likely to take out action against me? no.
SCO is more likely to take out action against me in my opinion. So perhaps paying them some money not to sue me might be in my interests, even if they can't provide me with a compliant version of linux. I can understand some business logic behind paying SCO, although personally I'd rather wait till hell freezes over.
Your dad isn't planning on burning 50,000 copies of Madonna's latest album and selling them.
The person who is planning on doing this will know how to *cough* "bypass" the DRM by using normal CD burning software.
In fact it is so trivial to burn copies of these DRM'd tracks it hardly seems appropriate to use the word 'bypass'.
"Individual songs may be burned or copied to CDs without restriction, although CDs with the same order of songs can only be burned five times to prevent pirates from churning out scores of full copies."
... [trails off into usual slashdot rant]
Duh!
I think this clearly shows how little marketing people understand DRM technology. As soon as something leaves a DRM system it can be copied freely. The first CD you burn can then be copied a million times using standard CD burning software!
When will they give up with all the DRM annoyances. There are a lot of people that just want mp3 files (or ogg or whatever) and are happy to pay for it. At the moment we get more restrictions on music we download from their crappy sites than we do if we buy the damn CD.
They are forcing people into using these dodgy p2p systems because they won't let people download music in the format they want. Ooh didums are people copying your music -People don't want DRM that's why! If they buy some music they expect to be able to play it on whatever OS or music system they choose.
RIAA have to get a grip on reality
Yes it's important not to have any weak points in the scheme where unencrypted documents could be viewed. I expect they've already discovered this major flaw in the Longhorn DRM.
.NET DRM implants in my brain where documents and music can be decrypted safely. The .NET implant will also have a remote access function like XP so that a Microsoft support technician can help me read documents, listen to music, go to the toilet, etc.
I've been lobbying Microsoft to include
Then I won't be able to do anything without paying Microsoft first. This will finally make the world a safe and secure place.
Matt.
Probably.
But I doubt it destroys much of the data.
Matt.
Inheritance does indeed cause a tight coupling between the parent and child objects and is often over used. It can get very ugly and a complex inheritance hierarchy is one of the most difficult things to refactor.
This doesn't mean OO/C++ is bad it just means programmers overuse inheritance when they should be using delegation.
Personally I blame the lecturers. The examples of simple inheritance in the text books are fine but in the real world of incremental development/patches/hacks over several years - inheritance hierarchies can turn into chaos all too easily.
Matt.
Speaking as a software developer that works for a company that does try to leverage the unique nature of the medium to make better adverts, trust me when I say that it doesn't always come down to who makes the better adverts.
:)
We have developed software that can make adverts which are better targeted to the page contents, adverts which can pick up live data from feeds and which allows changes to be made to the adverts live - even once they are up on sites. And yes the clickthrough rates and purchase rates are higher.
However, we are competing with creative agencies that are often trying to cut us out in favour of pop-ups and annoying dhtml flying-pig style adverts. These adverts can also get high clickthrough rates, I suspect due to the fact that people accidentally click on them in an attempt to make them go away.
Basically it's difficult to reach the clients through their current 'protective' creative agencies. I guess we all know that it's not necessarily the best tech kit that wins, but I do hope we don't get dragged down to the level of some of the creative agencies, 'cos if I see one more flying pig on my web mail I will kill someone
Matthew (matthew@connextra.com)
http://www.connextra.com
Having switched from Windows and IE to Gnome and Mozilla, trust me I *need* a 2Ghz machine :)
Matt.
When I talked about commit I was referring to all changes in a persons local workspace - as an atomic action, not many smaller commits. Also it doesn't actually commit all changes that have happened in the local workspace, it commits individually changed files, not new files. This can easily mean that a local workspace is working but the CVS HEAD is broken due to missing resources. This is a fairly *major* failing in my opinion. If a project passes it's tests when run locally and then after the 'Commit' action CVS contains a broken project which can't even be rolled back easily due to lack of transactions then the system is a bit flawed. This kind of Commit command is not really what I was talking about.
The "CVS update & commit commands" are just not the same as a proper project based "Catch-Up and release" style version control system with transactions.
Although you can use CVS in a sane way if you are experienced, it is far more complicated than it needs to be causing unneccesary grief.
Perhaps it is better suited to old style unix development and less so to rapidly refactored OO projects in Java and the like.
The first two are of particular importance.
By processing the 'commits' as a transaction it guarantees that only one person is committing at a time.
With both 'Transactions' and 'change list management' commits can be rolled back in reverse order to revert the system to any previous state should a major commit (with many files) go wrong.
I think good basic operations would be 'Catch up' (merge changes into local workspace) then you can run tests and check everything is ok. Then the atomic 'Commit'. The system would also needs to check that no other transactions has been processed between the 'Catch Up' and 'Commit', or the developer should be forced to catch up again.
Why do most version control clients have 6 million options but don't contain just these simple 2 operations you want? Probably mainly for historic reasons I guess.
I think the version control system on VisualAge for Java MicroEdition had a system like this called 'Team Streams'.
Anyone who knows java realises that there is not a speed problem in general. What has given Java a bad name in the past is the poor AWT / Swing libraries.
What would make a *big* difference on the desktop would be if people used a nicer native widget implementation similar like SWT provided by OTI in the eclipse project (www.eclipse.org)
This would make java desktop application responsive and give them a professional look & feel and most users wouldn't realise they were written in Java. In fact I couldn't believe Eclipse was written in java when I whizzed through those pull-down menus and I write Java code 9-5.
I run the latest version of Eclipse and it's GUI is as fast as any native application under windows.
I guess it would be difficult for Sun to admit that they have messed up the GUI implementation twice.
Matt.
I also know of people who have had bad experiences of using OODBMS but you seem to be mixing up several issues in your post.
I don't think the fact that your company developed a poor Java application running against an OODBMS can justify statements like "The promise of an OO architecture was great, but it just didn't work out in the real world - Linux was the solution for us."
I've seen many fast and stable OO Java Applications running under Linux/Apache/Resin and connecting to a RDBMS. The applications are easy to develop/maintain and are very reliable.
A system is only as reliable as it's weakest link be this an OODBMS, poor coding or Windows/IIS.
Matt.
My personal experience is that extreme programming (XP) produces code that is exceptionally good quality at a low level but not so great at an overall architectural level.
:)
The reason for this I believe is the heavy use of Unit Testing. By testing first you have normally thought of a very elegant/simple design by the time you write the real code. It is also easy and safe to improve the code because you can check it passes the tests. But the tests also mean there is a great reluctance to change the overall architecture of a project because you will break hundreds of tests that will need to be moved, changed or rewritten.
Another thing that helps with code quality in XP is the fact that you write it with a partner and within a week at least 5 other people will probably have criticised it