I'd like to think I fit in the latter category. I actually really like PHP because it's so dumb and open-ended, it lets me code whatever the hell I want without forcing much functional-programming hipster crap down my throat (I'm staring at you: Python/Ruby/Haskell/Scala/Clojure).
Exactly my problem with PHP programmers: "lets me code whatever the hell I want"
and ignore any innovations introduced in programming languages 50 years ago like "functional-programming hipster crap".
I think it is time to get an education about programming languages and become a professional. You can't continue to use that PHP pacifier forever!
The world is bigger than PHP and full of scary concepts like: - error handling - closures - multi-threading/parallelism - production quality - reusable APIs
Legal: Someone shows up at the border (perhaps after waiting "in line" to emigrate and/or get their paperwork) and meets with an immigration official. They show their ID, get a medical screening for contagious disease, etc... You know, the sort of stuff that happened at Ellis Island and other locations for many decades.
Wow.. its clear to me that you've never actually gone through the legal immigration process. It is much worse than you paint it out to be. At best, you'll get treating with disrespect, dismisive attitude, rudeness, made to wait entire days in line, etc.. I speak from experience as a US citizen who had to get a visa for his wife.
At worse, well.. there's no end to how bad they can and do treat people when all they are wanting to do is go on with their life.
Even then, legal immigrants or legal visitors to the US get treated like Al Qaeda every by unprofessional TSA types, and rude immigration officials at the border.
I was looking at the stats to see why Brazil and other S.American countries didn't fair so well (Brazil had 520+ participants!). When look through the first problem I see that it makes reference to something that is "one-to-one" and "onto". While many Americans know that a "one-to-one" function is an injective function and an "onto" function is "surjective" many people from other cultures/languages may have a hard time understading what they're referring to.
Since this is a programming contest and not a language contest, potentially troublesome terms for non-natives should be spelled out carefully or better yet there should be some translations in some of the other world languages besides English. Otherwise, English speaking countries and more developed countries in general will have an unfair advantage.
Afghanistan was a little more complicated than that, and I think the way it unfolded makes a bit more sense if you understand the context.
Step aside sonny...
The story in Afghanistan doesn't begin with the Taliban harbouring Osama bin Laden.. it starts much earlier with the US supporting the Mujahedin in Afghanistan under the pretext of "holy war" in the middle of the Cold War to oppose the Soviets.
Once the Soviets left Afghanistan, the US abandoned its allies and 10 years of civil war ensued culminating with the Taliban.
Since the original poster wanted advise about web apps (and not mere flamewars re: Java vs PHP) here goes an attempt at some advice on creating a "modern" web app:
1. Get familiar with CSS3 and other enhancements to make your app mobile friendly. 2. Get a modern looking design. Usually this means pure colors.. think Sesame Street.com. Of course this much depends on your audience. 3. Start learning HTML5 4. Don't write raw JS. Use jQuery or some other JS framework (Dojo, ExtJS/Sencha, GWT, etc..) to keep your JS compatible accross browsers. 5. Consider CSS frameworks like Blueprint 6. The Rails tutorial has some good tips on modern sites. Including using RESTful URLs instead of *.jsp, *.asp, *.php file extensions (who cares what language you're using.. why should that be exposed to the user) 7. Gather detailed stats on your site visitors (info is gold these days) 8. Simplify your login/registration process. Consider using OpenID, or OAuth for site access 9. Use a third party library/module for authentication/authorization if a good one is available for your platform.. don't re-invent the wheel 10. Use a third party library/module for credit card processing (I like Shopify's ActiveMerchant)
I'm sure others have good tips as well. A lot of this is really language/platform agnostic.
PHP is garbage. Bad design all over the place. And I'm talking both about the language as well as the standard mess it calls a "library". It is the new BASIC.. stay away it'll damage your brain. For details see:
There are better alternatives if you want to go the dynamic route: Ruby on Rails and I hear Python / Django is great too.
There's nothing wrong with Java as long as you know how to use it. But its always good to learn a new language. ASP.Net is also nice if you don't want to go dynamic.
The hardest part about moving away from Java is losing all the cool static analysis tools that are incorporated in Eclipse as well as tools such as FindBugs. But our experience with RoR (in spite of it missing some needed feature many Java frameworks have).
In summary: learn anything but PHP.. it truly is garbage that must die.
I've found that small companies are focused on getting the job done. In large companies people are often dedicated to satisfying management. Those aren't the same things.
I have simply never seen the kind of "programmer" you describe. It may exist, but I've got no idea where.
All of the development I've ever been involved was a group of people, usually with BSc's and/or MSc's in comp-sci, who did their design and development work, planned out the spec, and implemented it themselves.
I agree entirely. In 16 years I've never seen any successful project that didn't have developers that designed/planned/spec'd/implemented work.
We're based in South America and do work for companies in the US. We don't do "monkey" work. And I think one reason why some outsourcing relationships don't work is that one side or both sides have no respect for each other.
In any business relationship there must be trust and respect. If we cannot establish trust and respect it is better not to do the job at all.
I have seen our folks stay up all night without pay to help a customer with an emergency situation on a weekend. Successful relationships are based on caring for the other's business. And just as we do most definitely care for our customers we hope our customers care for us as well. We certainly try hard to earn that trust.
I'm surprised by all the negative comments on Slashdot (well.. actually.. this IS Slashdot) regarding Asian programmers or whatever. It is not a person's ethnicity that establishes his competence! Certainly in my carreer, especially when I worked in the US, I met many VERY COMPETENT Indian programmers. And I've met very excellent and professional american counterparts as well as the spoiled overpaid loser type as well.
To regard outsourcing as some magical way to solve software development issues is insane and irresponsible. Software Development is hard. Both inhouse as well as through outsourcing. But working together on a solution can help companies deliver what they need at a timely basis and at a reasonable cost. In my work in US software companies or more recently through my outsourcing firm in South America I have found that problems are equally likely to occur inhouse as they are offshore. But you always need to be working with good people to get such problems resolved.
I know.. I've been doing outsourcing for 8 years and my customers have stuck with us all that time and still love us.
I live in South America.. and I can't remember the last time I used such obsolete technology. Today is all about streaming content.. Netflix, iTunes.. who needs that obsolete region locked garbage?
"Soccer" is known as "Football" all around the world. Both in English and non-English speaking countries. In North America it is known by its Spanish spelling "futbol" in both the US (a big portion of the US is Spanish speaking) as well as Mexico. Also in Central and South America it is unanimously known by the same name.
Then there's Africa with "major" populations that speak English, French and Spanish. In all these countries "football" is the most popular sport. In Asia and Europe the same thing plays out.
The only countries that don't call it "football" are minor countries such as the US with a few million people that don't really play the sport all that much. Billions around the world beg to differ.;)
A pocket knife doesn't implicitly create objects or fail to cleanup if you forget to make your destructor virtual.
C++ has very complex rules that take years to hone and understand correctly, and even then mistakes are easy to make. The proof is that even today when you go to C++ forums people are still asking about obscure language rules while in Java forums the conversation has moved on to issues of design. Nobody needs to discuss the meaning of language constructs in Java because they are obvious.
It isn't however obvious that an error in your cannonical class definition could cause this code to create a memory leak:
a = b;
Clearly proper use of a tool is important. But tools without safety features are more likely to cause accidents.
iTunes is suprisingly bad software. Examples: - SLOW navigation - no wish list: once you find something you can't keep it till you want to buy/rent it - very slow playback - crashes now and then - should give you 48hrs to see your rentals not 24hrs - sometimes gets stuck and insists on redownloading stuff that has expired - SLOW navigation - did I mention it was slow? - hard to find music when looking for specific stuff.. the "browser" is just ugly
- Writing Solid Code by Steve Maguire - Debugging the Software Development Process by Steve Maguire - How we test at Microsoft (no flames please), its one of the best/most practical books on testing I've seen
I live in Latin America and have the following options for movies/music/games:
1. Get it on DVD from a pirate (approx cost $1) [ILLEGAL] 2. Rent a pirate copy (approx cost $2) [still technically ILLEGAL] 3. Buy it on iTunes (cost $1-$4).. but I can only do this because I've figure out how to get around regional limitations [psuedo-LEGAL] 4. Buying on Netflix/Amazon is not an option [N/A] 5. Going to threater (movies only).. sometimes, when/if it arrives at a timely basis (cost: $4-$5) [LEGAL] 6. Buy the legal DVD (cost: $30-$100) [LEGAL]
As you can see a great option is iTunes/Netflix/Amazon but the industry has systematically cut off those options from us. Also the legal DVDs are sold at much higher prices than in the US.
So do you wonder why there is so much piracy around the world??
Agreed that PHP needs a major cleanup, but the resultant product probably shouldn't be called PHP 6
I agree entirely.. try some of these forks: http://www.ruby-lang.org/ http://www.python.org/ http://www.java.com/ http://www.microsoft.com/net, http://nodejs.org/
They are actually good for a change!
I'd like to think I fit in the latter category. I actually really like PHP because it's so dumb and open-ended, it lets me code whatever the hell I want without forcing much functional-programming hipster crap down my throat (I'm staring at you: Python/Ruby/Haskell/Scala/Clojure).
Exactly my problem with PHP programmers: "lets me code whatever the hell I want"
and ignore any innovations introduced in programming languages 50 years ago like "functional-programming hipster crap".
I think it is time to get an education about programming languages and become a professional. You can't continue to use that PHP pacifier forever!
The world is bigger than PHP and full of scary concepts like:
- error handling
- closures
- multi-threading/parallelism
- production quality
- reusable APIs
Well, my experience was from an overseas embassy.. not from within the US. Maybe there's a difference there.
Legal: Someone shows up at the border (perhaps after waiting "in line" to emigrate and/or get their paperwork) and meets with an immigration official. They show their ID, get a medical screening for contagious disease, etc ... You know, the sort of stuff that happened at Ellis Island and other locations for many decades.
Wow.. its clear to me that you've never actually gone through the legal immigration process. It is much worse than you paint it out to be. At best, you'll get treating with disrespect, dismisive attitude, rudeness, made to wait entire days in line, etc.. I speak from experience as a US citizen who had to get a visa for his wife.
At worse, well.. there's no end to how bad they can and do treat people when all they are wanting to do is go on with their life.
Even then, legal immigrants or legal visitors to the US get treated like Al Qaeda every by unprofessional TSA types, and rude immigration officials at the border.
I was looking at the stats to see why Brazil and other S.American countries didn't fair so well (Brazil had 520+ participants!). When look through the first problem I see that it makes reference to something that is "one-to-one" and "onto". While many Americans know that a "one-to-one" function is an injective function and an "onto" function is "surjective" many people from other cultures/languages may have a hard time understading what they're referring to.
Since this is a programming contest and not a language contest, potentially troublesome terms for non-natives should be spelled out carefully or better yet there should be some translations in some of the other world languages besides English. Otherwise, English speaking countries and more developed countries in general will have an unfair advantage.
Afghanistan was a little more complicated than that, and I think the way it unfolded makes a bit more sense if you understand the context.
Step aside sonny...
The story in Afghanistan doesn't begin with the Taliban harbouring Osama bin Laden.. it starts much earlier with the US supporting the Mujahedin in Afghanistan under the pretext of "holy war" in the middle of the Cold War to oppose the Soviets.
Once the Soviets left Afghanistan, the US abandoned its allies and 10 years of civil war ensued culminating with the Taliban.
Since the original poster wanted advise about web apps (and not mere flamewars re: Java vs PHP) here goes an attempt at some advice on creating a "modern" web app:
1. Get familiar with CSS3 and other enhancements to make your app mobile friendly. .. think Sesame Street.com. Of course this much depends on your audience.
2. Get a modern looking design. Usually this means pure colors
3. Start learning HTML5
4. Don't write raw JS. Use jQuery or some other JS framework (Dojo, ExtJS/Sencha, GWT, etc..) to keep your JS compatible accross browsers.
5. Consider CSS frameworks like Blueprint
6. The Rails tutorial has some good tips on modern sites. Including using RESTful URLs instead of *.jsp, *.asp, *.php file extensions (who cares what language you're using.. why should that be exposed to the user)
7. Gather detailed stats on your site visitors (info is gold these days)
8. Simplify your login/registration process. Consider using OpenID, or OAuth for site access
9. Use a third party library/module for authentication/authorization if a good one is available for your platform.. don't re-invent the wheel
10. Use a third party library/module for credit card processing (I like Shopify's ActiveMerchant)
I'm sure others have good tips as well. A lot of this is really language/platform agnostic.
I bet GP doesn't even know what "static analysis" is.. hence the lack of knowledge about Eclipse.
PHP is garbage. Bad design all over the place. And I'm talking both about the language as well as the standard mess it calls a "library". It is the new BASIC.. stay away it'll damage your brain. For details see:
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
There are better alternatives if you want to go the dynamic route: Ruby on Rails and I hear Python / Django is great too.
There's nothing wrong with Java as long as you know how to use it. But its always good to learn a new language. ASP.Net is also nice if you don't want to go dynamic.
The hardest part about moving away from Java is losing all the cool static analysis tools that are incorporated in Eclipse as well as tools such as FindBugs. But our experience with RoR (in spite of it missing some needed feature many Java frameworks have).
In summary: learn anything but PHP.. it truly is garbage that must die.
My 4 year old Dell Vostro has a 15" screen and 1680x1050 resolution.. The minimum acceptable resolution for a laptop in my opinion.
What I tend to look for:
- good resolution
- good battery time
- reasonably fast
- tons of ram
- average disk size
I thought the TSA was the one that got all touchy!
I've found that small companies are focused on getting the job done. In large companies people are often dedicated to satisfying management. Those aren't the same things.
I have simply never seen the kind of "programmer" you describe. It may exist, but I've got no idea where.
All of the development I've ever been involved was a group of people, usually with BSc's and/or MSc's in comp-sci, who did their design and development work, planned out the spec, and implemented it themselves.
I agree entirely. In 16 years I've never seen any successful project that didn't have developers that designed/planned/spec'd/implemented work.
We're based in South America and do work for companies in the US. We don't do "monkey" work. And I think one reason why some outsourcing relationships don't work is that one side or both sides have no respect for each other.
In any business relationship there must be trust and respect. If we cannot establish trust and respect it is better not to do the job at all.
I have seen our folks stay up all night without pay to help a customer with an emergency situation on a weekend. Successful relationships are based on caring for the other's business. And just as we do most definitely care for our customers we hope our customers care for us as well. We certainly try hard to earn that trust.
I'm surprised by all the negative comments on Slashdot (well.. actually.. this IS Slashdot) regarding Asian programmers or whatever. It is not a person's ethnicity that establishes his competence! Certainly in my carreer, especially when I worked in the US, I met many VERY COMPETENT Indian programmers. And I've met very excellent and professional american counterparts as well as the spoiled overpaid loser type as well.
To regard outsourcing as some magical way to solve software development issues is insane and irresponsible. Software Development is hard. Both inhouse as well as through outsourcing. But working together on a solution can help companies deliver what they need at a timely basis and at a reasonable cost. In my work in US software companies or more recently through my outsourcing firm in South America I have found that problems are equally likely to occur inhouse as they are offshore. But you always need to be working with good people to get such problems resolved.
I know.. I've been doing outsourcing for 8 years and my customers have stuck with us all that time and still love us.
What do people still live in the 20th Century?
I live in South America.. and I can't remember the last time I used such obsolete technology. Today is all about streaming content.. Netflix, iTunes.. who needs that obsolete region locked garbage?
You're so wrong its almost comical.
"Soccer" is known as "Football" all around the world. Both in English and non-English speaking countries. In North America it is known by its Spanish spelling "futbol" in both the US (a big portion of the US is Spanish speaking) as well as Mexico. Also in Central and South America it is unanimously known by the same name.
Then there's Africa with "major" populations that speak English, French and Spanish. In all these countries "football" is the most popular sport. In Asia and Europe the same thing plays out.
The only countries that don't call it "football" are minor countries such as the US with a few million people that don't really play the sport all that much. Billions around the world beg to differ. ;)
A pocket knife doesn't implicitly create objects or fail to cleanup if you forget to make your destructor virtual.
C++ has very complex rules that take years to hone and understand correctly, and even then mistakes are easy to make. The proof is that even today when you go to C++ forums people are still asking about obscure language rules while in Java forums the conversation has moved on to issues of design. Nobody needs to discuss the meaning of language constructs in Java because they are obvious.
It isn't however obvious that an error in your cannonical class definition could cause this code to create a memory leak:
a = b;
Clearly proper use of a tool is important. But tools without safety features are more likely to cause accidents.
Time to outsource our WMDs to India!!
Sure. But the cost of an Ariane launch is 10000 per Kg whereas the cost of a Falcon 9 is 5000 per Kg.
iTunes is suprisingly bad software. Examples:
- SLOW navigation
- no wish list: once you find something you can't keep it till you want to buy/rent it
- very slow playback
- crashes now and then
- should give you 48hrs to see your rentals not 24hrs
- sometimes gets stuck and insists on redownloading stuff that has expired
- SLOW navigation
- did I mention it was slow?
- hard to find music when looking for specific stuff.. the "browser" is just ugly
Unprofessional programmers are defensive. A good programmer will listen and learn when he can.
But the other guy in India did it for 1/5th the price!
You assume the guy in India is less capable than you are. In many cases they could be much MORE capable than you!
Hey! You plagiarized MY first program!
Some other good books (classics)
- Writing Solid Code by Steve Maguire
- Debugging the Software Development Process by Steve Maguire
- How we test at Microsoft (no flames please), its one of the best/most practical books on testing I've seen
umm.. that is what we started with in the beginning..
I live in Latin America and have the following options for movies/music/games:
1. Get it on DVD from a pirate (approx cost $1) [ILLEGAL]
2. Rent a pirate copy (approx cost $2) [still technically ILLEGAL]
3. Buy it on iTunes (cost $1-$4).. but I can only do this because I've figure out how to get around regional limitations [psuedo-LEGAL]
4. Buying on Netflix/Amazon is not an option [N/A]
5. Going to threater (movies only).. sometimes, when/if it arrives at a timely basis (cost: $4-$5) [LEGAL]
6. Buy the legal DVD (cost: $30-$100) [LEGAL]
As you can see a great option is iTunes/Netflix/Amazon but the industry has systematically cut off those options from us. Also the legal DVDs are sold at much higher prices than in the US.
So do you wonder why there is so much piracy around the world??
There's no viable affordable legal option.