You might want to read this- Similar to how during the revolution, the fancy pants British army was picked off by bands of snipers in the woods, we are considerably more vulnerable than we think:
I TA'ed an intro to CS class that used these error tools, and this was almost 10 years ago. Cheating is a very serious accusation, or at least was taken very seriously by the professor of the class, and several methods were used to ensure there weren't false positives. The first half of assignments were not run through the cheat system, because they were a bit too simplistic and could have caused false positives. The latter half of assignments were all 100+ lines of code.
The system did several checks, and included positives with and without whitespace. In most cases where we had matches, there was a 100% whitespace match, right down to sloppy indents, trailing whitespace, etc. Clear cut copy and pasting. Smarter students would try to clean up the whitespace, usually by adding extra lines, changing comments, or removing some, but it was usually pretty obvious from the diffs as to where they would miss some and it would blow their cover.
The system also did code structure tests, and could pretty easily tell if you just renamed some variables and messed around with whitespace. This was a little harder to review, but when you checked their analysis, I agreed with the results.
All positives were personally reviewed by the professor and TA's, and to be quite honest we were conservative when actually making formal charges against a student- if only a non-critical function (IE the code to load in the list of items in a file in a binary search problem, but NOT the function that actually performs the search) or two seemed to have a direct match, we would warn the students not to share code again and let them off with a warning. I can't recall ever seeing a real false positive. The professor more or less forced you to use vi or emacs on the linux cluster to write your code, so there was no IDE manipulation of the code, and CS students have no sense of coding standards or consistent style, or even reasonably formatted code for the most part, which made cheats even easier to spot.
We taught source control (RCS) pretty early. We told students to check in early, check in often. We understood that beginning CS students were pretty poor at frequent check-ins, but my professor would often give them the option of trying to prove that they were at least not the mere copiers by providing their RCS logs to view intermediary versions and progress. Often the cheater and the cheated on were pretty obvious. The source of the code usually had a few check-ins well before the deadline by someone with a B or better in the class. The copier, if he had any, was usually a few hours before the deadline and had been a C or worse student.
The professor wouldn't punish to the full extent that he could unless there was 100% certainty there was cheating going on.
Personally, I think there is (or at least was at my school) more cheating in CS because it takes a LOT of time to produce relatively little output. A "page" of code could easily take a CS student 4-8 hours to produce fully debugged. When it comes down to deadline time, there is intense pressure, and if someone leaves their files in their home directory undetected, or walks away from their terminal to use the bathroom, the temptation was too great for them, if they couldn't get the code by begging and schmoozing. Some thought they could just use code from previous years, except that we already had a database of previous years assignments (oops).
The only time we ever had a gray area was in the case where a student claimed that they had no idea how the other student got their code. Even then the professor would generally error on the side of caution, but watch the student like a hawk in the future. It was all pretty obvious, I don't think anyone was unfairly persecuted, ever.
They didn't reinvent anything, the analogy is poor. If anything, they took the idea and found a new application for it, then created a functional product based on it.
I was in college around the time Google was just getting up and running, and it was widely known that the quality of a paper could be measured in how many times it was cited by other people, in fact IIRC, some journal search engines would even show the number of citations when you did a search. So the idea that important documents were "linked to" more often and more relevant than those that are not, was not new. What was new, is taking that concept, applying it to web pages. Not only that, but running the analysis on a very large dataset and making it instantly searchable. This mental leap was not trivial, the implementation even less so. Even after the page rank algorithm became publicly known, it took years for the other search engines to catch up, and search engines have always been big business, not some underfunded niche that just hadn't gotten proper attention from the commercial or academic community.
I would say most innovation these days is driven by taking either an abstract idea or an idea used in one application, and then applying it to an area that no one has before. And never underestimate the huge gap between "we could use X to do Y and Z better" and "we have implemented X and now we do Y and Z better."
I don't mean this as an insult, but in my opinion is that you are a bit behind the times.
Do you own a current generation smartphone? When I say current generation, I am speaking of an Android phone, the Nokia N900, Iphone 3G+, or something in that class, not something from the treo age. The fact that my 3GS is a phone is almost an afterthought to me now, just one more app in with the pile of others. What I do have is a little scooter that gets me on the "information superhighway" and is good for most general day to day internet purposes. But then there is more- location based services are one of those game changing "how did I ever live without this" things that my computer can't do but my phone can. I play games on my phone more than I actually umm... use the phone. In fact, out of my top 10 most used functions- email, getting news/weather, getting directions, finding stuff nearby (like say a bookstore or pizza place in an unfamiliar neighborhood), playing games, taking/looking at photographs, making/receiving calls, texting, listening to music, and surfing the web... making calls is probably #7 or 8 on that list.
I hear this from lots of people with the latest smartphones. In 2 years, I wouldn't be surprised if most people start thinking about their phones as mobile computers with the ability to make calls. I more or less do, and these things are becoming more capable every day.
Your house is seriously insecure, even if you have a steel door and have window panes are made of bullet-proof glass, you probably live in a stick frame building where a drill and a sawz-all can gain me access to the interior in an hour or two. Yet no one seems to get excited about the insecurity of our houses.
When our houses get robbed, we recognize that the wrongdoing is being done by the criminal. Yet when our computers are hacked, we place the wrongdoing on the provider of the software.
I have never really understood why software is held to such lofty standards, particularly on consumer desktops. It would be one thing if file sharing of your entire filesystem was enabled by default in typical software, but lets be real- hacks these days require really clever methods to exploit systems, and if it wasn't for very intelligent, very dedicated people constantly pounding and poking our software, we wouldn't have to worry at all. Yet an uneducated teenager can break into a house in a few minutes with little more than a stick to break a window, and we seem to all go about our day without any outrage at all.
I agree completely. I have run the gamut, working at a 300k+ megacorp, 2 ~30k megacorps, a 1000 person firm, a 30 person firm, and an 8 man startup. Smaller is better in almost every way on a day to day basis. The bigger firms tend to have better benefits when it comes to things like 401k matching and vacation time, but thats pretty much where the benefits end.
Every small firm I have worked at, I have felt that I was more challenged, and did more meaningful work, and contributed to the bottom line in a direct, easily measurable way. The atmosphere is much more family-like, where you all depend on each other, and can bring your friends/family and often even your dog into the office without a problem (security polices at megacorp generally don't allow this, and if they do, you have to go through the hassle of signing them in, getting them visitors passes that they have to get photographed for, etc). My gf is in sales and would always stop in and say hello when she was in the area, and I knew my coworkers families, etc. Megacorp only has shitty free coffee for its employees and vending machines, every small firm I have worked at has had a well stocked kitchen with healthy and no so healthy snacks, drinks, and you could ask the office manager to buy anything within reason and she would, Ditto that on office supplies- want a whiteboard for your cube and have a hang up about only using uniball pens- not a problem, but at Megacorp, you will get whatever is standard issue in the supply closet, where they may actually lock it up and monitor you while get supplies.
Did you just read a blog post at Megacorp about google's sparse_hash hash map library and want to download it and try it out to see if it really delivers on its increased performance over your compiler's stl implementation? Well hold on there will rodger, if you are even allowed to get past websense and get to the download site, there will undoubtedly be restrictions on your ability to get the code into your local dev environment, and even it offers a 5x speed up in your app's most critical area, you are going to have a weeks long battle to get the library's use approved, and a large part of that will be convincing the "architect" whose nose has been up in the air so long he hasn't been able to read a technical book in the last 5 years, that it was his idea. Innovation doesn't come from the unanointed, didn't you get that memo? Meanwhile, over at the startup, I had the code integrated as soon as I verified it passed our unit tests.
Meanwhile, over in megacorp land, you just got an email about a ticket being opened speaking something about how some operations person in singapore can't get his pipes to work properly even though he bashes them properly and the script shell greps just fine and CUSTOMER IMPACT. The ticket has been opened for a week, and you can see xioahu ping was getting pissy and reassigned it to you because it was ignored by your coworker. Singapore is almost exactly 12 hours out of whack with your schedule, meaning your work hours don't overlap at all- looks like there is going to be some OT to get this worked out. Meanwhile, at the startup, the ops guy who makes sure the system hums just yells out to the sys admin to grant his process privileges to/var/log and the problem is resolved in under 3 minutes.
You are given a project at megacorp, and you think the db backend should be postgresql because you like its grown up transaction features and don't need all the crap from Oracle. However, policies at megacorp demand that you use one of their approved vendors that they already have a license for, and you have to talk to the DBA team to provision your database and push the paperwork for the appropriate chargebacks to be put in, and there is a 3 week lead time to get all the work done. Meanwhile, at the startup, you take a box with spare capacity, throw postgresql on it, and in a few hours you have a development server up and running and tell the admin to put in a purchase order for some DB servers.
One thing that really annoyed me in school was professors who would actually yell at students who took notes, because they felt that all the information they needed was in the powerpoint slides they made available, and they should just focus on what the prof was saying. This completely ignores the fact that note taking is not just for writing down information to be read later, it helps you memorize that information as you are doing it. Passively hearing a lecture will let me absorb say 30% of the lecture after a few days. The interactive process of taking notes makes me think about what is being said more intently, and increases not only my retention but understanding.
At the time, I thought I was just stuck in old fashioned habits. But I now realize that the lack of note taking was a big reason why I struggled in some of my CS courses. I would really like to go back and beat some of those professors with a clue stick.
I hear you on this- my main gripe with everyone lumped into "IT" is that there is no distinction between the creative aspects of the field and the maintenance aspects of the field, what you are referring to as the trades.
Part of the problem is the public's perception- when most people hear "IT" they think "he fixes computers." And while they often have the ability to do so, that is not their profession, and to be honest, I am not so sure how well I could really fix common computer problems anymore after being paid to program for the last 7 years.
My personal solution to this problem is that I tell people the industry I use my IT skills for- finance. It is really more accurate at this point because the code has become more or less effortless- the main problem is taking the tools/libraries I have and using them to solve problems in my field. Hence, when people ask, I say I work in finance, and then when people probe, I say I build automated trading systems. At that point people either get it and will ask relevant questions, or just ask something very clueless and I break out my grade level explanation of how the stock market used to work when traders yelled at each other on a trading floor and now its computers mostly talking to each other- I only tangentially mention that I program computers. On the rare occasion these days that I get asked to help fix someone's computer, I say I don't have a problem with that, my consulting rates are $100/hr, which will include travel time if you want me to come out to you. I feel if more people did this instead of giving away their time for free, perhaps IT would get more respect as well- it sends the message that you and IT people are a skill that should be valued, not that you are there on call to fix their problems for free every time they whack the monkey and then install the cool new program they won.
Some people out there may think this is just a big deal over nothing, try introducing a doctor at a party with the line "this is Jim, he works in healthcare" and see how well that goes over. I think this issue will go away over time, it seems like I get more respect as a programmer as time goes on, and I also see this for the "IT" guys and such too- the jack of all IT guys are becoming a lot rarer, as the small companies those guys used to serve can generally be better served by outsourced services for things like email, networking, the company's website, etc.
I will say it here since I wanted to say it many times in this thread already...
No, GPS isn't "going the way of the Dodo" in terms of it being extinct and completely off the market, I will agree. But that statement was exaggerating to make a point- standalone GPS devices are once again going to become a small niche product just like they were in the 90's. For most uses, what is in today's smartphones is good enough.
The latest generation of smartphones is finally starting to achieve the dream of Convergence- my iphone now functions very well as an mp3/video player, pretty well as an e-reader and video game player, is 100% useful as a phone, and can do lots of things I didn't even think a phone would ever be able to do at all, let alone conveniently (IE return me a list of the nearest restaurants to my location with the push of maybe 3 buttons). The G1 and Pre are capable of doing all these things as well from a hardware standpoint, though I haven't looked to see what specific apps are available to them. The biggest downside at the moment is battery life, unfortunately consumers seem to want pretty shiny things over slightly bulkier but more useful things.
There is always going to be that guy out there who needs an aviation or marine grade GPS where his smartphone isn't going to cut it, but the other 95% of us aren't going to want to carry around another clunky device and its associated cables to do what can be done in our phone pretty well.
I may be unfairly grouping "slow" with "disruptive" but from what I remember in middle and high school is that the slower kids tried their hardest to create an atmosphere where studying was not considered cool and they disrupted the class a great deal. I was in almost entirely honors classes in high school but I moved in 11th grade, and due to differences on how classes were titled I was put in the "slow" foreign language class. Aside from the pace being very slow, I was annoyed at how the teacher had almost no control of the class and I had a hard time learning. Electives went the same way- the pace was just infuriatingly slow and I often wondered at the end of the class if I had really learned anything at all.
I never heard slurs of "hey stupid" thrown around, but I heard "dork" and "nerd" many times, every day. We need to give students who want to succeed an environment where they feel comfortable doing so. Kids where I grew up on Long Island are practically forced to go to college and get office jobs even when they have absolutely no desire or aptitude for office work.
The world needs plumbers too- segregating the educational system in high school into vocationally oriented and academically oriented programs will help everyone in the end.
One story people working in Manhattan remember all too well is how lightly the evacuation was taken when the WTC fell. When the first tower was struck, people in the second tower were told to stay put.
Many lives could have been saved if the second tower was evacuated.
Here was the situation: A large commercial jetliner is flying way too low and fast around lower manhattan escorted by fighter jets, making sharp banking turns near buildings. It could very well be interpreted that a novice pilot was missing them.
You have no other information. You are the building manager and in charge of coordinating the employees in the building in an emergency. I saw the whole thing go down this morning, and due to the utter lack of information, it was completely reasonable to evacuate the building, especially when in light of the fact that on 9/11 we were not nearly cautious enough!
Ok, I work downtown on the edge of Battery Park on the 7th floor of this building (http://maps.google.com/maps?hl=en&client=firefox-a&rls=org.mozilla:en-US:official&hs=eXt&q=17%20state%20street%20new%20york%2C%20ny&um=1&ie=UTF-8&sa=N&tab=wl ) and saw the whole thing. Here is what was seen by me as an uninformed observer:
A *really* low flying plane is flying over New York Harbor. The airspace there is very restricted, and you will see helicopters, very light planes like cessna's and the occasional vintage warbird during fleetweek flying below building level, generally at a low speed conducive to sightseeing, but most planes and specifically commercial planes stay way up in the sky. It is EXTRAORDINARY to see a large jet that looks like a 747 anywhere in the vicinity of New York Harbor at an elevation below 3000 ft, let alone 1000 feet. It also appeared to be going full speed. When was the last time a low flying plane at full speed was seen in NY flying below the height of skyscrapers? Oh... yeah...
Anyway... just as the thundering sound of the engines was heard, confirming audibly that this is NOT a normal event, what do I see trailing behind it... a fighter jet. At this point the oh shit circuit in your brain automatically triggers.
The plane comes in and just past my building does a hard bank that no normal 747 on regular business would ever do and from my vantage point appears momentarily to be making a bee line for the tallest building in NJ, 30 Hudson St which is owned by Goldman Sachs, an iconic investment bank that has taken TARP money and a highly likely target, which also houses my old coworkers whom I am still friends with. Again- "oh shit." I apparently only saw the last iteration of the passes it made because it immediately went off into the distance and appeared to be headed to Newark airport, tailed by two fighter jets.
So yeah I think a plane crashing into my building is just going to be a once in a lifetime event too, until I see a 747 buzzing my building at full speed less than 200 yards away tailed by fighter jets. This came without warning, and even if people were warned, the pilot was making some cowboy moves- a friend of mine said it looked like the plane came within 100 feet of the Goldman building. If on any given day you have stared down the nose of a 747 heading at your building at 300+ mph, and didn't have a glimpse of fear because "that will never happen again," I would say there is something wrong with you.
I have used perforce, and while I have not used Mercurial, I must say I like it eons more than CVS or Subversion, which I currently use.
Things I like about Perforce as opposed to SVN:
-P4 doesn't clog your source code directories up with files- all information is hidden from you, and thus copying say, a directory of config files from one machine to another to reproduce a problem doesn't cause a massive headache.
-Changelists and jobs! These are awesome. A changelist controls when and where you can check stuff in. You can move file changes around on different changelists if you are working on different bugs. IE you can create a changelist for bug 101, and another for bug102, and keep the three files you are working on for bug 101 in that bug's pending changelist, and similar for bug102. When you are finished, you just commit on that changelist, and now everything is organized nicely in history. Jobs extend this a bit further by allowing you to group changelists under a job for larger projects.
-Integration and branching. So much easier under P4 than any other system I have used. You create a branchspec saying I want my code from over here, to integrate with these files over there, and boom you are done and can just use that spec to integrate at any given point. you can integrate changes by changelist, job, branch, and other more exotic and less useful ways. The only real downside is that branches are expensive and eventually slow the repository down (at least when I last used P4 about 2 years ago).
These made my life much easier when working on a large project, especially since we did a great deal of work to integrate the system into our bug tracking and release systems. I am currently at a startup that is trying to use OSS as much as possible, and P4 is expensive, so I couldn't make a case to use P4 over SVN, especially considering we only have 4 developers.
This is relatively new data, but I have been following the mortgage markets closely since the credit crisis began as ARM/and Option ARM mortgages reset and the situation is certainly going to deteriorate a great deal.
They are redistributing it to stockholders, which is exactly what a company should be doing.
If you read mangu's link, it states: Specifically, by Microsoft's count, the company has paid out nearly $100 billion through dividends and repurchasing its own stock in the past five years.
They are only "hemorrhaging" cash in the sense that they are giving it back to the owners of the company, and reducing dilution of the stock.
MS is facing unprecedented challenges from Linux, Apple, and is not achieving its goals of dominating the other businesses it has pursued such as mobile devices, gaming, media, etc, but it is competing there and holding its own. But they are still quite profitable. Lets not spread FUD here.
If you look at the real cost of games over time, they have come down greatly. I remember paying about the same for NES and SNES games in the 80's and early 90's for games as I do today. $40-60 was some serious coin in the early days of the NES. Nowadays, $50 is a days work at minimum wage ($6.55). Through most of the 80's, minimum wage was 3.35, meaning it was almost two full days of work to buy a video game. Hence, the real price among one of the main markets for video games (teens who generally make around minimum wage) has fallen almost in half.
You also need to look at the entertainment value you are getting out of a game as opposed to say doing something like reading a book or going to the movies. A typical game is designed to give 40 hours of gameplay, so your $/hr entertainment cost is about $1-2. That 40 hour mark can vary dramatically- Metal Gear games seem to take about 10 hours, but I still play Civilization II and have probably logged hundreds of hours playing that game. I can think of many more examples where I got many multiples of enjoyment out of a game than the typical 40 hours, especially with online games.
So aside from a few clunkers, you are getting a good deal with video games compared to other forms of entertainment. movies these days are about $10/hr if you factor in soda/popcorn. Books can vary, but are probably somewhere in the $1/hr range, and there is usually little chance you will re-read a book again. I really have to get some work done today, so I am leaving out the cost of the game systems themselves. As my professor would say, I am leaving this as an exercise to the reader:).
You are right of course, but I think the much more interesting fact here is that wind power capacity increased by 50% in the past year. That trend line will probably not hold in 2009 since oil prices have dropped and the economic crisis we are in has made getting funding difficult, but this is still great news.
Is the headline a bit sensational? Absolutely. Is this still great news? Absolutely.
Also consider that a large amount of the cost of putting in solar is the installation cost. Assuming that solar panels in the future can use the same installation, replacing them will be far cheaper than the initial installation- and I don't know about you, but I don't see tradesman labor prices decreasing anytime soon.
How do you value not having to worry about blackouts? In a proper model you would also have to account for the amount of carbon *not* being produced (which is actually quite simple considering carbon credits have an actual market value).
So yeah, you are right, ROI is a bit more complicated, but before you get on your high horse, at least dot your i's and cross your t's. Models make assumptions about the future as well, which may not be correct.
A lot of games are like this when you get to the expert/master level. For instance, I love(d) playing Scrabble, and when I first started playing online I thought it was awesome. Quickly though, I learned that to really play at the high levels, you need to memorize word lists of obscure 2 and 3 letter words, q's without u's, z/x words, etc... to the point where it was more about memorization and score optimization than anything else. It kind of ruined the game for me.
I used to play chess a lot too, and that was becoming the same thing as I played more, though the complexity was greater and it was still mostly fun. I think all games eventually come down to memorization, its just a matter of how large the problem space is.
It doesn't solve anything that *couldn't* be solved before, but that's not the point, as anything can be solved given enough time and effort.
But out of the box, without even any compilation needed(!) you can get smart pointer implementations, timers, asynchronous I/O, a multithreading toolbox, conversion libraries, containers, memory pools, and tons more (some would say so much more that its bloated) with the added peace of mind knowing that tons of people out there are using them as well and they are thoroughly debugged. Its worth it for the shared_ptr's alone- those alone dramatically reduce the biggest source of C++ bugs.
In my previous company, I worked on a system that was about 10 years old- started before the STL came into existence, and long before it was well supported by compilers, and thus the team had spent a lot of time building STL-like functionality with dynamic strings, iterator like functionality, vector/list work-alikes, etc. This meant that now once the STL came around, a programmer familiar with "standard" C++ had to learn how to re-do mundane things like string and container manipulation. Similarly, that team had created smart pointer implementations, logger classes, multithreaded and socket libraries, etc. Boost not only provides all of this functionality, but you get it working right out of the box, and since Boost is well known, you don't have to wait for a programmer to get up to speed for a month or two while he becomes familiar with your code.
There are some more exotic features that you don't have to use, but I recently used multi_index to implement what is more or less an in-memory database cache in about 100 lines of code. This replaced a lot of code that read records and then threw them into hash maps or vectors using the OrderId as a key, then the CustomerId as a key, etc... so we had fast lookups to our most commonly used objects.
What are its advantages over ACE? ACE is a great networking and concurrency library, which not all applications necessarily need, and ACE's strong point is multi-platform networking and concurrency, which while I wouldn't call a small niche anymore, can't be used across all applications. At least some of Boost's libraries, most notably shared_ptr, can be used in any C++ program. In fact, until Boost::asio was released relatively recently, I would say ACE and Boost were entirely complementary. Also, boost is more or less a testing ground for the C++ standards committee, so it is more or less "blessed" and can be seen as a Beta for future versions of the standard.
Boost has in many eyes really transcended from "just an external library" to an integral part of the C++ platform. It compiles on every major platform, and it is open source.
Boost is moving C++ forward at a rate 10x that of the standards committee. I am not sure why you felt integrating it with your project was difficult- it is header only for the most part and does not require you to use any specific pieces. Shared_ptr's, which are the most useful library of all, do tend to be viral in the sense that you have to use them everywhere, but this is a GOOD thing.
If you are doing C++ without Boost these days, you are really missing the boat.
Perhaps there are people like myself who after years of hearing freetards use every opportunity to take a shot at MS, are just sick and tired of the juvenile behavior. Most of the jokes are at the "BSOD!!! Insecure! LOL!!!" level, where windows stability has not been an issue since 2000. I am guessing that these same people are ignorant to the fact that in the early 90's *nix had a security model that was deemed broken/nonexistent as well.
Its the behavior of many Linux users that I feel is the biggest deterrent to Linux adoption on the desktop. To some people it is clear that their choice of OS is not about getting a job done, but is an ideology they subscribe to and a group they belong to. There is nothing wrong with this, but when you start to view criticisms as personal attacks on your beliefs and not constructive criticisms of things that should be improved upon, there is a problem. Some might accuse me of a lack of passion, but if you ever find yourself typing in all caps in a discussion about OS's, I can only recommend you take a step back and get a breathe of fresh air before hitting send.
Don't worry, I mod down similar idiots that still spout Linux!!! No Hardware Support!! LOL!!! or just take shots on Stallman or Reiser without anything intelligent to add.
I don't think there is any conspiracy, and aside from the reasons cited above, I think a more reasonable explanation is that slashdot has attracted more mass appeal as time goes on (which is at least partially due to the editors- you don't see articles about every little new release or project in the linux world anymore.)
Interestingly enough, I am quite liberal and used to be very much for gun control. The past eight years of torture, wiretapping, and suspension of Habeas Corpus made me realize that the 2nd amendment is not just an issue of rednecks and their right to hunt.
I feel the Bush administration shows what can happen when the gov't no longer regards the people it serves. Governments need to fear their citizens, even if only a little bit. An armed populace may be the ultimate check and balance.
CL has flipped ebay the bird several times already, thats not what is stopping them from letting you search all of it.
CL does not get involved nor does it try to authenticate who you are buying from, hence it stays local. Its a different niche, Craig Newmark has no intention of taking on ebay or becomming a megacorp.
You might want to read this- Similar to how during the revolution, the fancy pants British army was picked off by bands of snipers in the woods, we are considerably more vulnerable than we think:
http://exiledonline.com/the-war-nerd-this-is-how-the-carriers-will-die/
I TA'ed an intro to CS class that used these error tools, and this was almost 10 years ago. Cheating is a very serious accusation, or at least was taken very seriously by the professor of the class, and several methods were used to ensure there weren't false positives. The first half of assignments were not run through the cheat system, because they were a bit too simplistic and could have caused false positives. The latter half of assignments were all 100+ lines of code.
The system did several checks, and included positives with and without whitespace. In most cases where we had matches, there was a 100% whitespace match, right down to sloppy indents, trailing whitespace, etc. Clear cut copy and pasting. Smarter students would try to clean up the whitespace, usually by adding extra lines, changing comments, or removing some, but it was usually pretty obvious from the diffs as to where they would miss some and it would blow their cover.
The system also did code structure tests, and could pretty easily tell if you just renamed some variables and messed around with whitespace. This was a little harder to review, but when you checked their analysis, I agreed with the results.
All positives were personally reviewed by the professor and TA's, and to be quite honest we were conservative when actually making formal charges against a student- if only a non-critical function (IE the code to load in the list of items in a file in a binary search problem, but NOT the function that actually performs the search) or two seemed to have a direct match, we would warn the students not to share code again and let them off with a warning. I can't recall ever seeing a real false positive. The professor more or less forced you to use vi or emacs on the linux cluster to write your code, so there was no IDE manipulation of the code, and CS students have no sense of coding standards or consistent style, or even reasonably formatted code for the most part, which made cheats even easier to spot.
We taught source control (RCS) pretty early. We told students to check in early, check in often. We understood that beginning CS students were pretty poor at frequent check-ins, but my professor would often give them the option of trying to prove that they were at least not the mere copiers by providing their RCS logs to view intermediary versions and progress. Often the cheater and the cheated on were pretty obvious. The source of the code usually had a few check-ins well before the deadline by someone with a B or better in the class. The copier, if he had any, was usually a few hours before the deadline and had been a C or worse student.
The professor wouldn't punish to the full extent that he could unless there was 100% certainty there was cheating going on.
Personally, I think there is (or at least was at my school) more cheating in CS because it takes a LOT of time to produce relatively little output. A "page" of code could easily take a CS student 4-8 hours to produce fully debugged. When it comes down to deadline time, there is intense pressure, and if someone leaves their files in their home directory undetected, or walks away from their terminal to use the bathroom, the temptation was too great for them, if they couldn't get the code by begging and schmoozing. Some thought they could just use code from previous years, except that we already had a database of previous years assignments (oops).
The only time we ever had a gray area was in the case where a student claimed that they had no idea how the other student got their code. Even then the professor would generally error on the side of caution, but watch the student like a hawk in the future. It was all pretty obvious, I don't think anyone was unfairly persecuted, ever.
They didn't reinvent anything, the analogy is poor. If anything, they took the idea and found a new application for it, then created a functional product based on it.
I was in college around the time Google was just getting up and running, and it was widely known that the quality of a paper could be measured in how many times it was cited by other people, in fact IIRC, some journal search engines would even show the number of citations when you did a search. So the idea that important documents were "linked to" more often and more relevant than those that are not, was not new. What was new, is taking that concept, applying it to web pages. Not only that, but running the analysis on a very large dataset and making it instantly searchable. This mental leap was not trivial, the implementation even less so. Even after the page rank algorithm became publicly known, it took years for the other search engines to catch up, and search engines have always been big business, not some underfunded niche that just hadn't gotten proper attention from the commercial or academic community.
I would say most innovation these days is driven by taking either an abstract idea or an idea used in one application, and then applying it to an area that no one has before. And never underestimate the huge gap between "we could use X to do Y and Z better" and "we have implemented X and now we do Y and Z better."
I don't mean this as an insult, but in my opinion is that you are a bit behind the times.
Do you own a current generation smartphone? When I say current generation, I am speaking of an Android phone, the Nokia N900, Iphone 3G+, or something in that class, not something from the treo age. The fact that my 3GS is a phone is almost an afterthought to me now, just one more app in with the pile of others. What I do have is a little scooter that gets me on the "information superhighway" and is good for most general day to day internet purposes. But then there is more- location based services are one of those game changing "how did I ever live without this" things that my computer can't do but my phone can. I play games on my phone more than I actually umm... use the phone. In fact, out of my top 10 most used functions- email, getting news/weather, getting directions, finding stuff nearby (like say a bookstore or pizza place in an unfamiliar neighborhood), playing games, taking/looking at photographs, making/receiving calls, texting, listening to music, and surfing the web... making calls is probably #7 or 8 on that list.
I hear this from lots of people with the latest smartphones. In 2 years, I wouldn't be surprised if most people start thinking about their phones as mobile computers with the ability to make calls. I more or less do, and these things are becoming more capable every day.
Your house is seriously insecure, even if you have a steel door and have window panes are made of bullet-proof glass, you probably live in a stick frame building where a drill and a sawz-all can gain me access to the interior in an hour or two. Yet no one seems to get excited about the insecurity of our houses.
When our houses get robbed, we recognize that the wrongdoing is being done by the criminal. Yet when our computers are hacked, we place the wrongdoing on the provider of the software.
I have never really understood why software is held to such lofty standards, particularly on consumer desktops. It would be one thing if file sharing of your entire filesystem was enabled by default in typical software, but lets be real- hacks these days require really clever methods to exploit systems, and if it wasn't for very intelligent, very dedicated people constantly pounding and poking our software, we wouldn't have to worry at all. Yet an uneducated teenager can break into a house in a few minutes with little more than a stick to break a window, and we seem to all go about our day without any outrage at all.
I just don't understand this.
I agree completely. I have run the gamut, working at a 300k+ megacorp, 2 ~30k megacorps, a 1000 person firm, a 30 person firm, and an 8 man startup. Smaller is better in almost every way on a day to day basis. The bigger firms tend to have better benefits when it comes to things like 401k matching and vacation time, but thats pretty much where the benefits end.
Every small firm I have worked at, I have felt that I was more challenged, and did more meaningful work, and contributed to the bottom line in a direct, easily measurable way. The atmosphere is much more family-like, where you all depend on each other, and can bring your friends/family and often even your dog into the office without a problem (security polices at megacorp generally don't allow this, and if they do, you have to go through the hassle of signing them in, getting them visitors passes that they have to get photographed for, etc). My gf is in sales and would always stop in and say hello when she was in the area, and I knew my coworkers families, etc. Megacorp only has shitty free coffee for its employees and vending machines, every small firm I have worked at has had a well stocked kitchen with healthy and no so healthy snacks, drinks, and you could ask the office manager to buy anything within reason and she would, Ditto that on office supplies- want a whiteboard for your cube and have a hang up about only using uniball pens- not a problem, but at Megacorp, you will get whatever is standard issue in the supply closet, where they may actually lock it up and monitor you while get supplies.
Did you just read a blog post at Megacorp about google's sparse_hash hash map library and want to download it and try it out to see if it really delivers on its increased performance over your compiler's stl implementation? Well hold on there will rodger, if you are even allowed to get past websense and get to the download site, there will undoubtedly be restrictions on your ability to get the code into your local dev environment, and even it offers a 5x speed up in your app's most critical area, you are going to have a weeks long battle to get the library's use approved, and a large part of that will be convincing the "architect" whose nose has been up in the air so long he hasn't been able to read a technical book in the last 5 years, that it was his idea. Innovation doesn't come from the unanointed, didn't you get that memo? Meanwhile, over at the startup, I had the code integrated as soon as I verified it passed our unit tests.
Meanwhile, over in megacorp land, you just got an email about a ticket being opened speaking something about how some operations person in singapore can't get his pipes to work properly even though he bashes them properly and the script shell greps just fine and CUSTOMER IMPACT. The ticket has been opened for a week, and you can see xioahu ping was getting pissy and reassigned it to you because it was ignored by your coworker. Singapore is almost exactly 12 hours out of whack with your schedule, meaning your work hours don't overlap at all- looks like there is going to be some OT to get this worked out. Meanwhile, at the startup, the ops guy who makes sure the system hums just yells out to the sys admin to grant his process privileges to /var/log and the problem is resolved in under 3 minutes.
You are given a project at megacorp, and you think the db backend should be postgresql because you like its grown up transaction features and don't need all the crap from Oracle. However, policies at megacorp demand that you use one of their approved vendors that they already have a license for, and you have to talk to the DBA team to provision your database and push the paperwork for the appropriate chargebacks to be put in, and there is a 3 week lead time to get all the work done. Meanwhile, at the startup, you take a box with spare capacity, throw postgresql on it, and in a few hours you have a development server up and running and tell the admin to put in a purchase order for some DB servers.
You
One thing that really annoyed me in school was professors who would actually yell at students who took notes, because they felt that all the information they needed was in the powerpoint slides they made available, and they should just focus on what the prof was saying. This completely ignores the fact that note taking is not just for writing down information to be read later, it helps you memorize that information as you are doing it. Passively hearing a lecture will let me absorb say 30% of the lecture after a few days. The interactive process of taking notes makes me think about what is being said more intently, and increases not only my retention but understanding.
At the time, I thought I was just stuck in old fashioned habits. But I now realize that the lack of note taking was a big reason why I struggled in some of my CS courses. I would really like to go back and beat some of those professors with a clue stick.
I hear you on this- my main gripe with everyone lumped into "IT" is that there is no distinction between the creative aspects of the field and the maintenance aspects of the field, what you are referring to as the trades.
Part of the problem is the public's perception- when most people hear "IT" they think "he fixes computers." And while they often have the ability to do so, that is not their profession, and to be honest, I am not so sure how well I could really fix common computer problems anymore after being paid to program for the last 7 years.
My personal solution to this problem is that I tell people the industry I use my IT skills for- finance. It is really more accurate at this point because the code has become more or less effortless- the main problem is taking the tools/libraries I have and using them to solve problems in my field. Hence, when people ask, I say I work in finance, and then when people probe, I say I build automated trading systems. At that point people either get it and will ask relevant questions, or just ask something very clueless and I break out my grade level explanation of how the stock market used to work when traders yelled at each other on a trading floor and now its computers mostly talking to each other- I only tangentially mention that I program computers. On the rare occasion these days that I get asked to help fix someone's computer, I say I don't have a problem with that, my consulting rates are $100/hr, which will include travel time if you want me to come out to you. I feel if more people did this instead of giving away their time for free, perhaps IT would get more respect as well- it sends the message that you and IT people are a skill that should be valued, not that you are there on call to fix their problems for free every time they whack the monkey and then install the cool new program they won.
Some people out there may think this is just a big deal over nothing, try introducing a doctor at a party with the line "this is Jim, he works in healthcare" and see how well that goes over. I think this issue will go away over time, it seems like I get more respect as a programmer as time goes on, and I also see this for the "IT" guys and such too- the jack of all IT guys are becoming a lot rarer, as the small companies those guys used to serve can generally be better served by outsourced services for things like email, networking, the company's website, etc.
I will say it here since I wanted to say it many times in this thread already...
No, GPS isn't "going the way of the Dodo" in terms of it being extinct and completely off the market, I will agree. But that statement was exaggerating to make a point- standalone GPS devices are once again going to become a small niche product just like they were in the 90's. For most uses, what is in today's smartphones is good enough.
The latest generation of smartphones is finally starting to achieve the dream of Convergence- my iphone now functions very well as an mp3/video player, pretty well as an e-reader and video game player, is 100% useful as a phone, and can do lots of things I didn't even think a phone would ever be able to do at all, let alone conveniently (IE return me a list of the nearest restaurants to my location with the push of maybe 3 buttons). The G1 and Pre are capable of doing all these things as well from a hardware standpoint, though I haven't looked to see what specific apps are available to them. The biggest downside at the moment is battery life, unfortunately consumers seem to want pretty shiny things over slightly bulkier but more useful things.
There is always going to be that guy out there who needs an aviation or marine grade GPS where his smartphone isn't going to cut it, but the other 95% of us aren't going to want to carry around another clunky device and its associated cables to do what can be done in our phone pretty well.
I may be unfairly grouping "slow" with "disruptive" but from what I remember in middle and high school is that the slower kids tried their hardest to create an atmosphere where studying was not considered cool and they disrupted the class a great deal. I was in almost entirely honors classes in high school but I moved in 11th grade, and due to differences on how classes were titled I was put in the "slow" foreign language class. Aside from the pace being very slow, I was annoyed at how the teacher had almost no control of the class and I had a hard time learning. Electives went the same way- the pace was just infuriatingly slow and I often wondered at the end of the class if I had really learned anything at all.
I never heard slurs of "hey stupid" thrown around, but I heard "dork" and "nerd" many times, every day. We need to give students who want to succeed an environment where they feel comfortable doing so. Kids where I grew up on Long Island are practically forced to go to college and get office jobs even when they have absolutely no desire or aptitude for office work.
The world needs plumbers too- segregating the educational system in high school into vocationally oriented and academically oriented programs will help everyone in the end.
One story people working in Manhattan remember all too well is how lightly the evacuation was taken when the WTC fell. When the first tower was struck, people in the second tower were told to stay put.
Many lives could have been saved if the second tower was evacuated.
Here was the situation:
A large commercial jetliner is flying way too low and fast around lower manhattan escorted by fighter jets, making sharp banking turns near buildings. It could very well be interpreted that a novice pilot was missing them.
You have no other information. You are the building manager and in charge of coordinating the employees in the building in an emergency.
I saw the whole thing go down this morning, and due to the utter lack of information, it was completely reasonable to evacuate the building, especially when in light of the fact that on 9/11 we were not nearly cautious enough!
Ok, I work downtown on the edge of Battery Park on the 7th floor of this building (http://maps.google.com/maps?hl=en&client=firefox-a&rls=org.mozilla:en-US:official&hs=eXt&q=17%20state%20street%20new%20york%2C%20ny&um=1&ie=UTF-8&sa=N&tab=wl ) and saw the whole thing. Here is what was seen by me as an uninformed observer:
A *really* low flying plane is flying over New York Harbor. The airspace there is very restricted, and you will see helicopters, very light planes like cessna's and the occasional vintage warbird during fleetweek flying below building level, generally at a low speed conducive to sightseeing, but most planes and specifically commercial planes stay way up in the sky. It is EXTRAORDINARY to see a large jet that looks like a 747 anywhere in the vicinity of New York Harbor at an elevation below 3000 ft, let alone 1000 feet. It also appeared to be going full speed. When was the last time a low flying plane at full speed was seen in NY flying below the height of skyscrapers? Oh... yeah...
Anyway... just as the thundering sound of the engines was heard, confirming audibly that this is NOT a normal event, what do I see trailing behind it... a fighter jet. At this point the oh shit circuit in your brain automatically triggers.
The plane comes in and just past my building does a hard bank that no normal 747 on regular business would ever do and from my vantage point appears momentarily to be making a bee line for the tallest building in NJ, 30 Hudson St which is owned by Goldman Sachs, an iconic investment bank that has taken TARP money and a highly likely target, which also houses my old coworkers whom I am still friends with. Again- "oh shit." I apparently only saw the last iteration of the passes it made because it immediately went off into the distance and appeared to be headed to Newark airport, tailed by two fighter jets.
So yeah I think a plane crashing into my building is just going to be a once in a lifetime event too, until I see a 747 buzzing my building at full speed less than 200 yards away tailed by fighter jets. This came without warning, and even if people were warned, the pilot was making some cowboy moves- a friend of mine said it looked like the plane came within 100 feet of the Goldman building. If on any given day you have stared down the nose of a 747 heading at your building at 300+ mph, and didn't have a glimpse of fear because "that will never happen again," I would say there is something wrong with you.
I have used perforce, and while I have not used Mercurial, I must say I like it eons more than CVS or Subversion, which I currently use.
Things I like about Perforce as opposed to SVN:
-P4 doesn't clog your source code directories up with files- all information is hidden from you, and thus copying say, a directory of config files from one machine to another to reproduce a problem doesn't cause a massive headache.
-Changelists and jobs! These are awesome. A changelist controls when and where you can check stuff in. You can move file changes around on different changelists if you are working on different bugs. IE you can create a changelist for bug 101, and another for bug102, and keep the three files you are working on for bug 101 in that bug's pending changelist, and similar for bug102. When you are finished, you just commit on that changelist, and now everything is organized nicely in history. Jobs extend this a bit further by allowing you to group changelists under a job for larger projects.
-Integration and branching. So much easier under P4 than any other system I have used. You create a branchspec saying I want my code from over here, to integrate with these files over there, and boom you are done and can just use that spec to integrate at any given point. you can integrate changes by changelist, job, branch, and other more exotic and less useful ways. The only real downside is that branches are expensive and eventually slow the repository down (at least when I last used P4 about 2 years ago).
These made my life much easier when working on a large project, especially since we did a great deal of work to integrate the system into our bug tracking and release systems. I am currently at a startup that is trying to use OSS as much as possible, and P4 is expensive, so I couldn't make a case to use P4 over SVN, especially considering we only have 4 developers.
peragrin, you are wrong.
The current delinquency rate is over 6% for residential real estate and skyrocketing with no apparent end in sight. http://www.calculatedriskblog.com/2009/02/fed-delinquency-rates-rise-sharply-in.html
This is relatively new data, but I have been following the mortgage markets closely since the credit crisis began as ARM/and Option ARM mortgages reset and the situation is certainly going to deteriorate a great deal.
They are redistributing it to stockholders, which is exactly what a company should be doing.
If you read mangu's link, it states:
Specifically, by Microsoft's count, the company has paid out nearly $100 billion through dividends and repurchasing its own stock in the past five years.
They are only "hemorrhaging" cash in the sense that they are giving it back to the owners of the company, and reducing dilution of the stock.
MS is facing unprecedented challenges from Linux, Apple, and is not achieving its goals of dominating the other businesses it has pursued such as mobile devices, gaming, media, etc, but it is competing there and holding its own. But they are still quite profitable. Lets not spread FUD here.
If you look at the real cost of games over time, they have come down greatly. I remember paying about the same for NES and SNES games in the 80's and early 90's for games as I do today. $40-60 was some serious coin in the early days of the NES. Nowadays, $50 is a days work at minimum wage ($6.55). Through most of the 80's, minimum wage was 3.35, meaning it was almost two full days of work to buy a video game. Hence, the real price among one of the main markets for video games (teens who generally make around minimum wage) has fallen almost in half.
You also need to look at the entertainment value you are getting out of a game as opposed to say doing something like reading a book or going to the movies. A typical game is designed to give 40 hours of gameplay, so your $/hr entertainment cost is about $1-2. That 40 hour mark can vary dramatically- Metal Gear games seem to take about 10 hours, but I still play Civilization II and have probably logged hundreds of hours playing that game. I can think of many more examples where I got many multiples of enjoyment out of a game than the typical 40 hours, especially with online games.
So aside from a few clunkers, you are getting a good deal with video games compared to other forms of entertainment. movies these days are about $10/hr if you factor in soda/popcorn. Books can vary, but are probably somewhere in the $1/hr range, and there is usually little chance you will re-read a book again. I really have to get some work done today, so I am leaving out the cost of the game systems themselves. As my professor would say, I am leaving this as an exercise to the reader :).
You are right of course, but I think the much more interesting fact here is that wind power capacity increased by 50% in the past year. That trend line will probably not hold in 2009 since oil prices have dropped and the economic crisis we are in has made getting funding difficult, but this is still great news.
Is the headline a bit sensational? Absolutely. Is this still great news? Absolutely.
Just to drive this point home, they are literally giving houses away in Detroit:
http://www.realtor.com/realestateandhomes-search/Detroit_MI/price-na-20000/type-single-family-home?sby=1
3,785 listings between 0 and $20,000. 212 of those listings are for between 0 and $1000. Its a fine time to "drop out" if that is a life you want.
Your risk-free rate of return is pretty close to zero right now, and not guaranteed to exceed inflation:
http://www.treasury.gov/offices/domestic-finance/debt-management/interest-rate/yield.shtml
Also consider that a large amount of the cost of putting in solar is the installation cost. Assuming that solar panels in the future can use the same installation, replacing them will be far cheaper than the initial installation- and I don't know about you, but I don't see tradesman labor prices decreasing anytime soon.
How do you value not having to worry about blackouts? In a proper model you would also have to account for the amount of carbon *not* being produced (which is actually quite simple considering carbon credits have an actual market value).
So yeah, you are right, ROI is a bit more complicated, but before you get on your high horse, at least dot your i's and cross your t's. Models make assumptions about the future as well, which may not be correct.
A lot of games are like this when you get to the expert/master level. For instance, I love(d) playing Scrabble, and when I first started playing online I thought it was awesome. Quickly though, I learned that to really play at the high levels, you need to memorize word lists of obscure 2 and 3 letter words, q's without u's, z/x words, etc... to the point where it was more about memorization and score optimization than anything else. It kind of ruined the game for me.
I used to play chess a lot too, and that was becoming the same thing as I played more, though the complexity was greater and it was still mostly fun. I think all games eventually come down to memorization, its just a matter of how large the problem space is.
It doesn't solve anything that *couldn't* be solved before, but that's not the point, as anything can be solved given enough time and effort.
But out of the box, without even any compilation needed(!) you can get smart pointer implementations, timers, asynchronous I/O, a multithreading toolbox, conversion libraries, containers, memory pools, and tons more (some would say so much more that its bloated) with the added peace of mind knowing that tons of people out there are using them as well and they are thoroughly debugged. Its worth it for the shared_ptr's alone- those alone dramatically reduce the biggest source of C++ bugs.
In my previous company, I worked on a system that was about 10 years old- started before the STL came into existence, and long before it was well supported by compilers, and thus the team had spent a lot of time building STL-like functionality with dynamic strings, iterator like functionality, vector/list work-alikes, etc. This meant that now once the STL came around, a programmer familiar with "standard" C++ had to learn how to re-do mundane things like string and container manipulation. Similarly, that team had created smart pointer implementations, logger classes, multithreaded and socket libraries, etc. Boost not only provides all of this functionality, but you get it working right out of the box, and since Boost is well known, you don't have to wait for a programmer to get up to speed for a month or two while he becomes familiar with your code.
There are some more exotic features that you don't have to use, but I recently used multi_index to implement what is more or less an in-memory database cache in about 100 lines of code. This replaced a lot of code that read records and then threw them into hash maps or vectors using the OrderId as a key, then the CustomerId as a key, etc... so we had fast lookups to our most commonly used objects.
What are its advantages over ACE? ACE is a great networking and concurrency library, which not all applications necessarily need, and ACE's strong point is multi-platform networking and concurrency, which while I wouldn't call a small niche anymore, can't be used across all applications. At least some of Boost's libraries, most notably shared_ptr, can be used in any C++ program. In fact, until Boost::asio was released relatively recently, I would say ACE and Boost were entirely complementary. Also, boost is more or less a testing ground for the C++ standards committee, so it is more or less "blessed" and can be seen as a Beta for future versions of the standard.
Boost has in many eyes really transcended from "just an external library" to an integral part of the C++ platform. It compiles on every major platform, and it is open source.
Boost is moving C++ forward at a rate 10x that of the standards committee. I am not sure why you felt integrating it with your project was difficult- it is header only for the most part and does not require you to use any specific pieces. Shared_ptr's, which are the most useful library of all, do tend to be viral in the sense that you have to use them everywhere, but this is a GOOD thing.
If you are doing C++ without Boost these days, you are really missing the boat.
Perhaps there are people like myself who after years of hearing freetards use every opportunity to take a shot at MS, are just sick and tired of the juvenile behavior. Most of the jokes are at the "BSOD!!! Insecure! LOL!!!" level, where windows stability has not been an issue since 2000. I am guessing that these same people are ignorant to the fact that in the early 90's *nix had a security model that was deemed broken/nonexistent as well.
Its the behavior of many Linux users that I feel is the biggest deterrent to Linux adoption on the desktop. To some people it is clear that their choice of OS is not about getting a job done, but is an ideology they subscribe to and a group they belong to. There is nothing wrong with this, but when you start to view criticisms as personal attacks on your beliefs and not constructive criticisms of things that should be improved upon, there is a problem. Some might accuse me of a lack of passion, but if you ever find yourself typing in all caps in a discussion about OS's, I can only recommend you take a step back and get a breathe of fresh air before hitting send.
Don't worry, I mod down similar idiots that still spout Linux!!! No Hardware Support!! LOL!!! or just take shots on Stallman or Reiser without anything intelligent to add.
I don't think there is any conspiracy, and aside from the reasons cited above, I think a more reasonable explanation is that slashdot has attracted more mass appeal as time goes on (which is at least partially due to the editors- you don't see articles about every little new release or project in the linux world anymore.)
Interestingly enough, I am quite liberal and used to be very much for gun control. The past eight years of torture, wiretapping, and suspension of Habeas Corpus made me realize that the 2nd amendment is not just an issue of rednecks and their right to hunt.
I feel the Bush administration shows what can happen when the gov't no longer regards the people it serves. Governments need to fear their citizens, even if only a little bit. An armed populace may be the ultimate check and balance.
CL has flipped ebay the bird several times already, thats not what is stopping them from letting you search all of it.
CL does not get involved nor does it try to authenticate who you are buying from, hence it stays local. Its a different niche, Craig Newmark has no intention of taking on ebay or becomming a megacorp.