On the other hand, it is still a great opportunity to get "in the door", so to speak. They'll hire you with little experience. After all, why not? They're not risking anything if you're working for free.
If you do a very good job, they'll come to need you, in a sense. That'll make them hire you when you graduate, probably at a much better rate than you'd get just by walking in the door. This is especially true in smaller businesses, who may not be able to find someone with your skillset very easily (there's one small business that I worked for until four years ago (because I went into research after that) that's still looking for someone to replace me!)
I used to consider internships a form of exploitation, especially since my university required me to intern for at least one semester. Now I realize that it can run both ways:)
The same reason that some people only read half of a long email: They think they've read "enough" to get the "gist" of it, even if they miss something like "your default password is your last name" at the bottom. Ideally, you probably want an explanation of what the code does as near to the code itself as possible.
I had a friend who used to refer us to his tests whenever we had a question about his code. They were his only form of documentation. He didn't believe in submitting the tests with the program itself or sharing them with other developers, so no one could ever understand what he was doing. Unsurprisingly, when it came time to integrate his code, whole projects fell apart because no one could figure out how to cleanly integrate his code into the logic of the larger program.
Code, like a math proof, is written in a specialized language that people outside of the field are unlikely to understand well.
Try removing all text from a sufficiently complex math proof, leaving only the mathematical notation, and see if you can still figure out what the mathematician is doing.
Now try to publish a paper like that.
No matter how amazing your results, such a proof will not be accepted by the mathematical community. I've run across some very good papers that were discarded because no one, including the author, could understand what all that math was supposed to *do* anymore.
You should be writing code the same way as you'd write a good proof. You don't need to explain why 1+1=2, but you definitely do not want to skip over critical parts of a proof that are necessary to understand before reaching the conclusion.
You aren't commenting your code (else you'd see a lot of "c++;//increment c" stuff); you're commenting your logic.
Maybe the code is self-documenting, but program logic for any reasonably complex problem is not. I don't care how much you've abstracted it; you still need to show how you're using those abstract pieces to solve the problem you're given. You still need comments.
If the developers refuse to comment their code on this basis, I'd probably get someone of average intelligence from sales or HR to read it and explain what it does. If he can't do so, the developer either starts commenting or looks for a new job.
I second the Dreamhost recommendation. I've been hosted with them for about three years now, and I can honestly say that it's the best host I've ever dealt with. Some of the freebies are meaningless - I have about 8 TB of bandwidth on my account, for example, even though I signed up when it was 25 GB (I'm never going to use all of that bandwidth in a single month) - but some of them, like allowing unlimited domains to be hosted on a single account, are very useful.
I hated CIHost. The server was down every day, they made all sorts of billing mistakes, they'd leave old versions of software with vulnerabilities on the servers, and their customer support was not very good. They kept trying to bill me after I cancelled, but the card number I had given them expired at about the same time as my account cancellation, so they couldn't charge me anymore.
I'm hosting with Dreamhost now. They're one of the best hosting companies I've ever dealt with. I'd strongly recommend them.
I disagree. Instead of buying a completely new system, I just give the existing one a series of upgrades. Not only is it cheaper, but you can sell those "worthless components" for a decent amount of money. It's surprising how many people buy old components.
I like most of these additions, though I wonder why they're not just standardizing the (currently nonstandard but widely supported) STL hash containers for hash tables. Regexps are also already in the language in the form of a POSIX library (regex.h), though I don't think MSVC++ supports that, and the regex library could definitely become more user-friendly.
The "auto" keyword being used to automatically determine the type of a variable sounds like it can cause no end of trouble, especially when using polymorphism (will auto give you back a pointer to the base class or the derived one? What if the function isn't virtual? etc.), so I probably won't be using it in my future programming.
Garbage collection AND dynamic allocation via new/delete together? That ought to be interesting... and probably very dangerous:)
The "using" thing after the template definition seems pretty useless and confuses the template declaration with potentially unrelated aliases. Why not use a typedef further down in your program?
Concepts were something I wanted to see in the language from the first day I learned about templates. They should make debugging template issues much easier. I'm glad to see that they're considering them.
Math is related to itself in so many ways that even the most abstract of problems can have benefits in seemingly unrelated areas. For example, if you can prove a certain bound on the divisor function (lowercase sigma), you'll be able to prove the Riemann hypothesis. These are two seemingly unrelated problems, but solving one will yield a solution to the other.
There's nothing too impressive about solving a 40 year-old problem, though: Some problems went unsolved for hundreds of years. Still, I can't even understand this problem, let alone attempt a solution at it (and I studied math), so bravo!
sigma(i=1, n) = (n*(n+1))/2. There's something very elegant about being able to reduce a huge number of operations into three.
p = (2^(n-1)) ((2^n)-1) always struck me as beautiful as well (where p is a perfect number and 2^n - 1 is a Mersenne prime). It just has a sort of symmetry.
This is going to make you unhappy, but check this resolution: H.J. RES. 24.
The resolution itself states its purpose rather succinctly: 'The twenty-second article of amendment to the Constitution of the United States is repealed.'.
I haven't played the game, but it seems that the dog is talking about giving away his own music. The RIAA hasn't patented "musical composition" yet (that patent belongs to someone else, actually), so I don't see how this is any sort of IP infringement.
XHTML, CSS, and one server-side language (I like Perl, but use whatever you want) are really all that you need. You might benefit from some Javascript knowledge, but lack thereof won't kill you.
DO NOT hack up CSS unless you must. I've been developing websites, often professionally, for the last 10 years, and I have NOT ONCE needed to use a CSS hack because IE or some other browser is displaying something incorrectly. You can almost always fix these problems using standard XHTML + CSS without relying on hacks, and your code will be more robust as a result.
Browser tests in script are bad; check for functionality rather than a particular browser (quirksmode had a great article on this).
Remember that every new language/plugin that you use in a page shuts out certain groups. Use them where you must, but don't rely on fancy things such as flash for the core functionality of your website.
Use the right tool for the job, even if it's *gasp* a table or iframe. You'll be much faster than those trying to use some long and complex CSS to do something that you can do with a table, and the result will be indistinguishable (and will probably work on more browsers, since tables have been around for so long).
Coding to standards does not always mean it will display properly on all browsers. Even after writing standard sites, I find that I need to tweak some things to get the site to display well on all browsers that I test with.
This is particularly bad on IE Mac, which is why words cannot express how glad I am that the browser is being discontinued.
Maybe we've finally hit that point when everyone gets disgusted at the old stuff and goes on to create new genres? It happened following all major periods of music, and we're about due for it again now.
This was basically my idea for the Summer of Code. They turned it down at the time, yet now I see them implementing it. This is the same reason I stopped submitting Slashdot articles.
Between this and AdSense's lack of XHTML compliance, I'm starting to get annoyed at Google.
Re:Lets hope they open source it
on
Google to Buy Opera?
·
· Score: 2, Informative
They recently removed the ads. Opera's not bad, but I prefer Firefox myself. I usually design sites with Opera in mind, though.
I think that CSS only makes sense when you combine it with (X)HTML. I frequently hear about people who want to do something very obviously suited to a table (such as lay things out in a 3 column, 5 row grid), but don't want to use a table, because it "combines presentation with semantics". Of course, HTML being a markup language, that makes no sense - presentation is what it's meant to handle. While it is possible to do something like this in CSS, it's way more difficult and tedious than it needs to be, and chances are that your site won't display properly on all browsers (looking at you, IE) if you go that route.
Use CSS where CSS is appropriate. Use HTML where HTML is appropriate. Combine the two to leverage what both give you. You'll get a more effective design in much less time that way.
On the other hand, it is still a great opportunity to get "in the door", so to speak. They'll hire you with little experience. After all, why not? They're not risking anything if you're working for free.
:)
If you do a very good job, they'll come to need you, in a sense. That'll make them hire you when you graduate, probably at a much better rate than you'd get just by walking in the door. This is especially true in smaller businesses, who may not be able to find someone with your skillset very easily (there's one small business that I worked for until four years ago (because I went into research after that) that's still looking for someone to replace me!)
I used to consider internships a form of exploitation, especially since my university required me to intern for at least one semester. Now I realize that it can run both ways
The same reason that some people only read half of a long email: They think they've read "enough" to get the "gist" of it, even if they miss something like "your default password is your last name" at the bottom. Ideally, you probably want an explanation of what the code does as near to the code itself as possible.
I had a friend who used to refer us to his tests whenever we had a question about his code. They were his only form of documentation. He didn't believe in submitting the tests with the program itself or sharing them with other developers, so no one could ever understand what he was doing. Unsurprisingly, when it came time to integrate his code, whole projects fell apart because no one could figure out how to cleanly integrate his code into the logic of the larger program.
Code, like a math proof, is written in a specialized language that people outside of the field are unlikely to understand well.
Try removing all text from a sufficiently complex math proof, leaving only the mathematical notation, and see if you can still figure out what the mathematician is doing.
Now try to publish a paper like that.
No matter how amazing your results, such a proof will not be accepted by the mathematical community. I've run across some very good papers that were discarded because no one, including the author, could understand what all that math was supposed to *do* anymore.
You should be writing code the same way as you'd write a good proof. You don't need to explain why 1+1=2, but you definitely do not want to skip over critical parts of a proof that are necessary to understand before reaching the conclusion.
Maybe the code is self-documenting, but program logic for any reasonably complex problem is not. I don't care how much you've abstracted it; you still need to show how you're using those abstract pieces to solve the problem you're given. You still need comments.
If the developers refuse to comment their code on this basis, I'd probably get someone of average intelligence from sales or HR to read it and explain what it does. If he can't do so, the developer either starts commenting or looks for a new job.
Don't assume that everyone who will read the code will want to figure out what the tests are doing as well.
I second the Dreamhost recommendation. I've been hosted with them for about three years now, and I can honestly say that it's the best host I've ever dealt with. Some of the freebies are meaningless - I have about 8 TB of bandwidth on my account, for example, even though I signed up when it was 25 GB (I'm never going to use all of that bandwidth in a single month) - but some of them, like allowing unlimited domains to be hosted on a single account, are very useful.
I hated CIHost. The server was down every day, they made all sorts of billing mistakes, they'd leave old versions of software with vulnerabilities on the servers, and their customer support was not very good. They kept trying to bill me after I cancelled, but the card number I had given them expired at about the same time as my account cancellation, so they couldn't charge me anymore.
I'm hosting with Dreamhost now. They're one of the best hosting companies I've ever dealt with. I'd strongly recommend them.
I disagree. Instead of buying a completely new system, I just give the existing one a series of upgrades. Not only is it cheaper, but you can sell those "worthless components" for a decent amount of money. It's surprising how many people buy old components.
I like most of these additions, though I wonder why they're not just standardizing the (currently nonstandard but widely supported) STL hash containers for hash tables. Regexps are also already in the language in the form of a POSIX library (regex.h), though I don't think MSVC++ supports that, and the regex library could definitely become more user-friendly.
:)
The "auto" keyword being used to automatically determine the type of a variable sounds like it can cause no end of trouble, especially when using polymorphism (will auto give you back a pointer to the base class or the derived one? What if the function isn't virtual? etc.), so I probably won't be using it in my future programming.
Garbage collection AND dynamic allocation via new/delete together? That ought to be interesting... and probably very dangerous
The "using" thing after the template definition seems pretty useless and confuses the template declaration with potentially unrelated aliases. Why not use a typedef further down in your program?
Concepts were something I wanted to see in the language from the first day I learned about templates. They should make debugging template issues much easier. I'm glad to see that they're considering them.
Math is related to itself in so many ways that even the most abstract of problems can have benefits in seemingly unrelated areas. For example, if you can prove a certain bound on the divisor function (lowercase sigma), you'll be able to prove the Riemann hypothesis. These are two seemingly unrelated problems, but solving one will yield a solution to the other.
There's nothing too impressive about solving a 40 year-old problem, though: Some problems went unsolved for hundreds of years. Still, I can't even understand this problem, let alone attempt a solution at it (and I studied math), so bravo!
sigma(i=1, n) = (n*(n+1))/2. There's something very elegant about being able to reduce a huge number of operations into three.
p = (2^(n-1)) ((2^n)-1) always struck me as beautiful as well (where p is a perfect number and 2^n - 1 is a Mersenne prime). It just has a sort of symmetry.
To avoid alarming anyone and to clear up any potential misunderstanding, I'd like to add that the resolution has not become law yet.
This is going to make you unhappy, but check this resolution: H.J. RES. 24.
The resolution itself states its purpose rather succinctly:
'The twenty-second article of amendment to the Constitution of the United States is repealed.'.
It's called SessionSaver, if you're referring to the one I think you are.
You missed the "and we can change what we eat" part.
You can get a new perfect number out of this (2^(n-1) * (2^n)-1), but other than that, there's not much point. Maybe cryptography.
I haven't played the game, but it seems that the dog is talking about giving away his own music. The RIAA hasn't patented "musical composition" yet (that patent belongs to someone else, actually), so I don't see how this is any sort of IP infringement.
XHTML, CSS, and one server-side language (I like Perl, but use whatever you want) are really all that you need. You might benefit from some Javascript knowledge, but lack thereof won't kill you.
DO NOT hack up CSS unless you must. I've been developing websites, often professionally, for the last 10 years, and I have NOT ONCE needed to use a CSS hack because IE or some other browser is displaying something incorrectly. You can almost always fix these problems using standard XHTML + CSS without relying on hacks, and your code will be more robust as a result.
Browser tests in script are bad; check for functionality rather than a particular browser (quirksmode had a great article on this).
Remember that every new language/plugin that you use in a page shuts out certain groups. Use them where you must, but don't rely on fancy things such as flash for the core functionality of your website.
Use the right tool for the job, even if it's *gasp* a table or iframe. You'll be much faster than those trying to use some long and complex CSS to do something that you can do with a table, and the result will be indistinguishable (and will probably work on more browsers, since tables have been around for so long).
Coding to standards does not always mean it will display properly on all browsers. Even after writing standard sites, I find that I need to tweak some things to get the site to display well on all browsers that I test with.
This is particularly bad on IE Mac, which is why words cannot express how glad I am that the browser is being discontinued.
Maybe we've finally hit that point when everyone gets disgusted at the old stuff and goes on to create new genres? It happened following all major periods of music, and we're about due for it again now.
This was basically my idea for the Summer of Code. They turned it down at the time, yet now I see them implementing it. This is the same reason I stopped submitting Slashdot articles.
Between this and AdSense's lack of XHTML compliance, I'm starting to get annoyed at Google.
They recently removed the ads. Opera's not bad, but I prefer Firefox myself. I usually design sites with Opera in mind, though.
So far we have super-strong, long-lived, regenerating mice with human brain cells. We're getting pretty close to "the mice of NIMH".
Or just use something like [^>] (if you're looking for a closing angle bracket to end a phrase).
I think that CSS only makes sense when you combine it with (X)HTML. I frequently hear about people who want to do something very obviously suited to a table (such as lay things out in a 3 column, 5 row grid), but don't want to use a table, because it "combines presentation with semantics". Of course, HTML being a markup language, that makes no sense - presentation is what it's meant to handle. While it is possible to do something like this in CSS, it's way more difficult and tedious than it needs to be, and chances are that your site won't display properly on all browsers (looking at you, IE) if you go that route.
Use CSS where CSS is appropriate. Use HTML where HTML is appropriate. Combine the two to leverage what both give you. You'll get a more effective design in much less time that way.