The software development process is tricky to control, you are converting human intelligence (or stupidity) into bits.
That doesn't mean that it is beyond some control, but as with any development process, it must be adapted to the organization that does the development.
Although this is not an easy task, it is not impossible, the biggest problem is that this also requires a lot of common sense (the least common of all senses;).
I still don't get why the American cars need so much gas to run.
I live in Argentina an gas is quite expensive here. A car here can run 100Km with 7L of gas. That's about 78 MPG! And I'm not talking about hybrid vehicles, just regular engines, only more efficient.
Typically cars have 4 cilinder engines with electronic multipoint fuel injection, and the cilinder (is this word ok?) capacity is between 1100 cm^3 to 2000 cm^2.
I've driven cars in the US and there is no difference in acceleration nor noticeable top speed.
A new car can go up to 200 Km/h, this is about 125 Mph. I'm not talking about sports cars, just regular cars (sports cars go way faster than that).
Does anyone know why?
Re:So the highest bidder get's to spam?
on
P2P Spam?
·
· Score: 1
Wouldn't they now be liable for unauthorized use of the computers
Not necessarily, there are over 250 countries in the world were the US court system does not have any jurisdiction whatsoever.
And in many of them, information is not considered property in the same sense that the US legal system defines it.
I actually think the problem is that in the US there is no means to identify a person univocally (there is no "official" identity document).
So, companies accept as IDs the weirdest things (drivers licenses, etc).
This makes it very easy to steal your identity, because you can identify yourself in so many different ways, instead of having just one, very secure, way of identification.
But people tend to resists this unique ids in the US (although they are commonplace in most countries), because of the "Big brother is watching you" phenomena...
More privacy usually makes it easier to lose your identity, because you cannot prove who you are...
Not sure how you are going to identify the sender AND have postboxes where anyone can post a letter
My guess is that the meaning of "identifying the sender", is basically that the sender knows the tracking number (not the name, SSN, etc.).
Otherwise you would have to identify yourself before sending any mail at all!
Common sense is the least common of all senses;)
Re:Still Need Spam Filtering
on
Replacing SMTP?
·
· Score: 1
This would work until the spammers start using the new protocol.
Not necesarily, the problem with spam is that is very easy to spoof your identity, and the price of spam is paid by all the parties involved in the mail exchange (not the sender).
There are two ways to stop spam:
by filtering
by avoidance
Filtering is the most common way these days, but a new protocol could help by making it difficult to send spam (or too expensive).
Suppose for example, that the new protocol requires that the mail must be kept on the sending server, until the destination party want's to download it. The only thing that is forwarded is a small notification with, maybe, destinatary, subject (limited in size).
The client would only receive the mail notification, if s/he wants to download it, it would send a request to the originating server.
This would force the spammer to keep quite a large infrastructure (in terms of bandwith, at least) because bandwith would be proportional to the number of people you send mails to.
Instead of sending one mail with hundreds of recipients to an improperly configured server, where all the intervining parties pay for the bandwith, not just the spammer.
The other problem with avoidance is that one of the biggest chalenges has to do with identifying the sender. But I think it will remain that way because people are wary of disclosing their real identities when they are on-line.
Another advantage of a scheme like this, is that you would know if a mail has been delivered, and you can warrant one-time delivery (or you could even repent, and cancel the email before the destination reads it).
It's very hard to give a right answer without knowing the details of your project.
Scalability and performance usually are a side effect of the design of your application. Even when you don't have the time or money to switch technologies, and you're stuck within certain environmental constraints (such as DB engine, runtime environment, language, OS, etc.), you might still be able to improve the performance of your apps by doing the right changes to your application.
But there is no magic bullet, all I can tell you is that you must profile your applications, and find the 'hot spots', and design around them.
Each app is different, but without metrics, there isn't much you will be able to do.
I don't believe that.NET will impose a huge performance penalty per-se. Mostly it's just a VM plus associated services (analogous to Java, at least at the concept level).
What will probably will have a huge impact on the performance of your app is how you handle persistent data. The database usually becomes a major bottleneck if you are sloppy with your table design and your queries.
Your queries should be as simple as possible, and you should avoid relying on complex features of the database, such as:
Referential integrity (I know I might scandalize some of you;)
Triggers
Selects on multiple tables
Views
Etc...
All this operations place a huge burden on the DB, and usually don't scale well.
Multi table queries involve set operations on potentially large indexes (won't scale well).
Referential integrity forces the DB to check the constraints on every modification (it should only be used for debugging purposes), triggers have the same effect.
On the other hand there are many other factors that will help you improve your performance, such as caches, reducing contention in shared data, avoiding data conversions, etc.
But as I said before: It depends...
Sorry for the rant;^P
Re:Do younger minds absorb quicker?
on
Ageism in IT?
·
· Score: 5, Insightful
I have to disagree... Has computer technology really changed?
We're still working with Von Newman machines, with (roughly) the same architecture that Charles Babbage described around 1850.
I've been programming since I was 8 years old (I'm 26 now, that's 18 years of experience), and I feel confident that I can program in any language, paradigm, or technology. And not because I know every technology out there, but because I finally grasped that programming has nothing to do with computers at all!
Programming is not about knowledge of a particular technology or set of algorithms. It has more to do with a particular form of abstractions you build in your mind.
Learning how to do that took me a long time (almost my whole life), and I still have lots to learn.
What you must find in a programmer is that ability to create an abstract representation of a complex problem.
A younger programmer might find it easier to write the code immediately, but probably he will produce twice the ammount of code necessary for the task, with at least twice as many bugs.
An experienced programmer foresees problems that lie ahead, that might pass unnoticed to the novice.
So, bottom-line, the secret of success lies in experience...
I think it's about time we realize that the difference is not in our genes, that our lives are not fully determined by them (except some diseases that might drastically alter your life).
We are responsible of what we are, and we should stop trying to blame it on something else (genes, God, aliens, my mama, etc.). Its our intelect is what allows us to change our environment (for good or for bad), against our most primal instincts.
The difference is that we can intellegere, from latin:
I think the issue is how we build an entity that we can all trust.
Basically the security behind SSL certificates (and all certification technologies) is that you trust the CA (the root of the certificate path).
Commercial companies are trusted because they would go out-of-business if they lost your trust. So basically you trust in the fact that they want to make money.
So here is my point, besides financing and all the other issues, how do we establish a chain of trust?
I agree with you that that's not the purpose of XP, I meant that the "coaching" practices used in XP might help to speed up the learning process and maybe improve the relationships between the programers (I wasn't proposing a to form an XP team in the middle of a project).
Even in too-formal-for-my-taste projects (when you usually have a lot of Steady Eddies, and a few Natural Coders), that seems to work pretty well (if the "coach" can control his/her ego). I think that if you are a Natural Coder, you should try to help the Steady Eddies improve (even if that slows you down).
[Standing Ovation] A really good post. But in response to the original question: You could also try reading something on XP (eXtreme Programming), that might help to flatten the learning curve of your developers. But as msobkow says (or implies), you'll have to make a huge effort in humility, and use all your people skills in order to make them feel comfortable.
We could consider a a movie or the entire dvd data as software written in a specific computer language.
I don't see the difference between a DVD and any other kind of software.
Actually, the article is misleading. They're looking into ad-hoc networks (Gnutella is a good example of a simple ad-hoc network).
By definition, ad-hoc networks have a dynamic topology, and there has been lot's of research in that area in the last few years.
You could implement an ad-hoc network on top of other technologies (ip is not the best one, though).
Google for "adhoc networks" for more info.
Well, nobody used Java... but everybody uses Macromedia's Flash.
At that point they were right, but Java ended up being really good for the server market.
From the poster's benchmark:
The Java code was compiled with J2SE v 1.4.2_03 javac -g:none and executed with java -server
It's my experience that the kind of optimizations that are applied when the -server JVM option is enabled usually slow down the benchmark.
The client VM is usually faster on x86 machines.
But I really don't know why.
The software development process is tricky to control, you are converting human intelligence (or stupidity) into bits.
;).
That doesn't mean that it is beyond some control, but as with any development process, it must be adapted to the organization that does the development.
Although this is not an easy task, it is not impossible, the biggest problem is that this also requires a lot of common sense (the least common of all senses
... and not the atomic clocks?
It's like Mercedes suing Ford, because they have prior art on how cars should function.
Anyway... it stills scare me how far can some people push the copyright/trademark/patent law...
What happens when the flooding comes from any of the other 250+ countries?
I mistyped 100/7 as 100/3 so... the number is more than double...
I promise I won't do it again. Bad! Bad!
Before I came here I was confused about this subject. Now I'm still confused, but on a higher level. Enrico Fermi
I messed up with the calculator ;)
I live in Argentina an gas is quite expensive here. A car here can run 100Km with 7L of gas. That's about 78 MPG! And I'm not talking about hybrid vehicles, just regular engines, only more efficient.
Typically cars have 4 cilinder engines with electronic multipoint fuel injection, and the cilinder (is this word ok?) capacity is between 1100 cm^3 to 2000 cm^2.
I've driven cars in the US and there is no difference in acceleration nor noticeable top speed.
A new car can go up to 200 Km/h, this is about 125 Mph. I'm not talking about sports cars, just regular cars (sports cars go way faster than that).
Does anyone know why?
Not necessarily, there are over 250 countries in the world were the US court system does not have any jurisdiction whatsoever.
And in many of them, information is not considered property in the same sense that the US legal system defines it.
[Grammar Nazi^2 = ON]
Flower? Aren't brownies made with flour? By the way, shouldn't that be fewer flowers or less flour
This typically happens when you are correcting someone ;)
So, companies accept as IDs the weirdest things (drivers licenses, etc).
This makes it very easy to steal your identity, because you can identify yourself in so many different ways, instead of having just one, very secure, way of identification.
But people tend to resists this unique ids in the US (although they are commonplace in most countries), because of the "Big brother is watching you" phenomena...
More privacy usually makes it easier to lose your identity, because you cannot prove who you are...
My guess is that the meaning of "identifying the sender", is basically that the sender knows the tracking number (not the name, SSN, etc.).
Otherwise you would have to identify yourself before sending any mail at all!
Common sense is the least common of all senses ;)
Not necesarily, the problem with spam is that is very easy to spoof your identity, and the price of spam is paid by all the parties involved in the mail exchange (not the sender).
There are two ways to stop spam:
- by filtering
- by avoidance
Filtering is the most common way these days, but a new protocol could help by making it difficult to send spam (or too expensive).Suppose for example, that the new protocol requires that the mail must be kept on the sending server, until the destination party want's to download it. The only thing that is forwarded is a small notification with, maybe, destinatary, subject (limited in size).
The client would only receive the mail notification, if s/he wants to download it, it would send a request to the originating server.
This would force the spammer to keep quite a large infrastructure (in terms of bandwith, at least) because bandwith would be proportional to the number of people you send mails to.
Instead of sending one mail with hundreds of recipients to an improperly configured server, where all the intervining parties pay for the bandwith, not just the spammer.
The other problem with avoidance is that one of the biggest chalenges has to do with identifying the sender. But I think it will remain that way because people are wary of disclosing their real identities when they are on-line.
Another advantage of a scheme like this, is that you would know if a mail has been delivered, and you can warrant one-time delivery (or you could even repent, and cancel the email before the destination reads it).
Scalability and performance usually are a side effect of the design of your application. Even when you don't have the time or money to switch technologies, and you're stuck within certain environmental constraints (such as DB engine, runtime environment, language, OS, etc.), you might still be able to improve the performance of your apps by doing the right changes to your application.
But there is no magic bullet, all I can tell you is that you must profile your applications, and find the 'hot spots', and design around them.
Each app is different, but without metrics, there isn't much you will be able to do.
I don't believe that .NET will impose a huge performance penalty per-se. Mostly it's just a VM plus associated services (analogous to Java, at least at the concept level).
What will probably will have a huge impact on the performance of your app is how you handle persistent data. The database usually becomes a major bottleneck if you are sloppy with your table design and your queries.
Your queries should be as simple as possible, and you should avoid relying on complex features of the database, such as:
- Referential integrity (I know I might scandalize some of you
;)
- Triggers
- Selects on multiple tables
- Views
- Etc...
All this operations place a huge burden on the DB, and usually don't scale well.Multi table queries involve set operations on potentially large indexes (won't scale well).
Referential integrity forces the DB to check the constraints on every modification (it should only be used for debugging purposes), triggers have the same effect.
On the other hand there are many other factors that will help you improve your performance, such as caches, reducing contention in shared data, avoiding data conversions, etc.
But as I said before: It depends...
Sorry for the rant ;^P
We're still working with Von Newman machines, with (roughly) the same architecture that Charles Babbage described around 1850.
I've been programming since I was 8 years old (I'm 26 now, that's 18 years of experience), and I feel confident that I can program in any language, paradigm, or technology. And not because I know every technology out there, but because I finally grasped that programming has nothing to do with computers at all!
Programming is not about knowledge of a particular technology or set of algorithms. It has more to do with a particular form of abstractions you build in your mind.
Learning how to do that took me a long time (almost my whole life), and I still have lots to learn.
What you must find in a programmer is that ability to create an abstract representation of a complex problem.
A younger programmer might find it easier to write the code immediately, but probably he will produce twice the ammount of code necessary for the task, with at least twice as many bugs.
An experienced programmer foresees problems that lie ahead, that might pass unnoticed to the novice.
So, bottom-line, the secret of success lies in experience...
I think it's about time we realize that the difference is not in our genes, that our lives are not fully determined by them (except some diseases that might drastically alter your life).
We are responsible of what we are, and we should stop trying to blame it on something else (genes, God, aliens, my mama, etc.). Its our intelect is what allows us to change our environment (for good or for bad), against our most primal instincts.
The difference is that we can intellegere, from latin:
inter- between +legere to read
Or in plain english: to read between lines
wget "http://progressive.stream.aol.com/wb/gl/wbonline/ progressive/thematrix/us/med/animatrixlgfinal_dl.m ov"
Have Fun!
Basically the security behind SSL certificates (and all certification technologies) is that you trust the CA (the root of the certificate path).
Commercial companies are trusted because they would go out-of-business if they lost your trust. So basically you trust in the fact that they want to make money.
So here is my point, besides financing and all the other issues, how do we establish a chain of trust?
You know that sorting algorithms won't get better than O(NlgN) and searching algorithms won't get any better than O(lgN).
And access times of HDs haven't improved much in the last 10 years (bulk transfer has, though).
I know CPU's are now much faster... but also software developers became sloppier (think of the first C compiler running in a 4Kbyte RAM machine).
So... what all this means?
Probably we'll just have to wait longer...
I know... maybe I'm worring too much...
I have seen ball lightning during a storm (full-fledged with rain and everything). This was in Córdoba (Argentina).
I agree with you that that's not the purpose of XP, I meant that the "coaching" practices used in XP might help to speed up the learning process and maybe improve the relationships between the programers (I wasn't proposing a to form an XP team in the middle of a project). Even in too-formal-for-my-taste projects (when you usually have a lot of Steady Eddies, and a few Natural Coders), that seems to work pretty well (if the "coach" can control his/her ego).
I think that if you are a Natural Coder, you should try to help the Steady Eddies improve (even if that slows you down).
[Standing Ovation] A really good post. But in response to the original question: You could also try reading something on XP (eXtreme Programming), that might help to flatten the learning curve of your developers. But as msobkow says (or implies), you'll have to make a huge effort in humility, and use all your people skills in order to make them feel comfortable.