Eliminate the Computer Science major - <AUTHOR> http://www.bendmorris.com/2010/11/eliminate-computer-science-major.html <comment><USER2> I'm getting my CS degree because I want to know and understand computer science. This article is just wrong in so many ways.

The author may be surprised to know that just because most of us CS majors will become programmers doesn't mean that we all want to take a "Programming" degree that would probably boil down to vocational training. There's nothing wrong with having vocational programming courses, but I don't know if universities are where they belong.

Secondly, there is a false dichotomy here between "programming" and "theoretical computer science." Theoretical computer science is merely a part (albeit an important one) of the field of computer science. There's also things like operating systems, databases, networking, graphics, and probably more. All these fields have overlaps with actual programming and theoretical computer science, but aren't solely in one or the other.

As an aside, I think the term "theoretical computer science" is often applied too broadly, since I wouldn't consider things like algorithms/data structures, AI methods like image recognition and data mining, and multiprocessing to be all that theoretical, since they don't require mathematical rigor to understand or produce useful results.

My Algorithms and Data Structures class didn't have much math at all. Complexity theory _edit: and algorithm analysis_ did require brushing up on some summations and limits from calculus, but it was taught from a very practical perspective. My Languages and Machines class, ostensibly the most "theoretical" of all, has been my favorite class, and other than some basic digital logic it had no math at all. That's not to say it wasn't formal or rigorous; it just wasn't what I would consider purely theoretical.

The author claims that CS students don't plan to be computer scientists, but rather programmers. I am and will always be a computer scientist, and I will probably work as a programmer for most of my life. I see no contradiction or foolishness there.

<comment><USER2> ^ Some more thoughts:

The author implies that this gap between real-world skill and the related undergraduate program is unique to computer science, but certainly this is not the case.

My father is a high school History teacher. His degree is in History, not "High School History Teaching." Sure, many History majors probably go on to teach History. Sure, they probably learn way more "theoretical stuff" about the US Civil War or the Renaissance than would ever be covered in a high school class.

In re-reading the article, I'm now confused about exactly what the author is claiming or proposing. He says that CS programs are dumbing down the rigorous stuff because students want to learn modern programming, but he also complains about using "easier" programming languages. I'd like to interject and say that "easier" languages are probably easier because they're better for the task at hand. Language/compiler/interpreter design has come a long way and I have no problems with moving away from 40 year old languages and learning 20 or 10 year old languages. I don't think scientists or employers will be impressed at your ability to solve a problem in a difficult manner rather than an easy manner.

As for his argument that students hate the "theoretical" stuff and just want to learn to program, that's not true. I go to Missouri State University, not at all known for its CS department, and even students that don't do very well often list classes like Discrete Math or Languages and Machines as their favorite courses in the curriculum.

</comment></comment><comment><USER3> The OP's complaint seems to be mediocre students, not the BSCS. Don't eliminate the BSCS, just have higher standards for students.

I'm just finishing up a BSCS, and frankly the CS stuff seems pretty helpful overall. Algorithm design and analysis builds up my problem solving chops, AI teaches me interesting techniques, and automata and languages gives me a good theoretical basis behind development folk wisdom like "you'll never have sufficient test coverage to get rid of ALL the bugs" and "you can't parse HTML with regular expressions". Compilers and operating systems give me great examples of how to design and structure a large system.

On the other hand, the "software engineering" courses I've taken seem to be teaching little more than 1990's era process and testing methodologies. My school has an apparent fondness for teaching RUP, a methodology invented by IBM[1] to sell CASE tools. The best explanation I've gotten from instructors about this is a combination of "defined process models give us something we can write exams for" and "students need to be familiarized with formal process models in case they run into them in industry". I won't say I've learned absolutely nothing from these classes--there's some good stuff in the testing class about how to design tests[2], and the first software engineering class assigned readings from _The Mythical Man-Month_ (always worthwhile) and taught us through experience that going through the correct processes and writing up all the design documents IBM wants you to stretches out a 2 developer, 2 week project to an entire semester for 9 developers, plus you don't finish the project.

On balance, I'd say the people who know about _computer science_ are university faculty, and the people who know about _software development_ are developing software somewhere else, and I'd rather learn something useful about computer science from competent computer scientists rather than learning about software development from people who don't actually develop software.

[1] By "IBM", I mean "a company that IBM has later acquired".

[2] Especially if you're coding in Java, C++, or C#. The software engineering curriculum hasn't quite caught up to the idea that different kinds of languages are used to develop actual applications.

<comment><USER4> "The OP's complaint seems to be mediocre students, not the BSCS. Don't eliminate the BSCS, just have higher standards for students."

I think you've struck the heart of it here. Unfortunately, while "enforce higher standards" sounds nice, given the incentives involved, it's not realistically going to happen. There are plenty of smart students out there who would do well in a rigorous university program. There are also many less- qualified students who are willing to pay university-education prices for vocational educations as long as they get sheepskins after four years or so. The universities have discovered that they can cater to the latter without losing the business of the former, thus raking in considerably more cash, so of course that's what they're doing. This is probably more true for liberal arts programs than any other curriculum, but it's affecting everything.

This argument has come up a lot on HN lately, and it usually breaks down into two camps: those who think that the higher education system is being diluted to death, and those who say, "I just finished my degree, and I received an excellent education." Then come the anecdotes saying, "I've been trying to hire recent graduates, but they're all lazy, self-centered, entitled, incompetent, gormless whiners," while others respond with, "I just hired some recent graduates and was overwhelmed by how smart and driven they all were; I had a hard time narrowing the field down to make job offers." Finally, a bunch of cherry-picked studies and statistics are thrown out by both sides to support their positions.

Here's my personal concept of what's really happening: university curricula are being watered down to cater to less-qualified students, but this process is not YET having a perceptible impact on the most qualified students because they are doing what university students are supposed to be doing: extending their learning well beyond the classroom. So far the universities are managing to have their cake and eat it: they are selling watered-down diplomas to under-qualified students while simultaneously providing a good learning environment for qualified students. However, I think that those qualified students are still being hurt by the change. They may say, "I think I received a great education," but they have no way of knowing if their education would have been even better if it had been optimized for them instead of targeted at the lowest common denominator. Also, I wonder how long the universities can continue to run these schizophrenic curricula before something gives.

My understanding of the author's underlying intent was to find a way for universities to teach a rigorous curriculum to the smart students without driving out the less-qualified students, because any solution that drives out the less-qualified simply will not be adopted in the real world. His answer was to create two curricula: one for the people who actually belong in college, and one for people who just want a vocational education and a piece of vellum. You could apply this model to almost any field of university study. I think that there is a definite need for vocational education of this sort, and I don't think that universities should be providing it. However, they've discovered that they can make a lot of money doing so, so they're not going to stop. Instead of hoping that universities will abandon vocational education in favor of higher standards, we should instead look for a solution that segregates the two types of education so that universities can do both well.

I think a lot of people are focusing on his proposed breakdown, which I agree isn't quite right. He takes some subjects that do have a place in a university education and puts them strictly on the vocational side. However, his overall idea of accepting the reality that universities are providing vocational education because it is lucrative, and of separating that branch of the school from the traditional university education, is good.

<comment><USER3> In general separating vocational from academic studies is a good idea, even if we have to do it in the university environment. In practice, universities are conservative institutions ill-equipped to provide vocational education in software development; at least, mine is.

SE education seems geared towards churning out enterprise-type developers, and I guess there is a legitimate staffing need for enterprise-type developers in enterprise-type shops, but the CS-educated developer is perhaps a more important asset to cultivate, and the OP seemed to suggest that the CS- educated developer should go away entirely.

</comment></comment></comment><comment><USER5> "Computer Science students, however, don't go to college to become computer scientists. They go to learn 'programming'."

When I finished my CS degree in 1988 I remember considering what it was that I had been educated to do (I think this is really only apparent at the _end_ a course) - it was pretty obvious: we had been educated to a level where the "natural" thing to do was continue on to do postgraduate research. The vocational element of our course was (thankfully) very low, there was a distinct (and times alarming) theoretical component but you also had to do a _lot_ of development work. But developing stuff was a means to an end of demonstrating an understanding of the course material, rather than an end in itself.

So I went to university to learn about the academic field called computer science - not to learn to program (which frankly, isn't that difficult).

20+ years on I'm rather pleased with the course I did and the subsequent six years I did in academic research - I've used a lot of maths in various jobs (industrial simulation, investment banking, even more industrial modeling), it was a good course, with a good class and excellent teachers in a great location. I even met the chap who became the first investor in our startup through the course - he had graduated from it about 20 years earlier.

So yes, don't do a CS course to help you become a "standard" developer - it is almost completely irrelevant and will probably frustrate and confuse.

<comment><USER2> I decided to go into CS because I wanted to be a programmer, yet I wasn't one of those kids who programmed from an early age. I had no idea where to start and either didn't have the time or the drive to embark on a rigorous self- education spree. University seemed a good fit to me, even to learn to become a "standard" developer.

That said, three years later I'm nearing the completion of my CS degree, and I understand what computer science really is and love it. I have no plans for further time in academia. I'm also confident in my programming abilities, at least for an entry level job. Would you say a CS course was appropriate for me, or should I have spent the three years learning programming on my own (I had a decent tech support job after high school so the latter was definitely an option)? What if anything would you recommend to people who are interested in programming late in high school but don't have the advantage of having grown up programming?

<comment><USER5> Sorry, my post was a bit of an early morning coffee fueled rant.

I was really replying to the usual "I did CS and they didn't even mention RoR" posts that usually pop up when anyone mentions CS on a _development_ oriented forum.

If you have done a course and appreciate what CS is and you are confident in your skills then it sounds to me like you have done the right thing. In my experience the absolute best people I have worked with have been been fantastic natural developers who also had a good CS education - but this only pays off in technically difficult areas - either because the domain is complex and/or the solution is complex.

</comment></comment></comment><comment><USER6> This debate will never end. A lot of it has to do with unrealistic expectation. 4 Years is not enough to learn a field and become good enough to be proficient at it for most people. The good programmers I know started as teenagers. That means they had a head start before going to college. I believe this is representative but I don't know of any studies on this.

As others have pointed out there is now a lot of schools that have Software Engineering as a separate major. It's still debatable if it's a better way to go. I'm not yet convinced that people graduating with Software Engineering degree aren't as bad as Comp Sci major early in their career due to my first point.

Finally there are also those suggesting community colleges giving more vocational training as a way to go. I have one friend who has gone that route and he's a pretty good programmer. He did start very early also. We were hacking code together in middle school.

Finally it's really up to the companies hiring to understand this, I know that it's common practice for engineering firms who hire engineers out of school give them a year of training or have him paired with a mentor. This is important.

I'm hard pressed to find a single job a person with an undergrad in anything could do directly out of college without some training. Good professional jobs usually require graduate school. Even accounting usually require more than 4 years (internship) before being completed (same with engineering.)

Edit: many people here on HN will say that they didn't need school to become good programmers. That is true but how many years have these people been programming for?I bet it's at more than 5 years on average by the time they are 18.

<comment><USER2> I did some extremely light programming late in high school on my TI-83 calculator (before I knew that gotos were considered harmful and before I would have understood that reference). Soon after high school (graduated in 2005) I decided I wanted to be a programmer, but I didn't really know what programming as a discipline or career entailed, and I honestly didn't know where to go to learn. In 2008 I enrolled at a university, and my first real exposure to programming was my university's intro to CS course, which of course used Java and covered basic OO and some basic data structures. I liked it and learned quickly enough.

Now, a few years later, I love both CS and programming, but obviously I am in no position to judge how good I am at either. Here's what I can say objectively, and maybe someone can give their opinion on how legit I am or how much my CS degree did for me: I took a national standardized CS test for to-be graduates (MFAT I believe it's called) and scored in the highest bracket >95%. I read, comprehended, and loved GEB. I read, mostly comprehended, and loved SICP and The [Little, Seasoned] Schemer. I had to give up on a book about Gödel's incompleteness theorems because I couldn't hang with the math. I did the Grepling challenge a while back in Python without cheating.

I've learned how to learn new languages on my own. I'm decent with Python, and have created some nontrivial web apps with Django. That said, I still make mistakes when programming that are embarrassing when brought to light, and I still discover new things that I feel I should have already known. I've never made a start-up or even contributed to an open source project, so I'm still probably near the bottom in this community.

I definitely needed a CS curriculum to become a programmer at all, and with any luck I'll end up becoming a good programmer.

<comment><USER6> You're doing exactly what you need to do, you are putting extra effort into it.

My feeling is the "bad" cs grads usually did not put in that extra effort. Reading GEB is rarely a required par of any CS degree but reading it is an incredibly useful thing in my view. It's a thick book and takes commitment to read.

Side note: Check out this book ([http://www.amazon.com/G%C3%B6dels-Proof- Ernest-Nagel/dp/0814...](http://www.amazon.com/G%C3%B6dels-Proof-Ernest- Nagel/dp/0814758371/ref=sr_1_1?ie=UTF8&qid=1290885330&sr=8-1)) on Godel's proof. It's been updated by Doug Hofstadter the author of GEB. I found it pretty good. Read it slowly, two three time if needed. It will make sense.

<comment><USER2> Thanks for the recommendation. I've actually been looking for a new book.

</comment></comment></comment></comment><comment><USER7> The problem is that the Computer Science college curriculum (specifically the Bachelor's of Science degree) has become the de facto requirement for software engineering careers. It's being pulled from different angles (toward a trade college degree in software engineering on the one hand and toward pure science on the other) and has failed utterly at satisfying either requirement. Ultimately the biggest improvement in the situation will come from separating out the software engineering training requirement off on its own (whatever form that takes).

</comment><comment><USER8> The article a false assumption that it's possible to be a good software developer without understanding the basics of Computer Science (whether through university or self- education).

It's not, not even in the bread and butter application development tasks: imagine writing an accounting system without knowing how to accurately handle decimal values[1] or what a B-Tree index is or what a race condition is. I won't even begin to mention systems/library/algorithm implementation work.

Degrees that cover programming without computer science do exist, but they intended for developers who want to transition to (people or project) management.

[1] E.g.,

      alex@jupiter:~$ python
      ...
      >>> 1-.3
      0.69999999999999996

<comment><USER9> _imagine writing an accounting system without knowing how to accurately handle decimal values[1] or what a B-Tree index is or what a race condition is. I won't even begin to mention systems/library/algorithm implementation work._

Are you certain that business systems are written by people who know all three of these things? My conjecture is that most practising business programmers will tell you that "libraries" and "frameworks" exist to solve these problems for them and that knowledge of the details is nice to have but not necessary for employment as a business programmer.

"Systems/library/algorithm implementation work" is another thing entirely, but I'm sure we can agree that at this moment in time, there are very few people doing systems work or building libraries compared with the number of people using them to build business systems.

<comment><USER8> > _Are you certain that business systems are written by people who know all > three of these things? My conjecture is that most practising business > programmers will tell you that "libraries" and "frameworks" exist to solve > these problems for them and that knowledge of the details is nice to have > but not necessary for employment as a business programmer._

Are there programmers who write business applications without understanding and knowing these things? Yes, most certainly. Are these programmers working in businesses known for using software as a competitive advantage? Almost certainly no. With the exception of AWS, most of what Amazon does (and what made them successful initially) was business software: e-commerce, shopping carts, payments processing. Yet it's clearly that they used in-house software development talent as a competitive advantage (most obvious example is Dynamo's original role as a shopping cart engine which allowed them to handle peak holiday traffic without declining sales).

Libraries and frameworks are great, but they're of no use if the application developer doesn't know they need to use them. An app developer will have to _know_ that Double can't give him precise decimal math, before he'll use BigDecimal. An app developer will have to know what race conditions are before he'll know where to use a ConcurrentHashMap vs. a HashMap vs. a synchronized block vs. ReentrantLock. I'm not aware of an ORM that is sophisticated enough to tell you what sort of index to use (this may also be an omission on my part and there may be ORMs and other tools that will make reasonable default choices and setup indices during the DDL phase).

> _"Systems/library/algorithm implementation work" is another thing entirely, > but I'm sure we can agree that at this moment in time, there are very few > people doing systems work or building libraries compared with the number of > people using them to build business systems._

My perception is somewhat skewed: I'm in Silicon Valley and have worked at multiple Internet firms and at an infrastructure (security) vendor as a systems/library implementer (or you can say, "mostly userland systems programmer"). While it's obvious that there's lots of systems work going on in infrastructure vendors, I'd say that least 50% to 75% of engineering in established Internet companies and lead start-ups in that sphere involves building tools, libraries and implementing/fine-tuning algorithms rather than application-level programming. The application developers drive the demands for these tools/libraries/algorithm implementations and thus have to have more than "black-box" level familiarities with them. Very rarely are people also hired _just_ for application development roles: knowing a specific library/framework well won't get you hired, as that may not transfer over to other positions in the company. If you look at the interview processes in these companies, you'll quickly see that they reflect that. The app to infra development ratio will certainly be different at smaller startups (more app, less infra), but the need to hire generalists with strong knowledge of the fundamentals is even greater.

tl; dr Let me say it again: good programmers should know the fundamentals. This doesn't just go for the systems/infrastructure developers, but product developers as well: you may still be able to get a job without knowing these basics, but you'll be "locked out" of the most lucrative jobs in a given industry (or even out of whole industries).

<comment><USER9> _good programmers should know the fundamentals. This doesn't just go for the systems/infrastructure developers, but product developers as well: you may still be able to get a job without knowing these basics, but you'll be "locked out" of the most lucrative jobs in a given industry (or even out of whole industries)._

I agree with this statement, but I sing in the choir. I suspect that everybody else on HN signs in the choir as well.

Jeff Atwood once pointed out that he wasn't trying to write for his readers, he was trying to write for the millions of programmers worldwide who don't read any blogs at all. Most of them don't work in "The Valley."

<comment><USER8> > _Jeff Atwood once pointed out that he wasn't trying to write for his > readers, he was trying to write for the millions of programmers worldwide > who don't read any blogs at all. Most of them don't work in "The Valley."_

Agree and disagree. Yes, library implementers should think about application developers and the problems they're solving first and foremost. One of the most interesting developments lately has been the work on making concurrency accessible to application developers, which illustrates "and disagree" part: I used the example of Doug Lea's beautiful work on java.util.concurrent to show that while an application developer (or even a systems implementer without a good cause, for that matter) shouldn't have to implement lock free data structures _themselves_ , they have to ultimately understand _what_ lock free data structures solve and don't solve in order to be aware of them and know where to use them.

Lastly, one of the recurring themes of articles I see on this site is about creating a "The Valley" elsewhere (and I don't just mean Seattle, New York, Tel Aviv, etc... - tech cultures in each are more similar to each other than they're different). Perhaps that's something to ponder: is there a culture of "cut and paste and clock out" or "build software that's an asset and not a liability"?

</comment></comment></comment></comment></comment><comment><USER10> The author seems to be claiming that higher-level languages are easier or less valuable for learning CS. I don't think that's true. Sure, it's easier to learn to write "hello world" if there's no boilerplate, but that just means there's less between the programmer and the algorithms. "Too easy" is not one of the common complaints about SICP.

Java, of course has little place in a CS education. It's not even a good introduction to OO. Institutions who want to teach Java should probably call their degrees "Enterprise software engineering" or some such.

<comment><USER11> I disagree that Java is inherently wrong for CS education. It ultimately depends on what you decide to teach using it (i.e. it's concepts that are being taught, the languages are only the carrier).

It's possible to teach courses in data structures, algorithms, and so on using Java, just as it's possible to use it as a gateway to other languages like Python and C.

<comment><USER10> Java puts boilerplate between the programmer and the algorithms and data structures without allowing direct control of the memory. Python, Scheme, Haskell and many others do it without the boilerplate, while C and any of many assembly languages require that the student learn what the hardware is actually doing.

</comment></comment></comment><comment><USER12> It should be something in between. I have done my undergrad at Cambridge and I am now at Stanford, and the curricula differ a lot. Cambridge is very theoretical, and teaches a lot about core computer science - they love functional programming, discrete mathematics, denotational semantics etc. Stanford, on the other hand, is much more hands-on. It's more project-based, where you have to actually implement something. At the same time, I feel that students here learn less about the theory.

Both approaches have their advantages and disadvantages. Personally, I feel lucky to have the theoretical background as an undergrad and now be able to apply that knowledge as a grad at Stanford. I think there has to be something in between, and computer science as a major should not be on either ends of the extremes (theory/application).

I do not want to see a CS major who has no clue about programming any more than I want to see a CS guy who lacks the theoretical understanding of his subject.

</comment><comment><USER13> Computer Scientist from NTNU (Norway) here. During the 3 first semesters we have 5 pure mathematical courses, which consist of ordinary and partial differential equations, Laplace, Fourier, statistics, numerical methods, complex numbers, discrete mathematics, linear algebra and probably lots of other things which I've forgot to add in. We also have digital design, basic electrical circuits and physics. To learn about algorithms and data structures, we have a course where "Introduction to Algoritms" by Cormen is the curriculum. So far, we've only had one course where we've learned Java, and that course mostly focused on object-oriented programming - not Java itself.

I'm not sure whether the computer science major is _that_ bad over in the states, but if it is, maybe you should take a look at how we do it?

<comment><USER2> My CS program at Missouri State University isn't that heavy on mathematics (we just take Calc 2, stats, and discrete). We take digital logic and the normal kinetics and electromagnetism physics courses as well as a physics course on microcontrollers.

Our languages and machines course is excellent, as is our algorithms/data structures course (also using the Cormen text). The two intro to CS courses cover OO with Java, and also taught basic data structures like double linked lists and binary trees. Algorithms also used Java for homework assignments, but there was nothing specific to Java in the course. We do have a C++ course and a silly web programming course that covers html/css/js/php, but they're elective. The Database course is required and goes in depth about relational algebra. The Software Engineering course is required but I haven't taken it yet. _Edit: forgot about the computer architecture course; it's required and had no math beyond arithmetic for calculating cpu efficiency with different pipeline sizes, etc._

I honestly think the anti-CS major crowd is misguided. There's no way I would have been qualified for an entry level programming job before college. I barely knew how to program, and more importantly, I didn't know how to learn to program better. Now I do.

</comment></comment><comment><USER14> I could've used more theory in my CS major, but in fitting with the article, I've learned _much_ more outside of class than inside. My profs have been very helpful, and have absolutely aided in this, but few classes have provided me with anything I didn't pick up in 1/10th of the time prior to the class. Though that's likely true for anyone who's very interested in their field.

In defense of the course, we have programming from the very beginning. I'd assume everyone who had gone through even a couple classes could solve FizzBuzz quickly - a fair number of the recent applicants where I work couldn't, despite nearly all of them carrying degrees (I graduate soon).

</comment><comment><USER15> I hope that someday in the not-too-distant future programming will be considered the new literacy and will become a foundational requirement for every discipline and major, just as writing is today.

<comment><USER16> Is architecture required for everyone, though we all live in houses? I don't think that will ever happen.

</comment></comment><comment><USER17> I think almost everyone would agree with the crust of the argument, but I don't think CS degrees need to be eliminated. I think there's room for reform.

As in any other engineering discipline there are two distinct aspects in Computer Science. One is the "more theoretical" part, which deals with topics such as complexity, AI, operations research, language construction, databases, etc. Then, there is the "more practical" part, which deals with the application of the above theories to produce real solutions (what we usually refer to as "programming").

I think clearly universities are well-equipped to cover the first part. It fits well with current teaching methods and there's no reason to believe the courses would be substantially different from courses in mathematics.

The second part, which is what most students arguably want to learn how to do, is where I think universities really struggle. Firstly, many academics in the field aren't really qualified to teach the stuff since they have very little, often outdated knowledge of the industry. Secondly, to effectively teach "programming" you have to take on board a lot of subjective criteria. What makes good design or good code is inherently ambiguous. To my mind, effective "programming" courses have to be a lot like writing courses, where teachers lack objective criteria and teach their students best practices based on their experience of reading and writing good code. This is something CS academics are reluctant to accept, but if they did we could finally have effective CS education.

</comment><comment><USER18> This is actually a problem with the way all engineering is now taught: an overemphasis on engineering science at the expense of engineering design. Software engineering may be worse off than most, because the term "Computer Science" implies that it's all about the science and there's no room for design at all. (Disclaimer: I studied Electrical Engineering, so I can't comment first-hand on that.)

The best Software Engineering programs (like the one bartman describes here: <http://news.ycombinator.com/item?id=1944707>) seem to at least bring software engineering back in line with other forms of engineering in this respect. The worst "Software Engineering" courses tacked on to Computer Science degrees (like the one philwelch describes here: <http://news.ycombinator.com/item?id=1944735>) merely teach wrong ideas about engineering to try and get the student into a position of being the drawer of UML diagrams rather than the programmer who translates them into code.

It goes without saying that I completely disagree with the author that there should be a degree in 'programming' since this is just training people to work at the other end of the UML diagram pipeline, a hierarchy which shouldn't exist.

</comment><comment><USER19> "Computer Science is no more about computers than astronomy is about telescopes." –Edsger W. Dijkstra

<comment><USER2> I hate to blaspheme Dijkstra, but I've never quite agreed with that quote. I suspect it's used out of context. Many subfields of computer science deal directly with making physical computers better: faster, more responsive, etc. I'm thinking of things like virtual memory systems, page replacement algorithms, multiprocessing, interrupts, driver abstraction, networking—basically everything you learn in the OS Theory course in a CS program.

Sure, all these things can be modeled "on paper" as a mathematical abstraction, and a human with a list of rules, a pencil, and a roll of paper can compute anything an Intel cpu can, but it's hard to ignore the fact that digital computers do the vast majority of the computation which CS is concerned with studying.

You don't have to know much about astronomy to make or improve a telescope. You have to know a lot about computer science to make or improve a computer.

<comment><USER20> Computer science helps in improving the stuff running on a computer, but it does help elsewhere, too. Examples:

1\. When sorting cards by hand, I find myself switching algorithms depending on the size of the data set.

2\. Caching/page replacement strategies do apply to the case of a scholar writing a book. His desk will not hold all his reference works, so some will have to move to the table next to it, others will be closed and moved to a bookshelf, possibly in a different room.

3\. Without the theory behind multiprocessing, of course, philosophers couldn't dine together :-)

<comment><USER2> True. I'm not suggesting that CS is _only_ about computers, but computers certainly play a bigger part in CS than telescopes do in astronomy.

</comment></comment></comment></comment><comment><USER21> I would like to move computer science back to being strictly part of mathematics and make a computer science major's curriculum contain ⅓ of programming and ⅔ of CS theory and mathematics.

Then we would need second-level/bachelor's CS degrees in polytechnic/vocational schools where it would be ⅔ of programming and ⅓ of CS theory and mathematics.

Both would take at least four years and be much more merciless in letting students continue to the next year, i.e. no dumbing down of the courses.

</comment><comment><USER22> The university where I went, Purdue, already has had this distinction for many years. They have CS in the school of science and CPT (Computer Programming Technology) in the school of technology. It was common knowledge that if you couldn't hack it in CS you switched majors to CPT which was focused on leaning technologies instead of concepts. Same as how there is calculus for math majors and calculus for business majors.

</comment><comment><USER23> Many schools around here already have a second major that focuses on the profession of programming instead of theory: Software Engineering.

<comment><USER2> I'd like to know what they replace the "theory" with. I can't imagine getting rid of the courses on digital logic, algorithms, databases, and language design. You could probably get rid of the normal math courses and just have a condensed "Math for CS" course as a prerequisite for the above-mentioned courses, since they'll almost certainly require some knowledge of propositional logic, summations, limits, etc.

As I understand it, it's hard to teach "real-world" programming, since a lot of that just comes down to learning the specific enterprise tools your shop uses. I can see covering debuggers and version control systems, since my CS program is sorely lacking on those two topics, and perhaps requiring or strongly encouraging internships, but other than that I don't see what a Software Engineering degree will provide that a CS degree does not.

<comment><USER24> I attend a school solely offering Software Engineering. For my BSc degree I had two theoretical computer science courses, digging deep into theory of computation and formal languages; two math courses (logics, algebra, analysis, very little statistics); 1 semester digital logic (all the way up from transistors to finite automata to microprocessor internals - very intense); databases are offered as a specialized field of study if you're into that with one mandatory course for everybody.

Compared to what I hear from friends in computer science programs we have around half the amount of math they have, the remaining basics are about the same.

The software engineering aspect shows in the many projects we do. In every semester we had group projects, both programming and software modeling, with at least 5 fellow students. The last year of studies focusses on a project with 4-8 people and an external partner who's the customer for whatever you do. We had two intense lectures on project management/planning of software projects that mainly focussed on agile methods. One of these classes was accompanied by a software project of the entire class of 80 people: we ended up having 10 development teams, each doing SCRUM (including SCRUM Master and Product Owner), the scrum masters and product owners of these teams met and organized inter-team collaborations, the product owners also interviewed potential customers (startups in the local region) and gathered their requirements and thus steered the whole project. This was an incredible experience - except that we used svn.

I am obviously biased, yet I feel the focus on group work taught me lessons that would take many years longer to learn in industry and will help me a lot in my future life. +1 Software Engineering

edit: Another observation that struck me was that we had about 25% people who never programmed before, 50% who did something in school and maybe a little in their free time and 25% who've been into all that since they were kids or teens. Yet in the third year all of them worked full time on a software project and would get along pretty well. The lack of years of experience was still noticeable, but rarely ever an issue in day to day work - they did good or better work than some of the year-long programmers and had solid theoretical foundations on patterns, architecture etc. Of course there are some who just struggled through, but it's still pretty amazing to me.

<comment><USER2> OK, I admit that sounds awesome. It actually sounds like you covered most of the "computer sciency" stuff my CS program covers, just in fewer/more condensed courses. Did you study operating systems in depth, like deadlock, page replacement strategies, file systems, etc? That's one of the big courses in my program, and frankly one that I think should be reorganized. Knowing your way around a Unix system is pivotal, but it's difficult to teach in one semester or in a textbook.

The group project stuff in theory sounds awesome, but I'm not very social with most classmates, even the CS people I see every semester, and I generally groan whenever I hear that there's going to be a group project that requires out of class meetings with random students.

All in all, I don't think my program and yours could exist distinctly at the same university. They would just be subtly different emphases, and it sounds like the fundamentals would overlap so much that having two different majors would be mostly nominal.

<comment><USER24> I forgot about the operating systems - we did have that one too. It's split into two semesters, of which only the first is mandatory. We did all the synchronization techniques, page replacement, scheduling, memory management and general structure with assignments being coding on the Windows Research Kernel (which is surprisingly well written). I think the second semester talked more about file systems, but I didn't take that.

I agree that group projects can be really annoying, the main point seem to be the "random students". Over time (and projects) I found a group of people I could work and have fun with very well, so late night shifts weren't as annoying as they could otherwise have been.

</comment></comment></comment></comment></comment><comment><USER25> The problem is, knowing how to program without understanding much computer science is useful only for the most basic of tasks, and I expect that the demand for some of those more basic tasks, or at least for people to know a generic programming language (as opposed to something more domain specific) is going to dry up as the underlying problems are solved in more generic ways, and higher level languages become increasingly more feasible for programmers with computer science backgrounds to use in production without the need for vocational-training-only programmers to churn out their boilerplate.

</comment><comment><USER26> My CS degree was a sandwich course (UK), I did 2 years at college, a full year working for an employer (of my choice, the college had the power of veto) and a final year back at college, I did a postgrad after.

The industrial training year was the only thing of real value. It taught me professional discipline and the importance of delivering what the customer wanted, and of finding out what they wanted if that wasn't clear at the outset. Everything computer specific I learned on my course (compiler theory?) was either irrelevant, outdated at the time, or became so shortly after.

</comment><comment><USER27> My school created an IT program and funneled the practical/programming only students through it. Seemed to make sense to me. The IT program is huge now, and the CS program has remained about the same size. A lot of students will get a dual major just to pick up the theory, though.

I could do without the hyperbolic blog titles followed up with the same arguments about the CS degree.

</comment><comment><USER28> Well, is programming even degree worthy? If you wanted to learn just programming then make it a 2 year diploma.

<comment><USER21> Probably a 10-year diploma, if you ask Norvig?

</comment></comment><comment><USER29> "A Biology major is training to become a biologist." Um, how many people get a BS in biology and become biologists? More often, they get jobs as food safety testers or as hospital techs.

<comment><USER2> Don't forget teachers. I bet a significant portion of all the majors the article mentioned go on to become teachers.

</comment></comment><comment><USER30> let me put it this way: if you're really a passionate programmer, what you study is rather irrelevant. you're going to be working on one of your own projects anyway, whether you're majoring in liberal arts or computer science. I think what really matters, is how much time you have left besides your studies.

</comment><comment><USER31> Computer science is bullshit, it should really be taught as an art curriculum with code as the medium.

<comment><USER32> I suspect if you explained yourself more, you wouldn't get downvoted. (I didn't downvote you.)

<comment><USER31> the lesson here is don't drink and comment on HN</comment></comment></comment>


Introducing Instagram Stories - <AUTHOR> http://blog.instagram.com/post/148348940287/160802-stories <comment><USER2> Instagram, instead of focusing on making important improvements to its own app and platform, decide to clone Snapchat. Color me surprised.

Things that are shit with IG and still require attention:

\- there is no real onboarding experience [1]

\- good luck contacting a human that works at Instagram with a support query as a user [2]

\- good luck contacting a human that works at Instagram with a support query as a developer [2]

\- developer libraries are abandoned [3]

\- the API is a joke.

\- There is still a lack of support for HD photography.

\- The 3rd party developer experience is ... well ask some of your peers and you'll quickly find out.

[1] Someone at Instagram, for the love of the internet just do some reading up on this. Here's an article to get you started: [https://medium.com/@scottbelsky/crafting-the-first-mile- of-p...](https://medium.com/@scottbelsky/crafting-the-first-mile-of- product-7ed25e8f1027#.s8mqxfdna)

[2] unless you stalk them on Twitter. That's not creepy at all though, is it?

[3] [https://github.com/facebookarchive/instagram-ruby- gem](https://github.com/facebookarchive/instagram-ruby-gem)

<comment><USER3> One more thing to add on your list: spamming is ruining the entire experience. For a company that sells AI as the next big thing, not being able to detect accounts following 5000 people, having 8 followers and posting thousands of comments "GET 1000 FOLLOWERS ON [URL]" every day is kind of a joke.

<comment><USER4> As someone with a small-medium sized account (~2k followers), I currently get ~10–20 spam followers per week. I aggressively report as spam + block, but it's a nuisance.

Their reporting flow has so many taps and steps that it feels like it's designed to be inefficient to give them less requests.

</comment></comment></comment><comment><USER5> This is Facebook's third attempt at trying to compete against Snapchat, this time with the exact same name as their product. I guess third time's a charm.

Interesting though that they're only implementing the most basic features (drawing over a video?), and not the more interesting and fun face tracking stuff that Snapchat does now.

Personally, I can't see this being successful. Snapchat will remain to be a quick and dirty way to get 'moments' to my friends (like twitter, but with video), whereas Instagram will be for more more 'serious', 'arty' photos.

<comment><USER6> I've stopped using Insta for the most part. I'm an old and I feel like Snaps are just more fun for me. The major issue with that is a lot of my friends haven't caught on yet.

Insta just feels like it has too many buttons and notifications from spammers flying at me. They lost the plot from the simple app they used to be a long time ago. Plus the new algorithm change is terrible for me. Every time I open the app I see the same pictures over and over again and lots of advertisements in there now.

<comment><USER7> Snapchats are surprisingly better than alternatives nowadays.

I personally really dislike the new feeds by popularity route that services are adopting, and Snapchat's Stories are great because I can find a friend's feed for the day and just catch up immediately, rather than having to either dig and dig until a feed thinks a particular post is important, etc.

<comment><USER4> I also find it much easier to ignore the uninteresting people, or rather, people that tend to post 5+ times per day than it is on Facebook.

<comment><USER7> Yeah. Just because a plethora of people like someone's post doesn't mean that I will, but with many new feeds that kind of post would be prioritized over something with fewer likes/comments that I would actually want to see.

</comment></comment></comment></comment></comment><comment><USER8> I would really like to know why Facebook thought that this would be a better feature for Instagram than for Messenger or WhatsApp. That's how I use my social media apps:

\- WhatsApp: Messaging with most of my friends (I'm from Germany and here everyone I know uses WhatsApp) \- Messenger: Messaging with people that don't have WhatsApp \- Snapchat: Letting my friends now what I'm up to right now. I don't put much thought into what I post there. I mostly follow close friends because I honestly don't really care about the stories of people I don't know. \- Instagram: Posting pictures that I think look nice. Often that are pictures that I took with my DSLR and edited on my laptop. I also follow a lot of people I don't know but who I think take nice pictures.

Therefore I don't see me using Instagram Stories anytime soon because

1\. Snapchat already has that feature and they probably implemented it better, 2\. the content on Instagram is simply different than the one on Snapchat (more high-quality instead of the quick and dirty Snaps).

If I wouldn't have Snapchat and they brought Stories to one of their Messaging apps I might have used it. But Instagram? No chance. It would be interesting to know how other people use these apps (if at all). I realise that I'm probably younger than most people here so my experience might differ quite bit.

<comment><USER9> That's easy. Instagram is a cooler brand among the same demographic that is crazy about snapchat.

</comment></comment><comment><USER10> What's funny about this thread is it's almost all people complaining about dev experience, APIs, etc and saying IG is dead...

Meanwhile their customers are very happy and very active. Look at how many snaps you see on your snapchat right now and then go look at how many IG stories have already been posted in the first couple hours.

I'd say that was a successful launch.

Nit picking things, as a developer, i understand... but ultimately what matters is: are customers using it? Right now the answer is, without a doubt, yes.

Thousands (Millions?) are debating deleting their snapchats at this very moment. I know I am.

IG did a great job getting a whole lot of activity back on their app. Congrats to them.

<comment><USER4> By customer, are you referring to (free) consumers or business that pay IG for advertising?

Looking at the latest update of Instagram (v9.0 on iOS), the Stories feature does not seem to be accessible for my account to try it.

The post makes it sound like no one has it yet:

> Instagram Stories will be rolling out globally over the next few weeks on > iOS and Android.

<comment><USER10> By customer, i meant users. By users, I mean the people who spend time on the app and are the reason there are advertisers and/or a business in the first place.

Regardless of what the post says to you, people have it and are already posting a LOT. Vogue already has anna wintour in multiple posts on their IG story. Brands already are posting. A lot of the vine/snapchat "stars" are already 20-30+ posts deep. I see fashion bloggers, tech writers, etc. A lot of people are already using it.

</comment></comment></comment><comment><USER11> I had turned auto-update off ahead of the new instagram UI update because I prefered the look of the old Instagram. I'm now glad that I did. I don't need stories slowing down the experience, taking up more real estate, or eating more bandwidth.

I don't mean to be cynical, but I think Instagram as a product has peaked. Their core functionality was perfect, and in many ways, the product only gotten worse as they've rolled out updates (prioritized feeds, sending DMs by default when you @ people, ...). Instagram hasn't rolled something out in a long time that's made me "wow," which is too bad, because it was my favourite social network not that long ago.

I'd be very annoyed if I had any personal stake in the company.

<comment><USER12> Also turned off auto-update but few weeks ago the app signed me out automatically and prevented me from logging in unless I update to the latest version.

Haven't used the app since then. Every social app is trying to do the same thing it's pretty pointless now imo

</comment></comment><comment><USER13> Looking past the obvious verbatim copy. Have we reached the point where everyone is completely sick of another way to "share", update, and post every moment of our lives. It's really exhausting. Is this a function of getting old?

<comment><USER14> What! Didnt that video of the cool kids having fun inspire you to share your awesome life stories?

I do get where you are coming from. I dislike snapchat because while it may be a way to share something silly its not a serious way to communicate. I have a friend that tries to use it for this and drives me nuts.

<comment><USER13> Add it to my list of things I don't "get". Photos are something I intend to keep, that's why I'm taking a picture.

<comment><USER4> Photos in Snapchat are more a way to convey the moments that make up your life rather than capture something to keep.

</comment></comment></comment></comment><comment><USER15> This is so blatant that it is almost satirical.

<comment><USER16> Had to double check the domain because I really thought it was a joke.

</comment></comment><comment><USER17> Serious question: what is it like being on an engineering team like this? Where the explicit objective is to clone a competitor head-to-toe. Does it impact morale? Can you recruit great people to such teams?

(Note, I get that nothing is completely original out there, and that there are a few differences between this and Snapchat.)

<comment><USER4> I have met some members of Instagram's engineering team at Python conferences. They also run a dedicated engineering blog ([https://engineering.instagram.com](https://engineering.instagram.com)).

Despite the fact that they use an old version of Django, and the product has not exactly changed drastically since it became popular, they don't seem jaded.

Sometimes it's fun to build your own version of something regardless of what exists in the rest of the world. I'm sure nuances will become more prominent in time.

<comment><USER18> The Instagram folks are awesome, and active in the developer community!

</comment></comment></comment><comment><USER19> I've been to a couple of Instagram ML meetups. I am not surprised that this is what they came up with. There seemed to be a lot of technically gifted people there, but I always felt there was a lack of creativity and deep domain understanding. All the projects seemed to be in the line of: we added this feature, and we saw our user engagement increased by this percentage. Everyone seemed to be working on incremental improvements without a purposeful leadership and vision.

They do have the technical talents though. I think one of the word2vec authors was there, but he was giving a talk about using the same technique on emoji icons :-( I would think there are more interesting problems to tackle with the available resources at FB.

<comment><USER17> What is an Instagram ML meetup?

<comment><USER19> machine learning, sorry.

</comment></comment></comment><comment><USER7> Meanwhile any time I look at Instagram now I'm hard-pressed to find any posts from the current day because they only show me the "important" highlights from more than a day ago.

Yeah, I'm serious.

</comment><comment><USER20> I use instagram because everything stays there I use snapchat because it's quick and temporary.

Why couldn't they make it possible to have a story that appears as a single tile in your profile permanently?

<comment><USER21> I initially thought that is what they built but, They went the snapchat route.

</comment></comment><comment><USER22> I think that Facebook and other companies need to consider that it's better to change nothing than add the wrong feature. This blurs the lines too much with Snapchat. If I still used Instagram when they added this feature, I would stop using it in favour of Snapchat. (But I've already stopped using Snapchat since they feature-creeped all the way into photo backups.)

<comment><USER23> > I think that Facebook and other companies need to consider that it's better > to change nothing than add the wrong feature

Instagram seemed to be following this policy until very recently, now the users have got bored and FB is trying desperately to catch up.

</comment></comment><comment><USER24> Ugh.

I hope Apple Photos releases a simple social network that lets you share photos without all this annoying crap trying to hook young adults.

I liked IG a lot for it's intended purpose: easy to use photo app.

<comment><USER25> There's already iCloud photo sharing, if you haven't checked that out.

<comment><USER24> Yeah I've used it, it's okay. I like the approach social networks take: have a feed, and I can subscribe to it.

</comment></comment></comment><comment><USER26> Go home instagram, you're drunk!

</comment><comment><USER27> What I'm unclear about, as both an Instagram user and with an interest in product development (from a UI/UX perspective), is what question this answered.

I suppose it should not be entirely a surprise for a half billion user, Facebook-owned service to take the throw-feature-at-the-wall-and-see-if-it- sticks approach.

Regardless, it appears to be unobtrusive (though it seems odd to bury ephemeral content creation/consumption...)

</comment><comment><USER17> They're doing the "tap for photo, hold for video" thing too. I thought there was a patent dispute around that?[1] Is that resolved now?

[1] [https://techcrunch.com/2014/08/14/snapchat- patent/](https://techcrunch.com/2014/08/14/snapchat-patent/)

</comment><comment><USER28> Instagram also cloned Vine and the responses were pretty similar if I remember correctly.

</comment><comment><USER29> Are there any good stats available on Instagram's usage over trends over time? Seems like people are using it less and less.

<comment><USER30> As an educator, I can tell you that young teens still use both Snapchat and Instagram equally. I would say that younger kids are actually more drawn to Snapchat due to the face swap and goofiness functionalities.

</comment></comment><comment><USER31> Way to innovate by ripping off the name and feature of Snapchat!:|

</comment><comment> enahs-sf I wonder when VSCO will add stories...

</comment><comment><USER32> Annnnnd IG is done.

<comment><USER33> I feel that the second dotcom bubble finally burst with the fall of Uber yesterday.

<comment><USER22> Is there some news that I missed yesterday?

<comment><USER34> Uber sells Uber China to Didi

</comment></comment></comment></comment><comment><USER35> Is it April Fools' day already? They didn't even bother to change the name from the direct feature rip of Snapchat? haha All I can think of is this meme: [http://bluetide.pro/1eJqM/4NFGBKsg](http://bluetide.pro/1eJqM/4NFGBKsg)

</comment><comment><USER36> I had to check that it's not April 1st.</comment>


Ask HN: How do you get the first businesses on your marketplace? - <AUTHOR>

How a site like AirBnB or Foodzie or Etsy get the first 10000 listings? Now they are well know sites, but in the beginning, the first year...<p>-what is the approach of sites like these to contact businesses/sellers and get them onboard? -by phone, email, letters...? -which kind of profile the person who contacts them needs to have?<p>Feel free to add anything to enrich this question and share your war stories. <comment><USER2> I would put my own stuff up. AirBnB? Rent out your room, find friends and family that have a room to rent. Etsy? Sell your own crafts. App market place? Sell your own apps there, and give other early adopter publishers a more favorable cut than the competitors.

You have to hustle and make sales. Make warm calls. Make cold calls. Start building an email list through your blog. Engage people who make the things you want to sell in your market.

And that's only half of it. You also have to get the right consumers shopping in your market.

I don't know who said it first but I like this: "Resourcefulness not Resources"</comment>


Google has costly yellow ad blunder - <AUTHOR> https://adage.com/article/digital/christmas-early-yellow-ad-blunder-google-training-exercise/315894/ <comment><USER2> [https://news.ycombinator.com/item?id=18614882](https://news.ycombinator.com/item?id=18614882)

For a previous discussion on this.

</comment><comment><USER3> Why are they not just paying people the opportunity cost CPM that they would have recieved? Can I also have some free money?

<comment><USER4> They bought ads and those ads were displayed. If I print out $10,000 worth of yellow posters at Kinkos, I'm not off the hook for that just because it was a mistake.

</comment></comment><comment><USER5> This was discussed here a few days ago: [https://news.ycombinator.com/item?id=18614882](https://news.ycombinator.com/item?id=18614882)

</comment><comment><USER6> They won't lose much sleep over a couple tens of millions of dollars, but I'm sure someone will lose their job.

<comment><USER7> As someone that has been part of costlier incidents in the past, no. Blaming people for an accident the system allowed is generally not useful. You fix the system so that the accident isn't possible.

<comment><USER6> I've been part of that too and I agree, but Google is a massive company and gets the blame game as much as any other big corp.

Also, there are many ways to "fire" some people, perhaps they'll be "moving" to another team.</comment></comment></comment>


Apple breaks up Palm Pre, iTunes lovefest - <AUTHOR> http://news.cnet.com/8301-17938_105-10287709-1.html

<comment><USER3> I eagerly await the 1000-item-long comment thread about antitrust, unfair competition, and Apple's history of bare-knuckled business practices. Really.

But before we kick that off, can I just chime in with the observation that the overwhelming likelihood of just this event made it irresponsible for Palm to promote iTunes syncing for their device?

<comment><USER4> I agree that it's irresponsible for Palm to promote iTunes compatibility - <USER2> someone had to be first. Without a clear, actual case of "Apple shuts down competitor by software patch" one cannot make a case against Apple as a monopolizer. Hypothetical "Apple _can_ shut down competitor" cases do not convince mainstream lawmakers and media.

<comment><USER5> Let's be clear here: Apple doesn't prevent syncing with the iTunes library. What they prevent is third parties using iTunes to do so. It is less a case of shutting out a competitor as it is squashing a parasite. Nokia and RIM both provide software to sync with a user's iTunes library, why won't Palm?

<comment><USER6> Not even. Competitors are (as far as I know) welcome to use iTunes' xml database and files. But they are not allowed to label themselves as iPods, especially on user-facing interfaces. That's exactly what the Pre does, and it's a clear and blatant infringement on Apple's marks and trade dress.

<comment><USER7> A device identifying itself as an iPod in a protocol is no more "blatant infringement on Apple's marks" than it is when every modern browser puts Mozilla/4.0 in its user agent.

<comment><USER6> Please note " _especially on user-facing interfaces_ " above. The Pre identifying itself as an iPod in a protocol is not an issue. The problem is that doing so ultimately advertises to the user that the Pre _is_ an iPod via dialogs, icons, and other interface verbiage.

If for Internet Explorer to ape Mozilla/4.0 compatibility, it had to momentarily change its name, icon, and all user-facing interfaces to match Firefox so that one could not distinguish between an actual instance of Firefox and the "IE-in-fox's-clothing", you can bet that the Mozilla foundation would be peeved. Aside from legal considerations, what if IE-with- firefox-dress crashed all the time and people wrongfully blamed Firefox for this sorry state of affairs?

</comment></comment></comment></comment></comment></comment><comment><USER8> What's really interesting is who this hurts -- iTunes on OSX users who may have purchased music from the iTunes music store.

Windows users have a number of really useful and viable options to iTunes for managing their music. OSX users... don't. If I were still on Windows, I probably wouldn't have been using my Pre with iTunes to begin with. Unfortunately for me, I switched to a Mac not long ago, so I'm stuck with iTunes and a whole bunch of crap alternatives for managing my media library.

Great job, Apple, I'm so happy to be a Mac user.

<comment><USER9> There's SongBird for OSX which IIRC also supports iPod syncing. In the case of the Pre you can also use it as a USB Mass Storage device to add music. Or Palm could just stop being lazy and offer proper software for their device.

</comment></comment><comment><USER10> It's kind of amusing to see... I'm pretty sure people at Apple realise that just by breaking compatibility they won't force any special amount of Pre owners to suddenly buy an Apple product which does work with iTunes. They just bought Pre - why would they even look at iTouch / iPhone? Maybe iPod, but probably not before the next salary.

Also, I guess someone told them that this move has the same problem as DRM. Now Pre will improve compatibility. The only real way to block Pre would be to introduce a public key infrastructure support + certificate checking in iPods & iTunes, which I believe they don't support yet. (and it would require a mass firmware upgrade)

But they could just count on Pre users getting interested in iTunes and their store (which would give them profits). They could even detect a connected Pre and splash-screen advertise iPods to them. So... was it really something they had to do? Did they actually think before the default defensive move?

<comment><USER11> There may be a support issue for Apple here. Imagine a customer purchases a Pre and syncs it to iTunes, but Palm's reverse-engineering of the iPod-iTunes protocol is incomplete and iTunes crashes as a result (and does so reproducibly). Many customers would follow this up with Apple, but Apple would likely be unable to help them (presuming they were even interested in doing so).

</comment></comment><comment><USER12> Apple deserves MUCH more rap and lawsuits than they currently get. They make amazing products, but that should be independent of their business practices

<comment><USER13> I would not call relying on a hack to use third party (which is not at all interested to support you) software a solid business practice either.

</comment></comment><comment><USER14> Apple is just as bad as Microsoft.

</comment><comment><USER15> I got downmodded when I said it before: <http://news.ycombinator.com/item?id=661202> so now can I say I told you so?

It's amazing how pretty much every person in that thread refused to believe Apple would break it. This is not an accident, Apple did it deliberately - they warned about it, and then they did it.

Edit: And I get downmodded for this one too, which I expected. People clearly really like Apple and refuse to believe they would do this.

<comment><USER6> You misunderstand. People did not refuse to believe that Apple would break support. They refused to believe you had any compelling evidence to support your claim that they would.

That you happened to be right is no vindication when the odds were 50/50 and you put forth no model for predicting the outcome.

<comment><USER15> It was not 50/50 it was 100%. They clearly said they would break it.

Yes I know they used marketing speak to do it, but after a while you learn to decode it.

</comment></comment></comment><comment><USER16> This is why I use free software; software that works in my interests, instead of actively against it. I don't really understand why people would use software that intentionally limits their rights, but it makes me sad.

Amarok is vastly better than iTunes, if you are into that kind of thing. (I personally use xmms2 and a variety of perl scripts to control it, but I can see how that's not exactly suitable for everyone.)

<comment><USER16> I see the anti-free-software brigade is out in force tonight. Helpful hint, guys, I have lots of karma and nothing to spend it on.

<comment><USER17> For what it's worth, if you'd made the identical comment about Windows Media Player you'd probably be at +10 by now.

<comment><USER16> Yeah. I have learned what is and isn't popular here. On the popular list is being really cynical about everything; on the "not popular" list are free software, the GPL, and being liberal.

Fortunately, I have like 7000 karma points and only lose 8 for every unpopular post, so it doesn't really matter. Although, I am still trying to figure out why karma matters at all...</comment></comment></comment></comment>


Ask HN: Github as resume, what does it really mean? - <AUTHOR>

It is so often said "your github account can be a great resume", but what does that really mean? What will a potentional employer specifically look at on your github account? Will they glance at the most recent project you committed to and assume this reflects the majority of your work? What if you have forks of projects that you have not actually committed any pull requests to at all?<p>If you were an employer, what would you look at on a github account? <comment><USER2> As someone who has done plenty of candidate screenings, an active Github account is a big plus. I get to see how you interact with others, I get to see your code style, how you approach version control, how you deal with bug reports and feedback, and I can get a sense of your programming prowess in a context that isn't cooked up for some interview.

Accounts that are just vimfiles and the skeleton of a never-again-touched project are boring. Forked repos are neat, because they show what you're interested in and what you've been exposed to. Forked repos that you've contributed to are even better. Your own projects that others have filed issues and pull requests on is the motherlode; that tells me a ton about how you do the job I'm hiring for.

<comment><USER3> Thanks. This is actually a really nice insight to see how employers may read someone's GitHub profile.

</comment></comment><comment><USER4> It's a programmers' version of "a picture is worth a thousand words".

I don't like putting an equal sign between opensource and github, but that's another story.

 _> If you were an employer, what would you look at on a github account?_

Examples of actual working code, obviously.

If there is some proof of collaboration with other programmers on solving problems together (not only sering as your code dump), it'd be a bonus.

</comment><comment><USER5> I am a relatively new Git and Github user. I am just an average gitter/githubber but when I look at my own public github profile, it makes me realize the following:

1\. It tells me that I can use Git/Github (even if not advanced). Probably not a big deal but still.

2\. By looking at the projects that I have either forked or initiated on my own, it tells you what kind of things I might be interested in building. Of course, there could be many other things that are not listed there but still gives you an idea. For example, forking Git itself vs. forking jquery. May be I am more of a backend engineer vs. frontend engineer. May be I am into opensource projects or just like to write my own utilities. All these things can tell you a lot about me.

3\. You can immediately see what programming languages I am using. For example, my github is primarily about python (duh!!) and I wrote one simple project to convert financial statements (QFX format etc.) into csv using python. Again, I know thats child's play for the pros but hey, I learnt python doing that.

4\. You can also learn if I lean towards any specific frameworks/tech/libraries etc. For example, I am into Flask framework for web dev.

5\. How I document things. E.g.README.md etc. This is useful as well to understand if I can communicate what I am building with others. Also shows how I collaborate with other teams/project members.

Hope this helps.

</comment><comment><USER6> Github profiles (moreso if they are regularly maintained) are an incredibly useful preview for us when we screen CV's.

For what it's worth, we've (Hacker Jobs UK) interviewed a few CTO's & Tech Directors over the last year or so and asked them all the same questions including _How much value do you place in a Developers personal projects such as github & demo sites when they apply for a job with your company?_.

If you got to our blog and search for 'Hacker Jobs Meets" you'll find the relevant posts. <http://www.hackerjobs.co.uk/blog>

</comment><comment><AUTHOR> Wow, I think the new profiles on github are a definite improvement for this kind of situation. :D</comment>


The World's Oldest Functioning Constitution Still Works - <AUTHOR> https://www.commentarymagazine.com/american-society/the-system-works-constitution-donald-trump/ <comment><USER2> It looks like the title of this article is "The System Works"; I don't see the part about the world's oldest functioning constitution.

I've often heard it said that the world's oldest functioning constitution is that of San Marino, almost 200 years older than the American one.

[https://en.wikipedia.org/wiki/Constitution_of_San_Marino](https://en.wikipedia.org/wiki/Constitution_of_San_Marino)

<comment><AUTHOR> The title is from the twitter card; since "The System Works" is quite ambiguous here and there is no other way to transport context I thought it was the better one. Also, since now there are comments I can't change it anymore, sorry.</comment></comment>


Show HN: Space Buckets, DIY indoor gardening - <AUTHOR> http://buckets.space <comment><USER2> I was hoping that "Begin your journey" would be more for newbs. What would you recommend for someone that has zero knowledge in this field, but wishes to start the indoor gardening journey?</comment>


Anxiety High [pdf 2Mb] - <AUTHOR> http://www.paige-williams.com/stories/AnxietyHigh.pdf

<comment><AUTHOR> Worth reading and comparing against _"After Credentials"_ ~ <http://paulgraham.com/credentials.html></comment>