Look at all the projects that are based on eclipse. IBM Websphere App Developer Studio, Rational XDE, others(?) are all java development tools based on eclipse.
Now that eclipse is starting to support Swing based plugins, that will open the doors even wider. I used to be a die-hard emacs guy for my java development. But that required editing in emacs, building in ant (which you could call from emacs mind you) debugging using an external debugger. Eclipse has done an EXCELLENT job of making sure multiple disparate organizations can integrate their tools into one development environment. Isn't THAT what integration and unification is all about? I now run EVERYTHING in my java development process straight out of eclipse and it works extremely well.
Personally, I think Sun is just pissed because they didn't think of it. Their tool had a similar idea but their implementation was not as good. Yet another chapter in a Sun doing a great job coming up with innovative technologies (java) and IBM perfecting it. I've always kind of been under the impression that IBM does java better than Sun.:) Eclipse is yet another example.
I just made the startling realization that I used to work for Darl Mcbride about 5 years ago at Pointserve (www.pointserve.com). As I recall, he had one of the hugest egos of anyone I had ever met. At the time though I think he was only a VP, but he came up with a bunch of brilliant strategies that basically ran the company into the ground. I love how all the bios of him hype his Pointserve years as being a success, when from the inside it looked like a big fat failure. Amazingly, the company is still around.
Read an article about them awhile back. They get about the same gas mileage as a hybrid, they look better than most hybrids, and overall you end up spending less on fuel with the TDIs than you do with hybrids (diesel is cheaper than gas). Supposedly they are also easily customized to get more horsepower without sacrificing mileage. VW basically perfected the diesel engine (so no reliability problems like in the 80s) and has had great success with their TDI line of vehicles.
Sounds like the concept presented in William Gibson's short story, "The Gernsback Continuum," only their exhibit was called "the future that never was" or something like that.
So... I'm using roadrunner, a rather large cable modem network owned by timewarner to get to listen4ever, should time warner sue itself? The argument against probably being that time warner uses one of the major backbones being sued in the case, but couldn't the time warner network still block it?
Secondly, regarding RIAA profits, how much money are they spending on lawyers and legal fees? That is the only way I could see the sharing of MP3s damaging the record industry's profits. If they would leave people alone, they would save their costs in legal fees, and let the free music sharing be the huge advertising campaign that it is, they would be set.
Also, why aren't there more independent internet-only music publishing companies out there? Similar to MP3.com, where artists can publish their music without being under the thumb of some record company.
Good post, I was also going to mention that sometimes the reason people go into programming is because they don't really like dealing with people that much and they aren't the most socially adept, especially when it comes to working with someone who is beyond them in ability. Also, sometimes those that are beyond them in ability come off as snapish and have attitudes. Even without realizing it they may sound put off when people ask questions.
I have experienced both sides of this equation. Being both the one that doesn't like interacting with people much, and the one that wants to help but gets irritated when people start asking lots of questions. I'm getting better, I try to respond to people who are asking questions a lot nicer and I've found that I actually like helping people, because in a way it validates my own existence when I get to help other people understand something. That makes me happy and I try to focus on that rather than this person is asking too many stupid questions.
I personally would like to see XP adopted in my own company but I doubt it will happen as most of management is very "old school."
I am a member of the local XP group that is run by a senior architect that I have worked with in the past, who is very much an advocate of XP and is executing it in his current company. From him, I hear the biggest problem is making management understand it. It seems a lot of companies will buy into it but then they don't really understand it, so they'll leave out some critical issues and focus on things that just aren't true (ie, pair programming means fewer workstations to buy).
Our group itself is in the process of running through an XP exercise. We are developing a little open source project following the XP guidelines. It is slow because we are all working in our spare time, and none of us work alone, so we have to schedule time to work with others in pairs. At first I was skeptical about pairs, I had the same reaction as any, but I'm surprised at the value I've gotten out of it. A lot of people think pair programming means having someone watch over your shoulder all day, or telling someone how to write code. This is simply not true, if it is you are doing it wrong. Pair programming, for me, has basically been like continuous code review. I am much less apt and lazy to write crappy code with someone watching me do it, both if that someone is junior or senior ot me because I don't want the junior to pick up my bad habits and I want to look good in front of the senior.
The other thing is if you find you are having to tell someone what to write when you are pairing, then you should be the one driving, and the other person watching, but you need to make sure the other person is understanding what you are doing. Having to explain myself like this I have often found holes in my own logic and corrected them on the fly.
Also, yes, some people are less skilled than others, that's why you also need to pair senior people with junior people, because they senior people will help the junior people learn, BUT this only works if you keep explaining what you are doing to the junior, and make sure they understand it.
For us, the process has been slow going because we only meet like once every two weeks, and then try to get together in pair groups at other times in between meetings, but we've been going at a good pace compared to other projects i've worked on considering the amount of time we've put into it.
Another big thing people are resistent to is unit testing. I agree, yes, it's hard to unit test a gui, there are automated tools designed for testing guis, I would suggest using those for testing GUIs. However, it should be easy to unit test the underlying non-gui objects. You need to test them thoroughly too because the whole idea is that when you make changes you re-run the unit tests and see if anything breaks. Two things can happenhere, a test will break, you go fix it, or a test will not break, the code will break, someone did not write a valid unit test.
Within the past year I have subscribed to the philosophy of writing the unit test first and I have generated more working code quicker than I ever did before by unit testing. Even if you can't adopt the entire XP methodology, then at least try to adopt unit testing. I failed to convince my management that we should have mandatory unit testing, but I myself am using it and the result is my shit works, and I end up having to wait on others to fix their problems more often than the other way around.
I'm not as experienced with the planning aspects of XP, but I am learning. My only comment here is that I very much like the YAGNI principle. It simplifies things greatly, and I see several places in my professional life where we are violating it and it's biting us in the ass. The reason we are violating it is because it was part of the approved design, and things are more difficult becuase of it, and I predict we will rewrite a lot of code for future releases regardless.
Then it's possible someone wasn't writing thorough enough unit tests, or someone wasn't re-running the unit tests after they refactored. The unit tests are an excellent tool to find out what breaks after you refactor.
Did you even read the thing? It states that they do NOT share your personal information, only network usage statistics in aggregate.
They can only enter your home for installation, removal, or repair, not for monitoring, this is normal as this is what your phone, cable, utility companies do also.
They don't prohibit downloading of anything, only transmission of viruses, spam, warez, etc.
The only truly objectionable thing I saw was no running servers, but that might be a good thing if their infrastructure can't handle that. Personally, if it can't, I'm not going to use it. Who would want to game on a server running on a wireless connection anyway?
Depends on what you want to do
on
CS vs CIS
·
· Score: 2
As one who's done both and then dropped out, here's my take on it:
I think a lot of people don't know exactly what CS is. Most of the IT world I think is closer related to CIS and engineering because there is very little science involved. Here's the way I look at it:
If you want to do all the scary shit, like coming up with new algorithms nobody's ever seen before, building wickedly cool new graphics engines nobody's ever seen before, coming up with some powerful new AI that nobody's ever seen before, developing funky modifications to systems that NASA might need to use in space, etc, definitely go for the CS degree and learn all you can and more. Also, if you like spending a lot of time doing research on minute detail things for computers (like algorithm performance evaluation, etc) and spending time in a lab, then CS is where you want to be. Don't expect to get paid much but you can get access to some pretty heavy resources doing this kind of thing.
If you're in it for the money, and you mainly want to do systems related work (sys admin, network admin, etc) then go CIS because you don't really need a lot of math and hardcore science skills for this stuff, and you'll still get all the programming classes. You will use some science skills analyzing and solving problems, but no the hardcore research stuff.
If you want to do more programming developing software, then find a school with a good Software Engineering degree and do that. This is what I should have done, but by the time I figured out this is what I wanted to do, I had been in school four years and my school didn't have an SE program.
My background if your interested: I started at one school in CS, went through all the math, got a job, dropped out my senior year finally after realizing I was making more than most graduates. I actually had the job all through college and only started questioning why I really needed to be in school the last couple years. So I dropped out, enrolled in distance ed (still slowly aiming for a degree to please my father) CIS program, and I still make more than most graduates my age because I've got about 5 years experience in software engineering, including OO architecture and design. I continously train myself by attending study groups, reading books on design philophy, project methodology, etc.
The value of an object is an object reference, so that's what's passed when you pass objects. You can modify the object contents, but you can not modify the object reference because it is passed by value.
Saying C++ is better than Java because your beginning java instructor in college said so is downright silly. Most people I've met, with a few exceptions, teaching java in college barely have a grasp of the language themselves.
I've been programming professionally for four years, and java for about 2.5 of that. I've learned way more in the industry than I ever did in college.
To keep learning, I try to surround myself with people who've been doing it for a lot longer than I have (like around 20 years). Since I'm not a C++ guy I have to rely on them for information about the elegance of languages I have not used. These are the common opinions I hear:
Speaking strictly as a language, most I've talked to that have done both seem to like Java better than C++. C++ is powerful but leaves a lot of room for error. Java is powerful, removes some room for error, and at least tries to enforce OO style, and seems to implement some OO language features a little cleaner than C++ does.
Two other languages that people seemed to like were Smalltalk and Eiffel. Many seemd to like Eiffel better than java, and looking at it I aggree it has a lot of features I wish java had.
For the gentlement that was listing java deficiencies, I have a couple comments:
Lack of parameterized types:
Nice to have but can live without. Maybe in java 1.4.
Lack of assertions:
There are probably a bazillion assertion libraries for java, and how hard is it to write your own? Assertions are simple things and you can write a decent assertion library in about an hour or two.
He does admit that his GENESIS idea is not a new one, and is basically the same thing as tcp syn cookies which are available in linux, though turned off by default.
Looking at the article on syn-cookies (which he links to from his GENESIS document) it says that you can enable syn cookies in linux by echo 1 >/proc/sys/net/ipv4/tcp_syncookies... I didn't have this file already, and I noticed that Kernel 2.4 has an option to turn syn_cookies on.
My question is, if this has been implemented for so long (says in SunOS since 1996, Linux in 97, then how come so many sites have been brought down by DoS attacks?
Think of all the extra garbage we will have laying around after millions of people keep printing out crap that they don't really want, they just like to see it being made.
Interestingly enough our management just asked us for suggestions on how we want our new workspaces to be after we move. Right now we are in a cube farm. I've worked in offices with two very cool layouts that worked really well, and it is now my preferred working environment:
The way I like to set things up is by dividing teams up into project rooms. Meaning that the people you work with most should be immediately accessible to you. This can be done using either a big room or, if that's not possible, using large cubicle walls to create a roomlike division.
I then put workstations around the outside of the room so that the developers are facing a corner workstation or a wall, their preference. There should be half height walls or no walls between developers on the same project team. This makes it easy to get to know your team members, and allows for impromptu communication, and good line of sight for nerf blasting.
Optionally, in the center of the room is a conference table so the team can quickly and easily have a group meeting. Since their workstations are in the same room however, this is not a requirement.
The room should have as many whiteboards as it can hold, nuff said.
This layout can be scaled. For example, if you have lots of space, you might have actual offices around the outside of a large room, with the offices opening into conference room. The office walls stifle communication a little bit, but you can alleviate that if your offices are big enough by putting 2 or 3 developers per office. The office situation works well though if you like a lot of peace and quiet, but I still prefer having everybody on the team in one room because while quiet is nice, it has a tendency to divide the team. If you need some isolation, headphones are great.
Lighting should be a per workstation basis. I like dim lighting, helps my eyes relax. If brighter reading light is needed, there are several good desk lamps available.
And plenty of space should be allowed for books, diagrams, etc. For workstations I prefer a U shaped desk so I have surface space on three sides of me.
Look at all the projects that are based on eclipse. IBM Websphere App Developer Studio, Rational XDE, others(?) are all java development tools based on eclipse.
:) Eclipse is yet another example.
Now that eclipse is starting to support Swing based plugins, that will open the doors even wider. I used to be a die-hard emacs guy for my java development. But that required editing in emacs, building in ant (which you could call from emacs mind you) debugging using an external debugger. Eclipse has done an EXCELLENT job of making sure multiple disparate organizations can integrate their tools into one development environment. Isn't THAT what integration and unification is all about? I now run EVERYTHING in my java development process straight out of eclipse and it works extremely well.
Personally, I think Sun is just pissed because they didn't think of it. Their tool had a similar idea but their implementation was not as good. Yet another chapter in a Sun doing a great job coming up with innovative technologies (java) and IBM perfecting it. I've always kind of been under the impression that IBM does java better than Sun.
He didn't seem to have any problem with us using open source software at Pointserve when he was there.
And how many versions of windows are there?
I just made the startling realization that I used to work for Darl Mcbride about 5 years ago at Pointserve (www.pointserve.com). As I recall, he had one of the hugest egos of anyone I had ever met. At the time though I think he was only a VP, but he came up with a bunch of brilliant strategies that basically ran the company into the ground. I love how all the bios of him hype his Pointserve years as being a success, when from the inside it looked like a big fat failure. Amazingly, the company is still around.
Read an article about them awhile back. They get about the same gas mileage as a hybrid, they look better than most hybrids, and overall you end up spending less on fuel with the TDIs than you do with hybrids (diesel is cheaper than gas). Supposedly they are also easily customized to get more horsepower without sacrificing mileage. VW basically perfected the diesel engine (so no reliability problems like in the 80s) and has had great success with their TDI line of vehicles.
how come they never post cost breakdowns when they do these studies so we can see how they arrived at their results?
my favorite: The spinning M&M DNA helix from Mission to Mars.
I'm going to patent selling pre-made hamburgers over counters, and through little windows in the sides of buildings to people in cars.
Sounds like the concept presented in William Gibson's short story, "The Gernsback Continuum," only their exhibit was called "the future that never was" or something like that.
I'm confused, these are "open source product excellence awards" but this doesn't look like an open source product... am I missing something? http://www.microsoft.com/windows/sfu/howtobuy/defa ult.asp
www.lasikdisaster.com
So... I'm using roadrunner, a rather large cable modem network owned by timewarner to get to listen4ever, should time warner sue itself? The argument against probably being that time warner uses one of the major backbones being sued in the case, but couldn't the time warner network still block it?
Secondly, regarding RIAA profits, how much money are they spending on lawyers and legal fees? That is the only way I could see the sharing of MP3s damaging the record industry's profits. If they would leave people alone, they would save their costs in legal fees, and let the free music sharing be the huge advertising campaign that it is, they would be set.
Also, why aren't there more independent internet-only music publishing companies out there? Similar to MP3.com, where artists can publish their music without being under the thumb of some record company.
Design Patterns (Gang of Four)
Refactoring (Fowler)
Mythical Man Month (Brooks)
Open Source tools for Java Development
eXtreme Programming books (even if you're not an XPer) (Beck, et al)
Analysis Patterns (Fowler)
Java Design (even if you're not a java developer, some good OO stuff in here) (Coad)
Good post, I was also going to mention that sometimes the reason people go into programming is because they don't really like dealing with people that much and they aren't the most socially adept, especially when it comes to working with someone who is beyond them in ability. Also, sometimes those that are beyond them in ability come off as snapish and have attitudes. Even without realizing it they may sound put off when people ask questions.
I have experienced both sides of this equation. Being both the one that doesn't like interacting with people much, and the one that wants to help but gets irritated when people start asking lots of questions. I'm getting better, I try to respond to people who are asking questions a lot nicer and I've found that I actually like helping people, because in a way it validates my own existence when I get to help other people understand something. That makes me happy and I try to focus on that rather than this person is asking too many stupid questions.
Similar concept, but already exists, and does the same thing with video.
check out: http://www.surgientnetworks.com
I personally would like to see XP adopted in my own company but I doubt it will happen as most of management is very "old school." I am a member of the local XP group that is run by a senior architect that I have worked with in the past, who is very much an advocate of XP and is executing it in his current company. From him, I hear the biggest problem is making management understand it. It seems a lot of companies will buy into it but then they don't really understand it, so they'll leave out some critical issues and focus on things that just aren't true (ie, pair programming means fewer workstations to buy). Our group itself is in the process of running through an XP exercise. We are developing a little open source project following the XP guidelines. It is slow because we are all working in our spare time, and none of us work alone, so we have to schedule time to work with others in pairs. At first I was skeptical about pairs, I had the same reaction as any, but I'm surprised at the value I've gotten out of it. A lot of people think pair programming means having someone watch over your shoulder all day, or telling someone how to write code. This is simply not true, if it is you are doing it wrong. Pair programming, for me, has basically been like continuous code review. I am much less apt and lazy to write crappy code with someone watching me do it, both if that someone is junior or senior ot me because I don't want the junior to pick up my bad habits and I want to look good in front of the senior. The other thing is if you find you are having to tell someone what to write when you are pairing, then you should be the one driving, and the other person watching, but you need to make sure the other person is understanding what you are doing. Having to explain myself like this I have often found holes in my own logic and corrected them on the fly. Also, yes, some people are less skilled than others, that's why you also need to pair senior people with junior people, because they senior people will help the junior people learn, BUT this only works if you keep explaining what you are doing to the junior, and make sure they understand it. For us, the process has been slow going because we only meet like once every two weeks, and then try to get together in pair groups at other times in between meetings, but we've been going at a good pace compared to other projects i've worked on considering the amount of time we've put into it. Another big thing people are resistent to is unit testing. I agree, yes, it's hard to unit test a gui, there are automated tools designed for testing guis, I would suggest using those for testing GUIs. However, it should be easy to unit test the underlying non-gui objects. You need to test them thoroughly too because the whole idea is that when you make changes you re-run the unit tests and see if anything breaks. Two things can happenhere, a test will break, you go fix it, or a test will not break, the code will break, someone did not write a valid unit test. Within the past year I have subscribed to the philosophy of writing the unit test first and I have generated more working code quicker than I ever did before by unit testing. Even if you can't adopt the entire XP methodology, then at least try to adopt unit testing. I failed to convince my management that we should have mandatory unit testing, but I myself am using it and the result is my shit works, and I end up having to wait on others to fix their problems more often than the other way around. I'm not as experienced with the planning aspects of XP, but I am learning. My only comment here is that I very much like the YAGNI principle. It simplifies things greatly, and I see several places in my professional life where we are violating it and it's biting us in the ass. The reason we are violating it is because it was part of the approved design, and things are more difficult becuase of it, and I predict we will rewrite a lot of code for future releases regardless.
Then it's possible someone wasn't writing thorough enough unit tests, or someone wasn't re-running the unit tests after they refactored. The unit tests are an excellent tool to find out what breaks after you refactor.
Did you even read the thing? It states that they do NOT share your personal information, only network usage statistics in aggregate.
They can only enter your home for installation, removal, or repair, not for monitoring, this is normal as this is what your phone, cable, utility companies do also.
They don't prohibit downloading of anything, only transmission of viruses, spam, warez, etc.
The only truly objectionable thing I saw was no running servers, but that might be a good thing if their infrastructure can't handle that. Personally, if it can't, I'm not going to use it. Who would want to game on a server running on a wireless connection anyway?
As one who's done both and then dropped out, here's my take on it:
I think a lot of people don't know exactly what CS is. Most of the IT world I think is closer related to CIS and engineering because there is very little science involved. Here's the way I look at it:
If you want to do all the scary shit, like coming up with new algorithms nobody's ever seen before, building wickedly cool new graphics engines nobody's ever seen before, coming up with some powerful new AI that nobody's ever seen before, developing funky modifications to systems that NASA might need to use in space, etc, definitely go for the CS degree and learn all you can and more. Also, if you like spending a lot of time doing research on minute detail things for computers (like algorithm performance evaluation, etc) and spending time in a lab, then CS is where you want to be. Don't expect to get paid much but you can get access to some pretty heavy resources doing this kind of thing.
If you're in it for the money, and you mainly want to do systems related work (sys admin, network admin, etc) then go CIS because you don't really need a lot of math and hardcore science skills for this stuff, and you'll still get all the programming classes. You will use some science skills analyzing and solving problems, but no the hardcore research stuff.
If you want to do more programming developing software, then find a school with a good Software Engineering degree and do that. This is what I should have done, but by the time I figured out this is what I wanted to do, I had been in school four years and my school didn't have an SE program.
My background if your interested: I started at one school in CS, went through all the math, got a job, dropped out my senior year finally after realizing I was making more than most graduates. I actually had the job all through college and only started questioning why I really needed to be in school the last couple years. So I dropped out, enrolled in distance ed (still slowly aiming for a degree to please my father) CIS program, and I still make more than most graduates my age because I've got about 5 years experience in software engineering, including OO architecture and design. I continously train myself by attending study groups, reading books on design philophy, project methodology, etc.
I miss those times, I found a whole slew of BBSes modified to run on the net, for instance, a telegard board:
bbs.darktech.org
There also a list of net and non-net bbses still running at :
www.synchro.net
Everything in java is passed by value.
The value of an object is an object reference, so that's what's passed when you pass objects. You can modify the object contents, but you can not modify the object reference because it is passed by value.
Saying C++ is better than Java because your beginning java instructor in college said so is downright silly. Most people I've met, with a few exceptions, teaching java in college barely have a grasp of the language themselves.
I've been programming professionally for four years, and java for about 2.5 of that. I've learned way more in the industry than I ever did in college.
To keep learning, I try to surround myself with people who've been doing it for a lot longer than I have (like around 20 years). Since I'm not a C++ guy I have to rely on them for information about the elegance of languages I have not used. These are the common opinions I hear:
Speaking strictly as a language, most I've talked to that have done both seem to like Java better than C++. C++ is powerful but leaves a lot of room for error. Java is powerful, removes some room for error, and at least tries to enforce OO style, and seems to implement some OO language features a little cleaner than C++ does.
Two other languages that people seemed to like were Smalltalk and Eiffel. Many seemd to like Eiffel better than java, and looking at it I aggree it has a lot of features I wish java had.
For the gentlement that was listing java deficiencies, I have a couple comments:
Lack of parameterized types:
Nice to have but can live without. Maybe in java 1.4.
Lack of assertions:
There are probably a bazillion assertion libraries for java, and how hard is it to write your own? Assertions are simple things and you can write a decent assertion library in about an hour or two.
He does admit that his GENESIS idea is not a new one, and is basically the same thing as tcp syn cookies which are available in linux, though turned off by default.
/proc/sys/net/ipv4/tcp_syncookies ... I didn't have this file already, and I noticed that Kernel 2.4 has an option to turn syn_cookies on.
Looking at the article on syn-cookies (which he links to from his GENESIS document) it says that you can enable syn cookies in linux by echo 1 >
My question is, if this has been implemented for so long (says in SunOS since 1996, Linux in 97, then how come so many sites have been brought down by DoS attacks?
Think of all the extra garbage we will have laying around after millions of people keep printing out crap that they don't really want, they just like to see it being made.
Interestingly enough our management just asked us for suggestions on how we want our new workspaces to be after we move. Right now we are in a cube farm. I've worked in offices with two very cool layouts that worked really well, and it is now my preferred working environment:
The way I like to set things up is by dividing teams up into project rooms. Meaning that the people you work with most should be immediately accessible to you. This can be done using either a big room or, if that's not possible, using large cubicle walls to create a roomlike division.
I then put workstations around the outside of the room so that the developers are facing a corner workstation or a wall, their preference. There should be half height walls or no walls between developers on the same project team. This makes it easy to get to know your team members, and allows for impromptu communication, and good line of sight for nerf blasting.
Optionally, in the center of the room is a conference table so the team can quickly and easily have a group meeting. Since their workstations are in the same room however, this is not a requirement.
The room should have as many whiteboards as it can hold, nuff said.
This layout can be scaled. For example, if you have lots of space, you might have actual offices around the outside of a large room, with the offices opening into conference room. The office walls stifle communication a little bit, but you can alleviate that if your offices are big enough by putting 2 or 3 developers per office. The office situation works well though if you like a lot of peace and quiet, but I still prefer having everybody on the team in one room because while quiet is nice, it has a tendency to divide the team. If you need some isolation, headphones are great.
Lighting should be a per workstation basis. I like dim lighting, helps my eyes relax. If brighter reading light is needed, there are several good desk lamps available.
And plenty of space should be allowed for books, diagrams, etc. For workstations I prefer a U shaped desk so I have surface space on three sides of me.