We don't want your coffescript - <AUTHOR> http://blog.ponyfoo.com/2013/09/28/we-dont-want-your-coffee <comment><USER2> Are there people that seriously can't just read CoffeeScript as-is? Are there seriously people that can't scan through the CoffeeScript docs in about 20 minutes and pick up the language more or less?

The first time I saw CoffeeScript I immediately realized, oh, fuck yes, this is obviously better, and switched over to it immediately. I was productive with it instantly. Is it really something worth spending your time arguing about in either direction? I mean, it feels like telling someone to quit using their English accent or slang when you only understand American. Reading CoffeeScript code is hardly an effort in trying to decipher a compiler, almost all of CS's constructs do exactly what you expect if you'd have to guess, and where they are not obvious the non-obvious is due to Javascript's oddities, not anything to do with CS.

A better analogy for CoffeeScript is not another language, but it's Javascript slang or shorthand. It's a practitioners dialect of the language.

<comment><USER3> I can read it but it's a struggle. Much like reading Ruby, for someone who comes from Python. The syntax doesn't quite make sense to me and its usage varies between authors—a bunch of things are optional and used unpredictably (parenthesis, lambdas, indent-alignment).

Despite the Pythonish indent-based blocks, CoffeeScript is very much Ruby-like in syntax and culture. From my experience, fluent Ruby readers enjoy CoffeeScript much more.

Regardless, the point is that CoffeeScript != JavaScript. Doing things like answering JavaScript questions in CoffeeScript is simply inconsiderate and not very useful—much like answering Python questions in Ruby.

It's true—I could go ahead and learn CoffeeScript and become more fluent at it if I wanted to, but I don't. I actually like JavaScript as it is, especially the newer specifications. Same way I choose to continue using Python rather than learn Ruby more thoroughly so that I can benefit from random Ruby answers to my Python questions.

<comment><USER4> Strange. I know Ruby and Python and switch between them quite frequently, but generally prefer Ruby.

I loathe CoffeeScript. My problem with CoffeeScript is it imposes extra burden—to learn the syntax, and to learn how the build tools and process works (which, once you factor into account the various different web frameworks like Rails, Django, Flask and whatever brand of crazy syrup the Node people are currently drinking can be quite substantial)—but the benefit isn't there. CoffeeScript is just JavaScript but prettier.

That's not a worthwhile tradeoff for me. When Rails started doing CoffeeScript, I just opened up ~/.railsrc and popped --no-coffee in there, and my life has been a lot less painful.

CoffeeScript fixes the things about JavaScript that are least significant to me in terms of developer pain (semi-colons, curly braces and so on) but does nothing to address the things that I hate about writing JavaScript (oh, the weakly-typed type system for one thing).

If a front-ender on my team started using CoffeeScript on a project I work on, I'd take him to one side and say "it's fine to practice weird kinks in private, but compile it into JavaScript before you check it in". :)

<comment><USER5> > _does nothing to address the things that I hate about writing JavaScript > (oh, the weakly-typed type system for one thing_

It can't because it's actually JS, by design. Yet it dutifully tries as hard as it can within this design goal by e.g making its == compile to JS ===. Maybe you'd rather be interested in ClojureScript or Dart, which use JS merely as a VM instead of their systemic core.

> _If a front-ender on my team started using CoffeeScript on a project I work > on, I 'd take him to one side and say "it's fine to practice weird kinks in > private, but compile it into JavaScript before you check it in". :)_

If a back-ender[0] were to come to me-as-a-front-ender (since I'm equally both), and tell me what language to use, I'd tell him to, well, mind his own server-side business and let front-enders use whatever language they deem able to make them go from A to B in the most clean, reliable, and efficient way possible to them, or else I'll make them rewrite their stuff in NodeJS under cover of both ends being able share and reuse code, just to make them suffer ;-)

[0]: which I don't know if you are or not, but given the substance of your comment, I'd venture mostly the former.

<comment><USER6> > Yet it dutifully tries as hard as it can within this design goal by e.g > making its == compile to JS ===.

Now we're effectively losing the "==" operator, which is behaving like in most other traditional scripting languages (e.g. Perl). What did we win by losing an operator? Why obfuscate that this is not the JS "==" operator but most likely the "===" operator?

<comment><USER5> Either one wants weak typing _or_ strong typing, but one cannot have both. "most other traditional scripting languages" consists of Perl and PHP (not even (ba)sh/test, to which == is string comparison whereas -eq is integer comparison), while languages typically used on the backend together with JS/CS include Python, Ruby, Java, C#, and whatnot, none of which have such an error- prone feature.

> What did we win by losing an operator? Why obfuscate?

Type safety, and resistance against both bona fide errors and clueless developers. Sane defaults matter.

</comment></comment></comment></comment></comment></comment><comment><USER7> In my experience, it took essentially zero time to understand and be able to write simple CoffeeScript. Yeah, it will take some minor effort, but I see it as as parallel to templating languages in terms of your argument. It is faster and cleaner to write, and makes my life easier. I have hardly (I think never) needed to look at the output for debugging, but when I have looked out of curiosity it seemed reasonable, just with strange variable names.

Does anybody have examples of some CS code that only differs from JS in terms of syntax (eg. not defining a class or something) but compiles to something weird?

<comment><USER2> I agree and I can't help but think that all the concerns about source maps and being unable to read the output comes from people who saw the transpilation aspect to the language and freaked out, and never actually tried to use it to get something done. The only time I had to look at the source was when there were _bugs_ in the compiler. (This was years ago, and I submitted patches.)

</comment></comment><comment><USER8> Coffeescript is a tool rather than a language. The syntactic conventions of this tool form a sort of "shorthand" for "best practice" javascript which happens to be also almost as easy to comprehend as javascript itself, amounting to a net productivity gain.

Given that, coffeescript is nothing beyond javascript. It does not have its own ecosystem, its own libraries, its own type system or any of the other baggage that comes with some other compile-to-javascript systems.

</comment><comment><USER9> I'm not a CS lover, but I think most of your arguments are invalid. You say that you don't like CoffeeScript because it generates JavaScript code you don't understand. But do you understand what machine code will JS generate? No? Why? Maybe because you don't care... In general same thing applies here. If you need to debug generated JS, use source maps. This argument is not an excuse. Beside, CS is fairly simple in translating to/from JS. If you think it's not, try use dart2js ;)

<comment><USER10> Assembler is hard. JavaScript is not. It's a layer of abstraction that makes no sense to me either, particularly when there's a community of JavaScript enthusiasts already out there. If I was looking for open source project commits I know which I'd use.

</comment></comment><comment><USER11> I do love CS and I don't think people should answer js questions writing CS code. This is just rude. If you write your blog in CS, it's your choice, it just limits your audience.

Seeing such an angry reaction about CS is a good news, it just means that it is popular.

And for the ones who think CS is just pretty js, I suggest this reading [http://aseemk.com/talks/intro-to-coffeescript](http://aseemk.com/talks/intro- to-coffeescript)

</comment><comment><USER12> My biggest problem with CS is it's a space sensitive language that comnpiles to a space insensitive language.

Given that you'll typically interact with wild west JS that adheres to no spacing conventions, having to juggle strict spacing vs arbitrary spacing seems looks a headache.

<comment><USER13> coffee-script compiler output is pretty well-formatted -- so it's indented correctly even though javascript does not require that.

</comment></comment><comment><USER14> You need to get more benefit from the abstraction than the cost. I couldn't find it, in cs.

I've made thousands of mistakes (on a daily basis it feels like). In 17 years I don't think I have ever once forgotten to put 'var' in front of a variable declaration.

<comment><USER2> its not about if you make the mistakes or not per se, its about the removal of unnecessary mental burdens.

<comment><USER15> Exactly. Opening up the air, so to speak.

</comment></comment></comment><comment><USER16> > Always compile your code down to JavaScript before posting a question to > StackOverflow, or replying to a blog post. You might even learn things about > JavaScript itself, too.

I don't see author's enormous arrogance backed by any efforts to think about his reasoning.

<comment><USER15> agreed.

</comment></comment><comment><USER17> You don't understand what asm.js is for, right? It is not meant for writing code in it, it is for compiling code from other languages to it. Well, sometimes you may need to write code in it for optimization. But the code you point to looks complicated not because it is written in asm.js, but because algorithm itself is compilcated. If you will rewrite it in any other language it will still contain all of these magic numbers and strange operations. In fact, almost any hashing algorithm looks like this. Just open wikipedia page for sha-1 or md5 and look at pseudocode.

</comment><comment><USER18> I don't understand the claim the the outputted Javascript is hard to read. Whenever I have a problem with Coffeescript, the first thing I do is look at the output, usually in the Chrome devtools. If it doesn't compile, I'll yoink the offending code out and feed it into the linter at coffeescript.org. It is by far the least odious part of my workflow.

Part of me wants to claim that if Coffeescript is getting in your way, you're trying to do too much. I consider it a code smell and start to wonder what needs to get refactored.

</comment><comment><USER19> What i've never understood about coffeescript is, since it compiles to javascript, why not just learn to write javascript in the idioms that coffeescript generates?

No one would have a problem suggesting that a developer who only used jQuery actually learn how to code in standard js without the syntactic sugar. CS doesn't compile to bytecode, it compiles to an actual, human-readable and editable language.

So why not just learn that style of javascript and save yourself the hassle of pretending there's a second scripting language for the web?

<comment><USER20> Abstracting away the messiness of classes in JS is justification enough for CS, IMHO.

Also, to use your above example, I agree understanding that style of JS is important, but that doesn't mean you shouldn't use the tool.

</comment></comment><comment><USER13> The author mentioned the ES6 problem, which I think is the only valid point made in the whole article (others are way too subjective).

Despite the hope that ES6 could be usable as-is, there's always the legacy syntax problem -- and the same applies to coffee-script (and its various forks). _Some_ bad parts of javascript are going to stay in ES6 -- solved beautifully by pre-ES6 coffee, but due to the changes elsewhere we'd have to start over.

It remains unclear what we would be using when ES6 gains traction.

</comment><comment><USER21> I'm happy to go head to head with this link baiter on who knows Javascript better :). I'm not going to take "you might even learn something about Javascript" from someone who says that a simple transpiler is a "black-box" that's totally beyond them.

p.s and a link-baiter than has a loading screen on their blog that crashes Chrome on iOS

</comment><comment><USER22> TypeScript is the best bet if you want to write today's JS the ECMA6 (Harmony) style. It's not like CofeeScript.

</comment><comment><USER23> Coffeescript has made me roughly 6x-8x more productive in writing 'javascript.' I can't fathom how anyone that spends more than 4 hours trying to use doesn't see the same results.

My biggest fear was debugging, but it was/has been absolutely no issue whatsoever.

</comment><comment><USER24> Is there a mass CoffeeScript-answers-to-JS-Questions taking place on SO? Without even pointing to some instances of CoffeeScript-ers arrogance/mischief, ranting like that is not a nice thing to do.</comment>


The Law of Supply and Demand Isn't Fair By Richard Thaler - <AUTHOR> https://www.nytimes.com/2020/05/20/business/supply-and-demand-isnt-fair.html <comment><AUTHOR> [https://archive.is/dNRtF](https://archive.is/dNRtF)</comment>


Young People Are Suing the Trump Administration Over Climate Change - <AUTHOR> https://www.nytimes.com/2018/10/23/climate/kids-climate-lawsuit-lawyer.html <comment><USER2> "Ms. Olson will deliver her opening argument on Monday in a landmark federal lawsuit against the Trump administration on behalf of 21 plaintiffs, ages 11 to 22, who are demanding that the government fight climate change. "

An 11 year-old suing the government? Why are the NYT covering this publicity stunt? Must be a slow news day.

</comment><comment><USER3> That's not how contractualism works thank God</comment>


Show HN: Clips.live – Live video clips of every NBA play - <AUTHOR> https://clips.live <comment><USER2> As a huge basketball fan I think this is great. As a US citizen roughly familiar with the NBA and how they come after platforms that use their content in ways that they don't condone (e.g., /r/nbastreams, RIP), I don't see this lasting very long.

<comment><USER3> /r/nbastreams is an extreme because that directly affects league pass sales. Highlights / clips are probably less of a concern, but definitely still a concern. Adam Silver has said "The way we look at it: we're incredibly protective of our live game rights, but for the most part, highlights are marketing" [https://www.sporttechie.com/adam-silver-against-suing-nba- hi...](https://www.sporttechie.com/adam-silver-against-suing-nba-highlights- youtube/)

We also think that NBA itself, ESPN, and BleacherReport can benefit from this technology. There are a lot of potential use cases we think that can be unlocked with this. Right now we're going the consumer route first where they can see live clips, but we can see ourselves potentially working with one of the bigger players if they see value in this.

<comment><USER4> Making clips of every play does not really seem to fit their definition of highlights

<comment><USER3> Yeah you're right, we really just think if NBA sees this they may want to leverage this technology themselves since it can help them hopefully do a lot more, rather than just banning us completely.

</comment></comment></comment></comment><comment><USER5> In the US your only defense for using someone else's copyrighted broadcast is fair use. Making clips of every play of every game is highly unlikely to be considered fair use.

<comment><USER3> Copying from one of my responses to the same concern:

"Highlights / clips are probably less of a concern, but definitely still a concern. Adam Silver has said "The way we look at it: we're incredibly protective of our live game rights, but for the most part, highlights are marketing" [https://www.sporttechie.com/adam-silver-against-suing-nba- hi...](https://www.sporttechie.com/adam-silver-against-suing-nba-highlights- youtube/)

We also think that NBA itself, ESPN, and BleacherReport can benefit from this technology. There are a lot of potential use cases we think that can be unlocked with this. Right now we're going the consumer route first where they can see live clips, but we can see ourselves potentially working with one of the bigger players if they see value in this.

<comment><USER6> This technology is not new, dating back to 2000. It was kicked out of the NFL as they used it to review plays at half.

<comment><AUTHOR> Do you have any info about what it's called or how it's used? I'm surprised ESPN doesn't have a clickable video link for their play by play for example. NBA has it for league pass holders, but they also don't offer it in real time, which to me defeats the purpose. I want to see and share a video of something that just happened, not only forced by having to wait until after someone else covered it in a highlight.

</comment></comment></comment></comment><comment><AUTHOR> Hey HN - we built Clips.live since we wanted to share clips of NBA plays as soon as they happen. Before this, you had to make these clips yourself or wait until someone manually made them in order to share them. Eventually, we want to record and index every play of every live sports game.

<comment><USER7> Did you invest in time to check if you are free to publish clips, especially with "clips.live" as a watermark. I once did the same in another sport, cricket, back in 2013, ended up killing it because of a cricket board and its broadcasting violations note over an email.

<comment><USER8> Did same got an email from ICC and BCCI respectively to shut down the website.

<comment><USER7> Unsure why ICC was involved in your case. Mine was pretty much with BCCI and Sony, (the channel which owned broadcasting rights of IPL at that time). They pretty much had a very neat clause, which I should have taken a note upfront, nevertheless, the experience gained confidence in me to build applications. :)

</comment></comment></comment></comment><comment><USER9> Some clips are not accurate. First one I clicked on, Mavericks vs Rockets, Russel Westbrook scores layup with 121-126. It was presumably right after he did it and there was just Mavericks imbounding the ball and dribbling it.

<comment><USER3> Thanks for calling this out.. we are definitely still perfecting it. We have a few that have timing issues, but we think 90%+ of the videos we post are accurate.

</comment></comment><comment><USER10> This is cool. What's the source data you use to generate clips?</comment>


Tufte inspired LaTeX classes for producing handouts and papers - <AUTHOR> http://code.google.com/p/tufte-latex/

<comment><USER2> And for slides there's the Beamer class: <http://latex- beamer.sourceforge.net/>

(If MS Office/OpenOffice is "office 1.0" and GDocs/Buzzword/Sliderocket is "office 2.0", then what is LaTeX?)

<comment><USER3> Office 3.1415926535...</comment></comment>


Why a small team chose Mercurial. - <AUTHOR> http://www.ninthdivision.com/blog/2011/01/why-mercurial/ After using git and then using Mercurial, it was clear that Mercurial was a better fit for our company, how we develop.  For educated people on git/hg, these might be a surprise.  But the people still considering git or hg its a good look. <comment><USER2> This misconception always bothers me:

"In Mercurial you can't change previous committed code. In git you can change the past commits in the repo. I am sure there are cases where the linux kernel needs to do this (I can't think of any), but this is some we don't even want to have the option to do."

Yes, you certainly can change commits in hg. The tools to do it in git are a bit more refined, but there's no fundamental difference here.

I don't want every failed, unbuildable, safety-net commit making it into my project history. I want it to be possible for people to understand change.

For example, here are the last few commits from my primary work project: <http://pastebin.com/BiNpP08s>

In a week from now, will you need to see the four different attempts it took to get that last change right? If so, you can always follow the code review link and see the discussion that went on there and how it shaped into that file change, but anyone who makes actual good use of their project history will get frustrated pretty quickly at thought-free changes.

<comment><USER3> The difference is not fundamental, no. It is a difference in philosophy and interface that discourages modifying history.

The question is: Why would you commit (to a stable branch) when your code doesn't build or pass tests? Why would you want to eliminate a state where you made something that worked? I don't see the appeal in modifying history.

If you just need to save some partially working state, etc. you can use patch queues- They make much more sense here.

<comment><USER2> > The question is: Why would you commit (to a stable branch) when your code > doesn't build or pass tests?

Because:

a) It's not a stable branch. It's my dev branch on my local box that nobody else can see.

b) I feel like it and there's no penalty. I can go back if something is wrong.

c) The next thing I'm going to do is risky. I should save where I am just in case I'm wrong.

> Why would you want to eliminate a state where you made something that > worked?

Because it may not be meaningful and it may not work. In the above case, what value do you gain from the three revisions of that change that were incorrect? When it hit code review, there were problems with it. We fixed them. Why would you publish code that is known to be incorrect (since we figured that out during code review)?

> I don't see the appeal in modifying history.

I don't see the appeal in a history full of "Oops, I forgot to add this file to the last commit," and "build fix" and "The author wrote this on Solaris, but I need a small change in the Makefile for Linux."

If there's one logical change, having several commits where you just didn't get it right only adds confusion.

> If you just need to save some partially working state, etc. you can use > patch queues- They make much more sense here.

Are you saying that because that's the tool you were offered or because you actually believe it's the best way to do things?

I used mercurial very extensively before I started using git (which I have also used very extensively). Most of my time was spent in mq capturing state of work in progress. That really sucked.

Now, I just commit whenever I feel like it, and then before I publish code, I update the commit messages, squash distinct changes that represent a single logical change that shouldn't be broken up, break up commits that represent more than one logical change that shouldn't be lumped together and just generally tidy things up so the reviewers and future developers tracking back bugs can make sense of things.

Then I test it: <http://dustin.github.com/2010/03/28/git-test-sequence.html>

<comment><USER3> > c) The next thing I'm going to do is risky. I should save where I am just in > case I'm wrong.

a and b are not really reasons /to/ commit a broken state. On c: If the next thing you're going to do is dangerous, I'd say it's a separate "thing" and either 1) commit the stuff you have in a working state or 2) shelve/stash/qimport it if it's not done and you need to do the dangerous work first, which is why I mentioned patch queues.

Thus, purposeful broken commits are eliminated.

> I don't see the appeal in a history full of "Oops, I forgot to add this file > to the last commit," and "build fix" and "The author wrote this on Solaris, > but I need a small change in the Makefile for Linux."

hg rollback/backout are intended for "oops, I forgot to add this file to the last commit." There's no need to leave those commits in, unless the problem isn't discovered for a while, which is when modifying history makes sense.

Patch queues are most definitely not just "the tool I was offered." They are a rather powerful way to deal with commits as a stack, and I've never been bogged down "capturing state of work in progress."

\---

There's nothing really wrong with git's workflow, but there's nothing wrong with mercurial's either. That's all I'm saying - "it is a difference in philosophy and interface that discourages modifying history" that I happen to prefer.

</comment></comment></comment></comment><comment><USER4> I've been using Mercurial for a few years and am now turning to git (one week in, so I won't say much about it) for a very specific and fundamental reason: short lived local branches.

Say you have a repository, fix a few bugs on it, and now you want to work on a crazy feature. What you need is a short lived local branch, because you don't know if crazy feature even makes sense. Unfortunately, there is no built in way to do this in hg. [1] Deleting a branch is not a fundamental concept in hg, and so the advice is to create a new local "clone" of the entire repo. [2] Great, now you have to change the config files for your dev environment to point to a new folder just so you can test out crazy feature. Also, by default all your branches get pushed (although hg will complain about creating remote branches).

In practice, all this turned "branching" into an expensive concept in my mind. That's bad, very bad.

I still prefer the hg elegance and ui to git -- even the output of "hg st" vs "git status" tells a great deal about the philosophy behind both. However, I think hg got branching wrong and that is a fundamental flaw that no amount of elegance at the UI level can compensate for.

I remember when I was making my first choice between hg and git and the advice was "they're pretty much the same, pick one." I think that advice is incorrect based on what I've said above.

[1] <http://mercurial.selenic.com/wiki/LocalbranchExtension> [2] <http://mercurial.selenic.com/wiki/PruningDeadBranches>

<comment><USER5> I use patch queue[1] to manage these short lived branch, and it works for my purpose. You just pop the patches and delete them all when you want to prunge the branch. It also make it easy for others to review your code.

If these short-lived branch will be merged back shortly. Bookmark is another alternatives.

[1] <http://mercurial.selenic.com/wiki/MqExtension> [2] <http://mercurial.selenic.com/wiki/BookmarksExtension>

<comment><USER4> I'm aware of both. Personally I find this to be an inferior solution. Using a patch queue as a local branch just feels wrong. Neither is using bookmarks an effective solution. Both solution make the decision to branch a much more deliberate process, and in the end you still don't get a branch that is equal to its peers.

As the result, in hg, you have to decide in advance "what kind of branch" it will be -- or you have to get in the habit of using mq's for everything -- and this just not a natural experience especially for a DVCS where branching is just fundamental.

</comment></comment></comment><comment><USER6> Before this devolves into a git versus hg holy war by people who never read the linked blog post, I'll point out that they chose hg over svn. It's mainly a cheerleader piece for DVCS with the git versus hg choice being a minor point.

<comment><AUTHOR> yes, please read the linked blog post. they used both hg and git quite a bit but found hg easier to host, use and move over from subversion (convert repos but also command line).

so yes, cheerleader piece you are right on that. not much cheerleading for hg these days.

<comment><USER7> >> not much cheerleading for hg these days.

Joel Spolsky seems to like it: <http://hginit.com/>

</comment></comment></comment><comment><USER8> Pretty good; liked that they didn't just say "HG GOOD, GIT BAD". I'm confused about the git learning curve though; I started using git on my own this summer, and I was able to immediately pick up the commands I needed to get by literally the day I started. I'll admit I don't have to host repositories, like they would in for their company; but for simply using git as a developer it was very painless.

<comment><USER9> Having taught people both systems, I will assert, based on my personal experience, that while some developers can certainly pick up Git relatively painlessly, picking up Mercurial objectively requires less time, and leaves users less likely to get into a state that they are unsure how to exit. This is purely based on my own personal experience, and I have not scientifically codified the learning time in double-blind testing or whatnot, but it's a data point based on more than just my own personal meandering attempt to learn the two tools.

 _EDIT_ : I am not making a value judgment here. It's harder to learn to fly a plane than drive a car, but that hardly makes the car better than the plane or vice-versa. It's just a recognition that their learning curves aren't identical.

<comment><USER10> Having introduced git to a few groups (and some hg), I found that the main thing that makes hg easier to learn is that hg mimics some of the same names of commands as cvs/svn. However, once they understand what is going on in git, the aha moments start to show up, and the really complicated stuff becomes easy.

</comment></comment></comment><comment><USER11> altogether a means to an end, mercurial and git are both good. i personally use mercurial. have worked with git in the past and was having trouble with the gerrit web front end and the fact that it required java.

i also use bitbucket and since having been bought by atlassian, was able to get lots of free private repositories. i think some people mentioned that they accidentally left cookie secrets in their code on a public github project.

i'm still too early in development to get into the perceived branching woes that others are talking about, but i'll let you know when i get there.

<comment><USER12> The fun thing about lightweight, painless branching is that once you start to incorporate that into your workflow, it's never too early in a project to use it. Lately every new feature or fix I start to work on begins its life in a topic branch. You never know when you're going to be interrupted or need to switch contexts to work on something else (or even just scrap the whole idea) so having your repository mirror your mental process in a completely seamless way is invaluable.</comment></comment>


Blueprint now works on Yum/RPM based distros - reverse engineer your servers - <AUTHOR> http://blog.devstructure.com/yumrpm-support

<comment><USER2> The article wasn't clear on exactly what blueprint does, and I didn't know, so I did some digging in their README.

"blueprint is DevStructure's workhorse tool that looks inside popular package managers, finds changes you made to configuration files, and archives software you built from source to generate Puppet, Chef, or shell code. Everything blueprint sees is stored in Git to be diffed and pushed. It runs on Debian and RPM based distros with Python 2.6."

Seems pretty cool, glad I looked.

<comment><USER3> Thanks for that, because I was wondering what the hell a popular CSS framework had to do with RPM/yum.

</comment></comment><comment><USER4> Awesome, thank you. I'm definitely going to be checking this out the next time I do server admin. Or maybe even just the next time I'm setting up a new development environment--it'd be nice to not have to remember to install everything manually.

One note: your blog is lacking a link back to your homepage on individual post pages.

(Also, previous discussion on HN for those who missed it: <http://news.ycombinator.com/item?id=2344080>)</comment>


Hard Part of Computer Science? Getting into Class - <AUTHOR> https://www.nytimes.com/2019/01/24/technology/computer-science-courses-college.html <comment><USER2> >Aafia Ahmad, a sophomore computer science major at U.T. Austin, had hoped to take an elective course in computer security this semester. But when she tried to sign up during early registration in November, the course was already full.

I know this doesn't refute the point the article is trying to make, but it doesn't seem that unreasonable to me that an underclassman might not get into a highly sought after elective. A lot of the "fun" electives when I was in school were little passion projects taught by one professor for one or two small sections a semester (or maybe only one semester per year), and while I agree it sucks that not everyone can take the classes, I wouldn't want them to die out because of complaints along the lines of "if you can't accommodate everyone, don't offer the course". Not that the article is saying that should be the case, I just worry that too many complaints about this kind of thing just puts pressure on the good professors who put enough effort into a class that a bunch of people want to take it.

<comment><USER3> I had to write a script to constantly monitor my school's class scheduling system to get into a couple of classes. It was an interesting script because the system was an IBM 3270 style mainframe.

<comment><USER4> How did you test such a script?

I always thought about doing this, but since class signups only opened twice a year (once per semester), and that was the same time I needed to actually sign up for the classes, I concluded there would never be a time to debug and refine such a script.

<comment><USER5> I've written this type of script before - I didn't need too much in the way of debugging. Mine (similar to GP, it seems) didn't actually do the registration, just save the current state of known divs or even the whole page. Then it would send me an update if that changed.

So, I didn't need to debug what happens when the class shows "open" \- I just saved the div that said "closed" and sent myself an email/text any time it didn't say exactly that.

<comment><USER3> You could test it by having it sign up for undesirable classes like underwater basket weaving that had plenty of openings. The terminal interface was kind of gross to script, but the underlying data was pretty easy.

You basically had to just send the correct number of arrow key presses to get the cursor to the correct field, send the digits, and then send the enter key. Parse the data that comes back, and add the routine to cursor over to the "add course" prompt when it says there is an availability. The script was totally gross looking but it worked.

</comment></comment></comment></comment></comment><comment><USER6> "The university is looking to hire several tenure-track faculty members in computing this year, he said, but competition for top candidates is fierce. I know of major departments that interviewed 40 candidates, and I don't think they hired anybody."

That doesn't sound like fierce competition if they were able to interview 40 candidates... Did they give them all high-paying offers and they all rejected?

<comment><USER7> Competition must be fierce... at the level they want to pay.

<comment><USER8> 95K a year for a starting professorship... or 3.5X that in total comp in industry. Not a terribly difficult choice!

<comment><USER9> Starting professors make less at my alma mater...a lot less.

Since it's a public school you can find out how much each one makes - [https://www.newsobserver.com/news/databases/public- salaries/](https://www.newsobserver.com/news/databases/public-salaries/)

<comment><USER10> Dr. Falk at Chapel Hill pulling that phat $800K base salary.

Meanwhile, the random dude sitting next to me is making more than every single person that works at Asheville.

</comment></comment></comment></comment></comment><comment><USER11> This article is credentialism at its worst.

The best programmers I know are self-taught, because they have a passion for it. I know people working at minimum wage, never enrolled in college, who got decent programming jobs after a year or two learning CS on their own.

These people will always (I hope) form the core of the profession.

<comment><USER12> This comment is elitism at its worst. Even if you completely accept the validity of self-learning, there is still a place for formal education.

Some people can learn a lot about a complicated field on their own, but there are still plenty of people who would benefit from some pedagogical help.

<comment><USER13> Can't agree enough. I am a autodidact, and am still learning. And really every other week I wish I had a mentor/professor. Even though good books somehow covers up for no teacher. But, you can't just read thousand of books before solving a petty problem and there's where a Professor comes. They provide you with a distillation of years of work and experience. and not to mention the resources available for you at Uni

<comment><USER11> But your mentor can just be your coworker! That's how many professions have worked for a long time. I don't get where this idea that academia has a monopoly on difficult skills and knowledge comes from.

</comment></comment></comment></comment><comment><USER14> For all the people here that are downplaying the difficulty of getting into CS courses or degree programs please make sure to do some research. The article wades shallow in the details. It can be very difficult depending on the institution. Please see this comment brlow from a CS Professor about the difficulty of transferring into the Computer Science major at University of Illinois at Urbana-Champaign. As a former student who was getting into computer science concepts but not in the CS/engineering program, it was disappointing to learn learning that transferring into the program was basically impossible by the time I hit junior year and didn't have a _stellar_ GPA.

[https://www.quora.com/How-difficult-is-it-to-switch-to- the-C...](https://www.quora.com/How-difficult-is-it-to-switch-to-the-CS-major- at-UIUC/answer/Jeff-Erickson)

<comment><USER15> I transferred into CS just before junior year at UIUC. The next year they raised minimum GPA to like 3.6 and I've heard it's even higher now. This was 4+ years ago and we had overflow classes where they had lectures on a projector because we couldn't fit into the 400 person lecture hall.

</comment></comment><comment><USER16> Why do US colleges over-admit like this? In the UK you apply to do a computer science course, and they have 50 places or whatever for that course, and so they admit 50 people. You can't get into the college and then be told that actually it's full. If they do accidentally over-admit it's their problem to solve, not yours.

<comment><USER17> The US university system is quite unusual (I believe Canada also has a similar system): at the undergraduate level you typically don't apply to a specific program; all students are expected to take a variety of classes (confusingly called "courses"), only some of which apply to a specific course of study.

Domain-specialized classes become an increasing proportion of your overall classes after the first or second year (when you choose a major) though never 100%. So while the school can get some idea of demand based on what people put on their application form, typically what you put on that form has little to no impact on whether you are admitted and doesn't actually bind you to a particular program.

I actually think this is a pretty good system, and was glad my own kid chose a US university (which luckily we could afford) rather than the free university education he could have chosen in either of his mother's or my countries. The theory is that you can get a broad foundational education to prepare you for a variety of possible futures, and also that there is more to education than simply work skills. Of course the reality isn't quite as utopian. It also means professions like law and medicine require whole additional degrees.

<comment><USER18> I don't know about other countries, but for non-professional degrees in Sweden a program is essentially only a guarantee to be able to take certain classes. Otherwise you can take whatever courses you want, at whatever school you want, as long as you in the end fulfill the degree requirements. Which usually means half your bachelors are credits in the same subject.

<comment><USER18> Idiots need to stop downvoting, the comment is entirely correct. You can read for yourself e.g. here [https://www.uu.se/en/students/degrees-and- careers/degrees/le...](https://www.uu.se/en/students/degrees-and- careers/degrees/levels-and-degrees/) , [https://www.su.se/english/education/qualifications- degrees/r...](https://www.su.se/english/education/qualifications- degrees/requirements) , [https://www.lunduniversity.lu.se/sites/www.lunduniversity.lu...](https://www.lunduniversity.lu.se/sites/www.lunduniversity.lu.se/files/degree- requirements-lund-university.pdf)

<comment><USER19> Complaining about voting breaks this site's guidelines. [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

<comment><USER18> The rules states that you shouldn't comment about voting because it makes boring reading and doesn't make a difference. But it is both informative and does make a difference if you add new information, which I did. If the moderation team wants no comments about voting at all, they need to fix the issues of undue voting or change their reasoning. Until then I am going to act in the way that I think is best long term for a productive discussion. I don't have a problem people voting down an opinion, but when something is factual they should be called out on it. Because the people who do that are destroying the site for everyone. I don't see what your comment adds however, which should be the first rule of posting.

</comment></comment></comment></comment></comment></comment><comment><USER20> I made an account just to comment on this link as I have personal experience in the matter.

I graduated from a relatively good school with a degree in Computer Science, yet wasn't admitted into the major until 2 weeks before graduation. I spent my entire college career in Computer Engineering while taking Computer Science courses and (thankfully) was able to complete the curriculum without actually being a part of it. I lucked out as at my school Computer Science isn't locked down like many of the other engineering majors, so anyone can take a CS course as long as they meet the pre-reqs. It would be an understatement to say the experience was harrowing.

<comment><USER21> That's so strange. If there's room in the classes (as appears to be the case), why limit the number of majors?

My school (UVA, in the late-90s) already had recently converted Computer Science as a limited enrollment major to get around this problem. Declared CS majors had preference for CS courses. It wasn't quite so bad that others were completely locked out, but if you weren't declared, you had to be quick to register and might not always get into fun electives (the core courses were usually larger and easier to find a seat).

Since that time, they've actually added a second CS major. They now offer the original BS in CS through the engineering school. And a BA in CS through the college of arts and science. The two primary differences being a foreign language requirement for the BA students, and a heavier emphasis on math and general engineering in the BS program.

<comment><USER22> Very interesting! Early 2000s UIUC had it reversed - the BS was "practical CS" and the BA was highly mathematical/theory based.

Then again, despite being a top 5 program, it only received accreditation while I was attending.

</comment></comment></comment><comment> cs-holder Since when is being a software engineer a "high-status" job, as mentioned in the first paragraph? Most people would consider a non-washed out doctor or lawyer (which is expensive and difficult to achieve) as having higher status than pretty much anyone working with a CS degree, unless they are a successful founder or went into investments. Besides medicine/law, young people with some degree of privilege and ambition seem to go into banking, private equity or management consulting still. If they have a CS degree, they're doing something closer to the above with it, not being ads CRUD engineer #3445. Everyone working for a for-profit company as a software engineer and even founders and VCs are basically dancing to the tune of one of these people holding the purse-strings. Is this wrong or do I just have a chip on my shoulder about this?

<comment><USER23> If by lawyer you mean partner and by doctor you mean a practicing surgeon, both of those are pretty far into their careers. It's not very fair to compare them with an entry level engineering job.

<comment> cs-holder By lawyer I meant either hired at big law or running a profitable practice, by doctor I meant made it into residency. This is only one, narrow dimension of "high-status", but still. Newspapers get things wrong all the time.

</comment></comment></comment><comment><USER24> While the article bemoans these programs becoming restrictive, it is ignoring a major reality. Let's take a person. This is the person that might end up getting 'weeded out' before they've even gotten their foot in the door. They probably have 0 or near 0 background in anything related to computing. They similarly likely have negligible background in anything related to science/engineering/mathematics. And keep in mind we now live in the era where there are a million free resources online (as well as compilers/etc) meaning the cost of doing any of this is practically 0, so they've generally _chosen_ to never pursue any of this.

Let's take this person, John Doe, and imagine he gets accepted to a computer science program at a well regarded university. The majority of people in his class will fail/drop out of the program before graduation, regardless of background. How likely is John Doe in particular to make it through the program? I don't know the exact number, but it is going to be _extremely_ low. What these 'barriers' do is not only save people from wasting their time, but also make room for people who stand a better chance of making it through the program.

And furthermore rejection is hardly some death sentence. If somebody genuinely wants into the program then they could take independent classes at a community college, take remedial non-major classes and demonstrate excellence, or any of a wide array of other options that could then be segued into acceptance next year/semester. And this doesn't even necessarily have to slow them down. There are so many core non-major classes required that you can get those out of the way and ultimately end up graduating in about the same time as if you were accepted to begin with. Imagine getting your calculus, linear algebra, physics/chemistry/... pick, etc stuff all done in your freshman year. That would've actually been AWESOME to have been able to have your schedule packed with nothing but CS classes and maybe a few softball liberal arts requirements for your later years.

<comment><USER25> > The majority of people in his class will fail/drop out of the program before > graduation, regardless of background.

Really? That sounds like a huge failure of the system, especially since they've gone into debt for that.

<comment><USER26> It's not a failure of the system; students are, increasingly often, mistaking universities for diploma mills. Some universities gradually acquiesce, others hold their ground.

The universities that maintain their standards for graduation will typically have droves of students dropping out, because there are droves of students who do not put effort into learning the material.

</comment></comment></comment><comment><USER27> Georgia Tech's online Masters in CS appealed to me for this very reason. Classes generally seat 300-700 and limited by the number of TAs they can hire. There's a fair chance of getting into popular classes since their not limited by the dimensions of a physical room.

</comment><comment><USER28> My school, Purdue, has handled the surge pretty well, primarily by being very accommodating towards increasing capacity (when CS majors are involved) and severely restricting non-major access to CS-major classes.

For the lower level core classes required of all CS majors, space is basically guaranteed for CS majors. If there's not enough seats, capacity will get increased to accommodate the students who need to take the class.

In the upper level classes, capacity will generally be increased if needed. Sometimes, there's a handful of seats (1-10) open in the less popular class at the beginning of the semester.

During registration (which occurs two-thirds of the way into the prior semester), only CS majors are allowed to sign up for CS classes. All other students (including CS minors) are required to submit a request which will be decided on a space-available basis the week before classes start. Those requests are only granted for students who have taken <=5 CS-major classes. There's a very specific sequence that CS majors usually take the core classes in. The semester a CS major would take a core class if they're on schedule is called a "peak semester". Non-majors are completely barred from taking those core classes during their peak semester.

</comment><comment><USER29> Isn't CS teaching the kind of thing that ought to be able to scale?

There's no other subject that's as well covered on the internet; nothing in an undergraduate course isn't public knowledge. There's loads of video lectures these days.

And the coursework is incredibly scalable too, in addition to being similar to what people actually use in industry. My brother did CS at an Ivy, and they were just pushing repos to a server, and the UT software would check you'd done it properly.

Couldn't you just let everyone enroll, then make sure they do their practicals?

<comment><USER30> Every topic has plenty of literature published. Scantron was founded in 1972. Self-directed learning has always existed. CS isn't special.

A bachelor's degree once meant more than passing a sufficient number of tests. Now that everyone treats it like a ticket to employment, it barely even means that.

<comment><USER31> I would agree, that CS isnt special here, its something common to at least STEM. And personally I dont know why the first 1 year isnt optimized for that. I dont think for example, that there is any reason to teach Math 1 for CS every semester with a Prof in a room limited by how ever many students might fit in. Its simply basic knowledge, that just doesnt change but that you need to know as a prerequisite for understanding later stuff. There is absolutly no reason to waste the time of Professors, or students for that matter, on that. Instead of making admission to college dependent on prior work, why not simply provide the necessary books and film it once. You learn the fundamentals yourself. Admission would be a lot fairer, we wouldnt waste an incredible amount of time of Professors and they could in turn teach actually interesting stuff.

The whole thing got quite apparent when a former roommate of mine studying mechanical engineering asked his father to help him study for a first year course and they figured out, that his father used the exact same literature in his college days as my roommate did at the time. The content hasnt changed, yet we keep throwing time at manually repeating it or going even as far as reinventing it with everyone writing their own script on the topic.

</comment></comment></comment><comment><USER32> I had a professor mention that during the last bubble (circa 2001), they had dedicated an entire building to the EECS department. Shortly thereafter, the bubble popped, enrollment collapsed and the EECS department went back to just the hacker type. It seems we are in another one of those cycles.

Anecdotally, when I was in university around 2012, I noticed that the same people who would have gone to medical or law school, abruptly change their paths to CS. When I started hiring people, I noticed the same trend in resumes.

<comment><USER9> Yup. I know a lot of smart people who are good at _everything_ starting to enter CS a few years ago at elite institutions like Harvard and MIT.

In all honesty, I much prefer them to the "I want to code videogames" crowd that made up a big chunk of my undergrad class.

</comment></comment><comment><USER33> If CS is so popular right now, how can it possibly command high pay by the time these people hit the job market? Do they all expect to compete against each other for high paying positions? How is that a good bet? Do they expect that there will be a ton of jobs that will all pay well?

<comment><USER34> There's an information delay that causes these trends. Remember that the people making decisions on their college majors are 16-18 year olds. They're basing these decisions on $$$. The university encourages these decisions because of $$$. The new students aren't looking at the job market and recognizing that they're pushing it towards a glut (as a cohort), as individuals they're making a sound decision in that moment with the incomplete information and lack of forethought typical of someone that age.

Of course, that lack of forethought isn't exclusive to them. You see the same behavior in other markets. Today I see that someone has developed X and is making money, but the market isn't captured (lots of growth potential). So I decide to make X (sound decision on what I know). However, 98 others also make the same decision at about the same time. By the time we all start shipping X we've flooded the market and now it's not profitable (getting too small a slice of the whole, or competition drives prices too low). I'm trying to recall the precise term in systems theory, "bounded knowledge" maybe?

EDIT: "Bounded rationality" was what I was trying to recall. It's useful in a number of fields, I came across the term (proper, the concept wasn't new to me) in studying systems dynamics.

<comment><USER35> I've talked about this with friends – is CS a gold rush right now? I'm sure with the younger generation being fed that it's a cheat code to make money the market will flood and wages will be driven down. Or, web dev jobs will be flooded and proper system design jobs will stay the same since they have such a high barrier of entry? We'll just have to wait and see.

<comment><USER36> It probably is to some extent, though computing skills are becoming so important that it might take a while for graduates to really feel the crunch.

</comment></comment></comment></comment><comment><USER37> So now there are _three_ hard problems in computer science.

<comment><USER38> Getting into class, naming things, cache invalidation, and off-by-one errors?

<comment><USER39> 4?

<comment><USER40> > and off-by-one errors?

<comment><USER39> yep, that was a whoosh

</comment></comment></comment></comment></comment><comment> tyler- Some universities rank those that are majoring in CS higher up in the registration chain, than those taking it for elective, those that are minoring in CS and those that are returning back to school. This means multitudes of students face difficulty in getting into their 100 & 200-level courses. At my school it isn't uncommon to have three sections of 300 students each in the 101 class and 300+ people vying for limited seats in the 200-level class. One of the sophomore level classes expanded their seats to nearly 500 people, but that doesn't solve the problem of getting into the upper division courses that are capped at 150 people. Schools are leaving out a large population of students registering for these courses, which may include first generation students, women and minorities. Even the 100-level courses can nearly be impossible to register for at this point.

<comment><USER41> There is also a factor with lag in budgeting. When I first started computer science at my school it was a smaller department (maybe 2-3 intro cources of 50 people). When I was a JR, my department didn't have the budget to put out a off schedule OS course. The budget was consumed by 13 intro courses.

As I was graduating, my program not only had 10-13 intro courses but had 4x as many electives as it had when I started.

<comment> tyler- Budgeting is an issue with my school as well. Our school is understaffed and has been opening up positions for new faculty hiring, including hiring teaching only positions (where they hire PhDs for such positions, with renewal contracts).

I've also heard of the idea of charging a departmental fee to become a CS major, similar to the idea that certain engineering departments have such fees. The idea here is that this fee would go towards the department but allow the student access to things like hacker spaces and or other resources that everyone else in the school would be presumably excluded from. A lot of things are trying to be figured out to address this issue.

</comment></comment></comment><comment><USER42> Isn't this a problem of too much coupling between credentialing and education? People aren't seeking to sit in a room full of 400 people through a lecture given by a certain professor at a certain time. They could probably find the lecture video online and watch it whenever and however frequently. They are only seeking the stamp of approval from a well respected institution. Assessment is not the same problem as education. Even though online education is getting some traction, it seems as if employers (and parents!) can't give up obsessively indexing much on traditional multi-year lecture-driven university education.

It's ironic that university engineering (especially software) departments teach modularization, decoupling, distribution, reuse, etc. that makes possible to scale like Google, Amazon, etc, but fail to apply these learnings to themselves.

</comment><comment><USER43> The hard part of computer science is the staggering complexity, the abstraction, the language/framework/library learning fatigue, the stress of trying to deliver on overoptimistic deadlines. Getting into a class is nothing in comparison to these actual challenges.

</comment><comment> tyler- Another idea to retain or hire faculty: let them have dual enrollment at tech companies and universities. Not sure if this is a good idea, or if it works. But I'd certainly be interested in studying the outcomes of it. Potentially could cause a conflict of interest in motivation of academic research vs industry driven research to profit the company, or even be used as a way to fast-track students to said company. Not that these things are inherently bad, but such decisions could have undesired outcomes for the universities that do this. But could be an idea worth exploring. Or, universities could become more competitive with salaries.

<comment><USER21> I had several classes taught by adjunct faculty who had "day jobs" in my years at UVA. Although they were all in economics, not CS.

So, it can work. But, you need a good supply of local professionals with the aptitude to teach. Probably not too hard for entry level courses, but 3rd or 4th year courses are likely harder to find suitable adjuncts. I'm sure I could teach CS101, but no way could I teach a senior level OS class.

</comment></comment><comment><USER44> This presents a more interesting problem than the article realizes. Computer Science has long suffered from overstuffed first year courses.... but only first year. By the second year, the vast majority of students have changed majors or otherwise left the computer science field. With even greater overcrowding of first-year courses, it probably makes it even harder for a person earnestly interested in computing to get in. At least when I attended school, every single person who gave their reason for choosing CS as 'I heard there was good money in it' was gone by the 3rd semester. I'm not entirely sure, but I've always suspected this might be due to the fact that while you can BS your way through an essay, you can't really do that with a compiler. Either that or a fundamental psychosocial resistance to hard-line logical thinking.

In any case, perhaps they should factor this in somehow and do a bit of preparatory work to give potential students a real sense of what the work and subject is actually going to be like before they fill up the first year courses and just waste everyones time before dropping out?

</comment><comment><USER45> Why the emphasis on recruiting new faculty to teach undergraduate level computer science courses ? Does the material genuinely require the input of a professor? It seems that universities/colleges are experiencing short-term shortages of teaching personnel that can readily be recruited from other sources without necessitating hiring new faculty.

<comment><USER46> In my university a professor isn't usually newly hired for undergraduate level CS course teaching- but the university doesn't want to hire a non-phd to be teaching undergrads. It's not a good look for a university to be hiring non- phd bearers for its teaching positions. However, CS PhDs can (relatively) easily go into industry or tenure-track dependent on what their research was about, so there's not many PhD people who are willing to take a teaching position.

</comment></comment><comment><USER47> I'm very curious to see the number of people start as CS and drop vs the number of people who end up as CS. I know at my school there's a lot of people who come in wanting to do CS but end up dropping and a decent amount of people who end up in the CS major either via other STEM majors or just randomly.

Because of this churn, the intro classes need to be a lot bigger than the rest, simply to accommodate both sets of people. And really, intro classes are the most important part of the CS degree, for motivating people, for teaching the practice of programming and for the skills that you'd actually use on the job.

One potential solution is to just not hire research faculty for intro classes. While I do kind of believe in having actual professors teach undergrad classes, if schools are struggling to hire PhDs, why not look at non PhD's? It's not like having a PhD helps with teaching intro classes. If anything, it probably hurts.

<comment><USER48> At my average small-to-mid-sized state school in the midwest, a typical CS drop rate from day 1 to graduation was ~3/4 either switched majors (mostly to business majors) or dropped out of school entirely. Technically it's probably even a bit higher than that because this is net of people switching into CS. Not sure how students who transfer schools are tracked.

</comment></comment><comment><USER49> Meanwhile, at community college, a place with NO admission standards except a high school diploma, enrollment numbers are down, down, down. How do I know? I teach at one. And I used to teach at a different one, WITH TENURE, but we didn't have enough students so they let me go. A Merry Christmas that was.

</comment><comment><USER50> > Some universities now require incoming students to get accepted into > computer science majors before they arrive on campus — and make it nearly > impossible for other undergraduates to transfer into the major.

I was slotted into an adjacent major (applied for CS, got slotted into CSE) when I went to undergrad at UCLA, and had to demonstrate grades etc and apply to move into my desired at a strategic time (after enough of the cohort in my desired major had switched away to other majors). This has definitely happened before.

</comment><comment><USER51> I got so lucky when I did an internal transfer to CS at UT Austin. I was an economics major and wanted to give CS a try. At the time (~2013) all I had to have was a 2.5 gpa and sign a transfer document.

The next year the department exploded and kids with 4.0s and previous internships were getting denied. This was also the first year with the new Dell-Gates Computer Science building. I didn't have a class in that building until my Senior year!

</comment><comment><USER52> > It can also favor male students — because women on average are less likely > to have taken a computer science course in high school.

How is that the school's fault?

<comment><USER10> Step 1: frame it as an injustice

Step 2: worry about the details later

</comment></comment><comment><USER53> We appear to have a 20-ish-year boom/bust cycle in CS enrollment; Eric Roberts (and some others in CS education) have been working on this for a while; there's a ton of resources at [https://cs.stanford.edu/people/eroberts/ResourcesForTheCSCap...](https://cs.stanford.edu/people/eroberts/ResourcesForTheCSCapacityCrisis/)

<comment><USER54> I think this is a little different. American schools now court more foreign students than ever to populate these programs. Domestic students that would otherwise go into EE or CE have fewer job prospects compared to 20 years ago and are better off in CS too. Previous booms were more faddish. Now it's basic economics.

</comment></comment><comment><USER55> Interestingly I went to an okay state school. I remember when I first transfer from college to complete my computer science. I wanted to take 4-5 classes of CS to get a ahead, but only two classes were available everything else was already filled.

I literally had sign up for classes as soon as registration was open to graduate, otherwise I would not get into courses required.

</comment><comment><USER9> I'm not sure if I should be glad my school didn't have competitive admissions or disappointed that it limited my career trajectory

</comment><comment><USER56> I wonder to what extent the barriers of entry for CS programs filter out some of the best future software engineers. Being laser-focused on getting all the homework done and maintaining a 4.0 GPA is generally not the same kind of personality that results in creative thinking and problem-solving skills.

</comment><comment><USER57> I'm reading part of the problem is getting good teachers, because the tech industry wants them as well. Would the tech industry be willing to cooperate with universities and help pay for teachers / make them available to give classes? It's their future employees after all.

<comment><USER41> At my school almost all of the electives where taught by people in industry.

They either taught a 2 course long elective and offered internships at their company during the second course (Hey you spent the last 5~ months training these people and no you know who is a good worker), or they taught one elective and offered internships to the students they liked at the end.

Their companies paid them to do this for... obvious reasons.

</comment></comment><comment><USER58> Whoa. Don Fussell was my thesis advisor at UT Comp Sci a lot of years ago. That was back before the Gates building, when Michael Dell was still selling PC clones from his dorm room.

Good times.

</comment><comment><USER59> Any teacher will work. The schools are creating an artificial floor of requirements that have nothing to do with students leaning the subject matter.

</comment><comment><USER60> very stressful to try to teach under these conditions! the logistical problems of teaching and consistent grading grow worse than linearly with the number of students, unfortunately. if you want to have 500 people graded on the same curve, it's a lot more work to make sure they're all treated consistently and fairly.

</comment><comment><USER61> A big problem is that the idiotic department lets softmore and juniors sign up for senior courses.

</comment><comment><USER62> Huh, maybe it's time to start teaching again.

</comment><comment><USER63> Muh fun class. Muh world class university. Muh.

</comment><comment><USER64> Getting a weird sense of deja vu... colleges were oversubscribed for CS just before the dotcom bubble burst too.

<comment><USER65> Yeah I remember Universities desperate to attract people to CS in 2003-6

<comment><USER66> And before that, in the late 90s, due to the millenium bug goldrush. Now it's 'AI'...

<comment><USER67> I've spent a couple of weeks looking at resumes from people applying for a web development position we have open and half of them mention machine learning or AI.

</comment></comment></comment></comment><comment><USER68> I was interviewed for five mins on the phone back in 1990. They asked if you programmed your own computer at home. Not sure what they would say if you said "No."

<comment><USER69> This wasn't particularly true by 1990 but early in computing history, most engineers didn't have any computer in their house; being expensive and all. Maybe they thought of it from that angle. There'd still be a lot of older engineers who may not have gotten on board the PC revolution that began in the late seventies.

<comment><USER68> I came in through UCCA via clearing.</comment></comment></comment>


What Apple is doing now with their Apple Software Update on Windows is wrong - <AUTHOR> http://john.jubjubs.net/2008/03/21/apple-software-update/

<comment><USER2> This is coming from a Firefox developer, Safari's main competitor. Sounds like someone is a little bitter and/or scared.

It's a great (though definitely shady) move by Apple. A few people will complain, sure, but they'll gain potentially millions of new Windows Safari users from the tens (hundreds?) of millions of Windows iTunes users.

Additionally, I would guess that most of the people switching to Safari because of this will be IE users, not Firefox users. Given the choice between a user using IE or Safari, which would you prefer? I think even Firefox fans would agree Safari would be better for everyone (except MS of course).

</comment><comment><USER3> Apple's been doing similar things for a while now. Apple Quicktime comes with an update that tries to get you to install iTunes as well. I don't want iTunes. I have 2 options, install the update for Quicktime, and install the update for Quicktime+iTunes. Even if there is no update for Quicktime, the update box will jump up and give me only one option: Quicktime+iTunes.

I deleted Quicktime.

</comment><comment><USER4> And why does Mozilla Firefox come with Google as a default search engine? Oh, could it be because they're getting paid every time someone uses search through Firefox? Or what about this deal: <http://tools.google.com/firefox/toolbar/bundle/>

Kettle - Pot - black.

As a web developer, I'm all for displacing IE as default web browser! Getting a site to perform/look good in IE has given me so many headaches. I'd be delighted if people started using a browser that's standards compliant.

</comment><comment><USER5> I don't think Apple went far enough. I wish they'd offer the ultimate bug fix: A pre-checked box marked "Mac OS X".

If the user absolutely insists on having a choice, throw in an "Ubuntu" setting. ;)

</comment><comment><USER6> Has Steve Jobs ever shown even an inkling of caring about whether outsiders think what he's doing is wrong or right?</comment>


What I learned from getting my side project acquired - <AUTHOR> http://www.ianww.com/blog/2013/10/08/lessons-from-getting-my-side-project-acquired/ <comment><USER2> This post reminded me of pg's advice for how to get startup ideas. Compare:

"I have 5+ side projects. I'd like to make businesses out of them, but I often lose interest after a couple weeks. Asterank was the only project that I've stuck with for over a year, and it paid off even though there wasn't a clear path to monetization... It's hard to predict what will be valuable as a side project. For hobbies, working on what you're most passionate about is the best way to get a return." [1]

"Live in the future and build what seems interesting. Strange as it sounds, that's the real recipe." [2]

1\. [http://www.ianww.com/blog/2013/10/08/lessons-from-getting- my...](http://www.ianww.com/blog/2013/10/08/lessons-from-getting-my-side- project-acquired/)

2\. [http://paulgraham.com/startupideas.html](http://paulgraham.com/startupideas.html)

<comment><USER3> I still have to figure out how to stick with something for over a year. :(

<comment><USER4> find collaborators. If you can't, that's usually a sign the project is not interesting/challenging enough to keep YOU working on it for a year.

Don't just ping your friends because they're your friends, collaborators should share the passion that got you to start the project. Sometimes that's best found outside your normal network.

</comment></comment></comment><comment><USER5> But he did not treat it as a throwaway side project - he mailed, he built community and products, he pushed for a year.

That massively increased his chances of a profitable outcome - my lesson here is even treat your side projects as in need of proper marketing

<comment><USER4> That's the difference between a 'hobby' and a 'side project.' One is a professional job you're just not paid for (yet). The other is something you happen to enjoy doing, on occasion.

</comment></comment><comment><USER6> This might be a stupid question, but what is the point in acquiring a side project that is MIT-licensed? Was it just a means of acqui-hiring?

<comment><USER7> The license on the code doesn't include trademarks on the name, or copyright on marketing materials, branding, etc. Depending on the project, the bulk of the value might actually be in that stuff and not in the code itself. Don't underestimate how valuable "brand recognition" is.

Also, and while it might not apply in this specific case, a startup / side- project that has paying customers will have value in terms of acquiring the accounts and the relationships, even if the code is open source.

</comment></comment><comment><USER8> Interesting project.

I had similar hobby project: MapDB database engine. It started as simple data store for astronomical application. I wrote first patch for JDBM (old name) while observing at Atacama desert 4 years ago. I never advertised much, but now its my full time job and it generates decent email traffic.

</comment><comment><USER9> Thanks for this post, very interesting. Personally, I badly want to get out of the software / "tech" industry, and get into the space industry some how.

I have no idea what I'll do, how I'll do this, or what I can offer. Only time will tell.

<comment><USER10> A software job in aerospace (avionics or analysis) can be worse than a pure software position, because your managers understand your work even less. Also, there are huge gulfs between reading about X, studying X at the university level, and working in X industry. I see a lot of people entering aerospace programs with dreamy ambitions from Reddit, Neil Degrasse Tyson, SpaceX articles. Then they can't hack the physics and math and 200 page design reports. It's a bit like kids going into CS because they like playing video games.

Most aerospace jobs are pretty Dilbert/Office Space. At the megahuge defense contractor where I used to work, we had Office Space characterizations for many of our managers/coworkers. If you ever want your space dreams dashed, read Glassdoor reviews. We just hired an ex-SpaceXer who loved the mission but hated sacrificing his life as a 20-something to working 70-hour weeks.

<comment><USER9> That's exactly what I imagined. Especially since the entire industry basically works with the government.

I was thinking of working for or at one of space startups: SpaceX, Blue Origin, Planetary Resources, Virgin Galactic, and the mars one foundation.

The truth is, my goal is to eventually start my own company.

<comment><USER5> Can I suggest to just start - there are going to be a gazillion suppliers to SpaceX etc - if you want to be in the industry, you can be in.

If you want to put your stuff in space or even orbit, may I suggest looking at micro satellites - there is going to be a vast number of things people will want doing that are going to be within the capability of a large lump of silicon. And the big boys will happily take a dozen iphone equivalents and put them in LEO in passing.

That to me is the growth area

Edit: sorry seemed a bit off dumped the hobbyist reference - just thinking of the issues of orbital speed - until / if orbital speed is achievable for an cluster of iPhones dangling from a weather ballon, then _everything_ depends on huge great rockets. And SpaceX and it's ilk, for all the impact, is only expecting to see a halving of launch costs. It is going to remain a big government big industry game for a very very long time.

<comment><USER11> I like this advice. I worked with someone who built an aerospace company around an ultra-reliable actuator design he developed with a friend. They had put hardware on dozens of missions, including some inter-planetary missions, before they were acquired a few years later.

A lot of the advice he gave me centered around understanding how supplier contracts are granted / won, and the importance of building relationships and a reputation in the industry. The biggest thing that stuck with me, though, was that it was even _possible_ for a startup company to put hardware in space, let alone mission-critical stuff.

So, I second the "just start" suggestion. Maybe I'll take the same advice myself some day.

</comment></comment></comment></comment></comment><comment><USER12> Lesson 7: You need to stick with it

I'm trying to do this right now. I challenged myself to do 100 consecutive days of commits to my side projects and I'm currently at day 94. Unfortunately, my private repos don't show up in my streak unless I'm logged in, but most of them are here: [https://github.com/jonstjohn](https://github.com/jonstjohn) .

I've still bounced between about 3 projects in the past 3 months. I struggle with what seems like it should be the last 5-10%, although I'm looking at forcing myself to launch even if I'm not happy with everything.

<comment><USER13> If you want to make the challenge even more intense, you can try a service like Beeminder that'll charge you if you don't commit every day. It can hook into Github, I believe.

[https://www.beeminder.com/gitminder](https://www.beeminder.com/gitminder)

The founders actually use this themselves, making a mandatory UVI (user- visible improvement) every day, inspired by pg's advice "startups rarely die mid-keystroke... so keep typing!" See here for more on that: [http://blog.beeminder.com/rails/](http://blog.beeminder.com/rails/)

<comment><USER12> These are great! I think I've seen Bee Minder before. Honestly, it has helped me out tremendously to just keep committing. I have days where I commit some really trivial bit of code, just to keep things going, but first thing in the morning I'm thinking about what I plan to commit that day. It keeps me focused on my side projects.

</comment></comment></comment><comment><USER14> _If no one notices your project but it is genuinely interesting, just blog about it until they notice. I posted Asterank Discover on HN and it got 5 points. Then I wrote a blog post about it that made the front page. Go figure._

I think this might be that people tend to prefer reading about stories on products rather than a product landing page ?

</comment><comment><USER15> Congrats Ian, and a huge thanks for blogging your experience building AsterRank. You definitely helped some friends and me out with a space game we're working on!

</comment><comment><USER16> Q: is it necessary to incorporate a side project like this from the beginning ?

I'm planning to found a company that will build several products. If one of them achieves traction and revenue growth, I'm wondering if there are any issues in making it easily acquirable. I suppose shared code is an issue.

<comment><USER17> If you want it to be easily acquirable, the only thing that matters is simple ownership. If you as an individual own everything, there's no need to incorporate. You may want to incorporate for tax, liability, or employment reasons, of course; but you can usually wait for those to be a real issue (income tax treatment isn't a huge deal if you have no income)

</comment></comment><comment><USER18> Thank you for the post. It is always helpful and inspiring to hear a another's success story.

</comment><comment><USER19> Funny I'm listening to Peter Diamandis give a lecture in the next room over as I read this.

</comment><comment><USER20> you earned a point from me, even if I have no idea what it is you do (ok, I know you catalog space stuff)

most of all this little guide you posted is very transferable, thanks a ton.

</comment><comment><USER21> thanks Ian. learnt a lot from your article.

</comment><comment><USER22> Blog about your technical issues! Yes!

</comment><comment><USER23> Congrats Ian. Perseverence is key!

</comment><comment><USER24> What was the acquisition price (range) ?

<comment><USER25> I was wondering the same. My guess is it's "Enough to finance the next project" rather than "Enough for a new life" but Im' interested in the outcome.

Good story no matter what!

<comment><USER26> Sounds like the author was acquired as well: "I've accepted a Software Engineer position at Planetary Resources starting in November"

<comment><USER27> I do believe getting a position at Planetary Resources itself is worth having done the project.

<comment><USER25> Indeed. Really the story could be, "How my side project landed me my dream job."

</comment></comment></comment></comment></comment><comment><USER28> Thanks for the vitamin C shot of inspiration. I'm working on a project to dramatically diminish the need for animal-testing in science experiments[1], and the process has been humbling. I know little about science.

As you recommended in the article, I've been speaking with scientists from around the world (and anyone else who will listen) and learning as much as I can, as fast as I can.

Zen Master Shunryu Suzuki was right, "in the beginner's mind there are many possibilities, but in the expert's mind there are few".

[1][http://selfexperiments.com](http://selfexperiments.com)

<comment><USER29> "I'm working on a project to dramatically diminish the need for animal-testing in science experiments"

That sounds straight up crazy since animal-testing is an improvement on human testing but big ideas are always intimidating.

</comment></comment><comment><USER30> Love the project! And of course, for those side projects that do get abandoned, you can find them at [http://sideprojectors.com](http://sideprojectors.com)</comment>


Zip Files All the Way Down - <AUTHOR> https://research.swtch.com/zip <comment><USER2> i am reminded of a Zip Bomb..

[http://en.wikipedia.org/wiki/Zip_bomb](http://en.wikipedia.org/wiki/Zip_bomb)</comment>


How 'artificial swarm intelligence' uses people to make better predictions - <AUTHOR> http://www.techrepublic.com/article/how-artificial-swarm-intelligence-uses-people-to-make-better-predictions-than-experts/ <comment><USER2> There was this article I read about crowd decision making, but I cannot for the life of me recall where this tidbit was in, but I found the conclusion interesting.

Essentially wisdom of the crowds works when the members have at least some knowledge of the underlying thing. The example I heard first was guessing the weight of a bull at an auction, where the averaged crowd estimate was incredibly close to the actual weight, more so than any of the local expert estimates. The Oscars cited in this article would be another example of something where members of the crowd have some knowledge of the event, and the aggregate knowledge may surpass expert knowledge.

But then there's the same kind of crowd predictions in things crowd members have little to no knowledge of, where things frequently deviate from actual results. Crowd expert systems will fail at things like medical diagnosis or aircraft maintenance which require high degrees of specialized knowledge the average person possessed little of. Applying them to systems like these results in horrible mistakes happening.

If anyone does recall the book or article this was in, that'd be neat, even though I think the point stands to a degree. Crowd intelligence isn't necessarily the panacea it is made out to be.</comment>


Top 30 Most Respected Venture Capitalists (infographic) - <AUTHOR> http://www.seekomega.com/2011/02/the-top-30-most-respected-venture-capitalists-infographic/ <comment><USER2> Not that I'm disagreeing with the list. I figured Fred Wilson would be higher on the list, and I'm surprised to not see Randy Komisar make the top 30 (or even the almost there), but wouldn't this list be skewed by those who are most active on social networks?

I noticed that Dave McClure was high on both sentiment and social, but is unrated on the funded... strange?</comment>


The Founding Story of Robot Turtles, Board Game that Teaches Programming - <AUTHOR> http://blog.play-i.com/robot-turtles-board-game-for-little-programmers

<comment> vezzy-fnord Logo: The Board Game?

I think you'd be better off just teaching them Logo instead.

<comment><AUTHOR> Haha, I don't think a 3-year-old would be able to learn Logo :)</comment></comment>


Iteration Without For, Foreach or While - <AUTHOR> https://functional.christmas/2019/7 <comment><USER2> I once interviewed for Google and got asked how to do this</comment>


Show HN: Hello Web Design, design fundamentals and shortcuts for hackers - <AUTHOR> https://www.kickstarter.com/projects/1868398473/hello-web-design-design-basics-for-non-designers/ <comment><AUTHOR> I'm the author, happy to answer any questions anyone has!

Also, here's the presentation I gave at View Source Berlin, which is a pretty good start to the information I will be going over in the book: [https://www.youtube.com/watch?v=lsPrhA_m6ss](https://www.youtube.com/watch?v=lsPrhA_m6ss)</comment>


"Viacom is not entirely opposed to sharing its content with others, if paid for it." - <AUTHOR> http://www.nytimes.com/2007/03/19/business/media/19viacom.html?pagewanted=2&ei=5088&en=6c8bb147e20f12a6&ex=1331956800&partner=rssnyt&emc=rss <comment><USER2> Viacom and their confused executives are doing everything they can to maintain the economics of scarcity that have driven their businesses for 50 years. Consumers will always choose choice, this effort is doomed.</comment>


Ask HN: Can you download your entire history of upvotes on HN? - <AUTHOR> <comment><USER2> I wrote a utility to do this:

[https://github.com/JD-P/HackerNewsToJSON/](https://github.com/JD-P/HackerNewsToJSON/)

<comment><AUTHOR> Thanks

</comment></comment><comment><USER3> Uhm, maybe I'm missing something, but:

>profile

>upvoted submissions / comments

?

<comment><AUTHOR> Was thinking more in machine readable format. Could write a script for this thought I would check if it has been done before

</comment></comment><comment><USER4> I haven't checked, but perhaps this is something that can be made using github.com/HackerNews/API ?</comment>


Debugging Serverless Apps: from monitoring invocations to observing systems - <AUTHOR> https://read.iopipe.com/debugging-serverless-apps-from-monitoring-invocations-to-observing-a-system-of-functions-578c2ef8b3de <comment><USER2> We've recently been publishing a lot of information about Cloudflare's serverless platform (called Workers): [https://blog.cloudflare.com/tag/serverless/](https://blog.cloudflare.com/tag/serverless/)

This blog on bootstrapping a Worker using Typescript shows how slick development on the platform is: [https://blog.cloudflare.com/bootstrapping-a- typescript-worke...](https://blog.cloudflare.com/bootstrapping-a-typescript- worker/) and we'll be posting more in coming days about how to debug on the platform.

</comment><comment><USER3> Identifying cold-starts is a huge win here, using something to keep your lambdas warm is important for user-facing functionality. That functionality alone makes a compelling feature.

<comment><USER4> I don't really understand this - if you need to 'keep your lambdas warm' why not just run them as a process?

There seems to be a lot of book-keeping and ritual for something which is supposed to just let you focus on the important bits of code, without worrying about how it runs.

<comment><USER5> If you're already "serverless" (or want to be), it's not that easy to just "add a process". Usually if you're running a process, you're maintaining one or more virtual servers, which can be a lot more operational overhead than a Lambda.

Having said that, I agree that there seems to be an inordinate amount of effort/thought going into keeping Lambdas "warm" (i.e. always running).

I think the prevalence of these hijinks indicates that AWS Lambda should consider adding a "keep running" option that ensure the particular function is always "warm", but costs a bit more.

<comment><USER6> Azure Functions offer an Always On option under a premium tier of Azure App Service but I don't know be that'd I call that just "a bit more", especially at scale.

Might as well containerize it and accept the overhead of some maintenance to ensure the lowest cost guaranteed availability and performance.

</comment></comment></comment></comment><comment><USER7> They could at least have a decent pricing. 299$ / Month for this is insulting knowing AWS X-Ray is built in Lambda and does it for Free.

Clearly I do not take any startups working in Serverless seriously if they don't have a serverless pricing themselves.

Serverless is not just Lambda. It's an entire philosphy and pricing model that goes with it . Here it's the exact opposite.

<comment><USER8> There's a free tier and we're happy to discussing pricing privately. Startups, individuals, open source projects are dear to our hearts and we want to make the product accessible to those that need it.

</comment></comment><comment><USER9> At least they could also have serverless pricing.</comment>


Discord – Free Voice and Text Chat for Gamers - <AUTHOR> https://discordapp.com/ <comment><USER2> how does this compare to mumble?</comment>