Graph Isomorphism Algorithm Breaks 30-Year Impasse - <AUTHOR> http://www.quantamagazine.org/20151214-graph-isomorphism-algorithm/ <comment><USER2> Graph Isomorphism in Quasipolynomial Time: [http://arxiv.org/abs/1512.03547](http://arxiv.org/abs/1512.03547)

</comment><comment><USER3> Look at this asshole, having a finite Erdos number and publishing solo ;-)

<comment><USER4> I think I understand the humor, but could you please explain so that I'm certain?

<comment><USER5> Your Erdos number is how many citation links you pass through to reach a paper by Erdos.

This author has (apparently) a nice tidy small Erdos number. To publish without co-authors denies those co-authors the chance to get (his Erdos number+1).

So clearly he/she is selfish and has the wrong priorities :)

<comment> s-phi-nl FWIW, Babai (the author) has a very small Erdos number: 1:

[http://www.ams.org/mathscinet- getitem?mr=584517](http://www.ams.org/mathscinet-getitem?mr=584517)

<comment><USER6> > _Babai (the author) has a very small Erdos number_

Let's quit beating around the bush: he has _the smallest possible_ Erdős number[1]. If you don't presently have an Erdős number, or wish to improve your Erdős number for bragging rights, co-authoring a paper with him (or any anyone with an equivalent Erdős number) is the best possible outcome. (Obtaining an Erdős number of one is sadly no longer possible.)

[1]: [https://en.wikipedia.org/wiki/Erd%C5%91s_number](https://en.wikipedia.org/wiki/Erd%C5%91s_number)

<comment><USER7> Smallest possible for living humans. One person, notably, had a lower number, but he is no longer with us.

<comment><USER8> It's weird that you're downvoted. Just to clarify

> Paul Erdős has an Erdős number of zero.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Previously posted and discussed extensively:

[https://hn.algolia.com/?query=Graph%20Isomorphism&sort=byPop...](https://hn.algolia.com/?query=Graph%20Isomorphism&sort=byPopularity&prefix&page=0&dateRange=all&type=story)

<comment><USER10> This article is worth discussing in itself, as it is very clear, gives a good sense of the situation, is easy to read and understand, and avoids the kinds of inaccuracy and solecism usually seen in articles about math.

<comment><USER11> Indeed. And the big news is that the paper is available today.

[http://arxiv.org/abs/1512.03547v1](http://arxiv.org/abs/1512.03547v1)

</comment></comment></comment><comment><USER12> > No one has ever found an efficient algorithm for an NP-complete problem, and > most computer scientists believe no one ever will.

I find these kinds of assertions somewhat misleading. There _are_ "efficient" algorithms for, one could say, "pragmatic variations" of NP-complete problems. Some only work on some subset of cases (perhaps most of the useful ones), or non-deterministic (but you run them enough times and get the right answer), etc.

<comment><USER13> This. MJD has a great bit on blanket statements about "NP-complete means hard":

        http://perl.plover.com/yak/12views/samples/notes.html#sl-24

Basically, you can often either settle for slightly suboptimal solutions, or ignore a few pathological worst cases. That said, I suspect that P != NP, and thought this was a good article.

</comment></comment><comment><USER14> Ok so the question is, while theoretically this is an important work, is it really worthy having a practical implementation?

(I remember something similar happening with "Primality testing is P" but the existing, non-P algorithms were good enough so people wouldn't bother using it except in specific situations)

<comment><USER15> No. As the author notes in the preprint, there are already numerous very fast, practical algorithms. This one is only asymptotically faster, and by itself it would probably be slower in real-world applications.

<comment><USER16> If it is asymptotically faster, then it is implied that there are problems the faster one can solve, that the other cannot, assuming finite time.

<comment><USER17> The claims you're making in this subthread are not precise enough to be correct. If you only allow a constant finite amount of time to solve a given problem, then aysmptotics guarantee nothing. An O(1) time could solve fewer instances than an O(2^2^n) time algorithm. It is also not true that the asymptotically faster algorithm "can solve more instances as the allocated time increases." These statements are only true if you add the phrase "sufficiently large" to them. So asymptotically faster algorithms can solve more instances as the allocated time bound increases, _provided that the time bound is sufficiently large._ But how large that "sufficiently large" needs to be is arbitrary, so you can't say that Babai's algorithm is practical without either precisely studying the constants involved in the algorithm (which Babai did to some extent, but omitted in the notation for clarity), or doing empirical analysis, which is unlikely to ever happen with Babai's algorithm.

<comment><USER16> The statement is correct.

"Sufficiently large" is implied and also not strictly necessary for the statement to be correct.

<comment><USER17> If it's not required then it's not implied, and unfortunately it is required. If you want to keep having serious discussions about this stuff I suggest you go read some more about algorithms.

<comment><USER16> You should be able to simply state the error in my statement then. Anyway, others disagree with you.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Is somebody able to explain in more detail what the "Greater metropolitan area" of P space means? I have a CS undergrad degree so I get what polynomial space is, just not sure about the quasi-p-space part.

<comment><USER19> Quasi-polynomial time is slower than polynomial time, but (much) faster than exponential time. Basically, if polynomial is O(n^c) and exponential is O(c^n), then quasi-polynomial is O(x^(log(n)^c); that is, n _does_ show up in the exponent, but it's some power of the log of n.

In theoretical terms, it's much closer to a polynomial problem than an exponential one.

<comment><USER18> Gotcha, that makes perfect sense, thanks for the explanation!

</comment></comment></comment><comment><USER20> I very nearly took Algorithms from this guy. Toughest professor (and grader) in the CS program, by far. He's quite a character, though.

</comment><comment><USER21> What happens with this one ?

Polynomial Time Algorithm for Graph Isomorphism Testing. [http://mt2.comtv.ru/](http://mt2.comtv.ru/)

Is this a hoax or has some substance ?

<comment><USER22> Earlier version was wrong [https://cstheory.stackexchange.com/questions/1064/polynomial...](https://cstheory.stackexchange.com/questions/1064/polynomial- time-algorithm-for-graph-isomorphism-testing), I doubt the current version has any substance.

</comment></comment><comment><USER23> How long until we start seeing this algorithm in Google interviews?

<comment> Ar-Curunir Very long, most CS people don't know any group theory.

<comment><USER24> Just a week or two ago I saw someone get downvoted for suggesting that many CS degrees don't include real analysis. I suspect that by now undergrad CS programs are all over the place, and I wouldn't dare make broad generalizations about the math content of a CS degree anymore.

<comment><USER17> I would, because I'm on the inside. There are even many CS degrees that don't require a course in algorithms. You have to remember that most CS degrees come from public/state universities, not Stanford and MIT. And CS students at public/state universities are largely mathphobic.

<comment><USER25> That's a very broad generalization. There are many public/state universities with amazing CS research and programs (e.g. UC Berkeley) that are very math- heavy.

<comment> Ar-Curunir As a student at UC Berkeley, students need to study at most linear algebra and multivariablr calc to major in CS/EECS.

<comment><USER16> No Boolean algebra, probability, or statistics?

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> Thanks for posting this. In the future, could you please add the algorithm to the title? This feels a couple steps removed from clickbait. No offense intended; it's just a suggestion.

<comment><USER27> > Babai has declined to speak to the press, writing in an email: "The > integrity of science requires that new results be subjected to thorough > review by expert colleagues before the results are publicized in the media."

Quoth the media ... Apparently unironically.

<comment><USER28> I'm okay with Quanta Magazine leaving out the irony; I can imagine the Engadgets and Buzzfeeds of the world would omit his response and draw their own wild conclusions regardless.</comment></comment></comment>


Ask HN: Has web development really become easier than 10 years ago? - <AUTHOR> The last 20 years doing consultency, building web applications, the time spend on frontend development seems to be explodong in complexibilty. Not so much feature wise, more technology wise. There is so much noise in that end of the development pipeline that I have a hard time understanding or really seing the value.<p>So many web applications seems to me to be filled with too much junk (packages, bundlers etc) without really adding value. <comment><USER2> Yeah, I came to about the same conclusion not long ago when reviewing the latest crop of frameworks at TodoMVC.com while looking for the "best" way to build new apps.

I ended up not being able to conclude what was "best" so I decided to look for the "easiest" way instead. That was a lot easier because it's a fluid approach.

While I appreciate the goals of a single page app I would never make that a requirement when designing one. I'll use it where it easily works and not when it doesn't.

There are countless ways to make an app but in the end productivity is what gets it shipped and pays the bills and the easiest way is almost always the most productive.

Right now jQuery and Bootstrap are probably the easiest way to build a front end and unless you really need something more it's hard to argue against not using them if productivity is accounted for.

That, of course, will vary with one's own experience. If you've spent the time learning how to use React or Angular you might be more productive with that, but I'm thinking probably not, or not much, in most cases. What you really may be doing is addressing efficiency issues and other problems you don't have, and possibly adding unnecessary complexity.

If your app ever gets to where it doesn't work for you because you have so many users it needs to be more efficient, then good for you, you've hit the big time and should invest in efficiencies appropriate to scale, but you may find that's not a problem, or not where the problem resides.

Software is no different than anything else when it comes to applying the "KISS" approach and the more complex the project the more important that becomes.

</comment><comment><USER3> Certain pockets will get better, which is natural over time in the tech community.

But then as some things get routine, new things pop up or focus changes into fancy UX, etc etc.

So the net effect might be a wash in terms of hours / investment, even though things that were hard 10 years ago no longer are.

</comment><comment><USER4> To be fair, I haven't been doing Web dev for 10 years, but I definitely agree that frontend development is incredibly time-consuming.

Especially if you're trying to build something alone, I find it really impractical.

IMO, not every Web application needs to be an SPA. Depending on the scale of your app, it might benefit you greatly (like if you're Facebook or Google, etc.), but often times you can get away just fine with server-side templating engines or otherwise.

<comment><USER5> > IMO, not every Web application needs to be an SPA.

Actually, it goes like this:

\- not every website needs to be dynamic

\- few dynamic websites need to be _applications_

\- and very few webapplications need to be SPA

Though it would be very boring (as nearly all work that is valuable), and thus we have proliferation of SPAs that present static text.

</comment></comment><comment><USER6> _...without really adding value_

My go-to example of why build tools are essential is subresource integrity hashing. If adding a hash was a manual process every time you had to deploy a new version of a site then no developer would bother, and the user's security would suffer for it. With Webpack (or any of its peers) it's a matter of installing an NPM module and adding it to the plugins configuration. That's it. That's a _huge_ amount of value for practically no effort. Writing new plugins is hard, but few developers ever need to do that.

I spent 3 days learning the basics of Webpack and I've never looked back. It's a _fantastic_ tool that any modern web developer ought to know.

</comment><comment><USER7> Well, we do things now that we didn't used to do, like write tests :) More is expected in the way of features, not in terms of the number of features but how they work. Imagine clicking a tweet from your timeline, then pressing Back, and being taken to the top of your timeline. It wouldn't be acceptable. But some thought and care has to be put into making that happen. Just one example but basically there are more concerns than there used to be.

<comment><USER5> > Well, we do things now that we didn't used to do, like write tests :)

We didn't used to _worship_ tests. We used to write them, mainly for detecting regressions. Perl's CPAN society developed whole standards around testing (ever heard of Test Anything Protocol?), and that was in the late '80s.

<comment><USER7> OK, but JS used to just be straight-up untested, except perhaps in end-to-end tests which even then would be extremely brittle. We didn't test, really.</comment></comment></comment>


Color Conversion Booklets [pdf] - <AUTHOR> https://convertingcolors.com/rgb-color-181_8_94.pdf <comment><AUTHOR> Today I added mPDF to [https://convertingcolors.com](https://convertingcolors.com) so you can get a beautiful booklet of every color page.

Including, color conversions, details, harmonies, previews, and CSS examples!

Just replace the file extension in the URL from "hex-color-FB0AA9.html" to "hex-color-FB0AA9.pdf". This works for all color formats!

I also integrated a button on the color pages to download the PDF directly.

Examples [https://convertingcolors.com/rgb- color-181_8_94.pdf](https://convertingcolors.com/rgb-color-181_8_94.pdf) [https://convertingcolors.com/hex- color-5BB1A1.pdf](https://convertingcolors.com/hex-color-5BB1A1.pdf) [https://convertingcolors.com/hsl- color-261_76_36.pdf](https://convertingcolors.com/hsl-color-261_76_36.pdf)</comment>


Ask HN: What happens to my legal digital media when I die? - <AUTHOR>

I've bought ebooks from Amazon.  I've bought MP3 files from various places.  I've bought videos from various places.
With CDs and DVDs and Bluray and dead-tree books I can just leave those to people in my will.
But what about the e-versions?  Can I transfer the licence to someone else? Or does all that stuff effectively die with me? <comment><USER2> Your content dies with you. Read the terms of sale at your favorite MP3/movie/book store -- you're granted a non-transferrable license for personal use of the files. That means you cannot transfer that license to your relatives.

@pwg: Whether the media has DRM or not just determines how easy it is to make copies, not whether you have legal permission to make copies.

</comment><comment><USER3> It goes away as you do, this all flows from when you liscensed the content instead of purchasing it.

Of course the startup I'm working on is to address this very issue, which is a legal/contract hack.

</comment><comment><USER4> 1) Buy only DRM free copies of electronic media; in this way your freedom to do what you wish with your electronic copy is not restricted;

2) Maintain your own data on physical storage media controlled only by you; this means your freedom to access your data is not restricted;

You can now transfer your data to your heirs when you die by transferring them the physical media, in the identical fashion with which you would transfer the physical CDs/DVDs/Blurays.

Doing anything else leaves your freedoms at the mercy of a corporation, and their interests will never align with your desires to exercise your freedoms.

</comment><comment><USER5> You could give someone you're password (in your will) and hope that they update the credit card info. Otherwise, the account would most likely be closed due to inactivity.

I do not know any company's policy on accounts that are too old.</comment>


Object Orientation (and other poorly understood idioms)  - b-man http://blog.dloh.org/2009/06/object-orientation-and-other-poorly.html

<comment><USER2> _The reason I began with that inflammatory statement concerning comp- scientists is that comp-sci is a branch of mathematics,_

I see this statement frequently, and it's almost always said by people who don't identify as computer scientists. I have a Bachelor's and Master's in computer science, am about a year away from a PhD in it, and I'm still not comfortable defining where exactly my field stands in regards to others. The best I can come up with is that it's a combination of math, science and engineering related to computation (the idea) and computers (the implementation).

The point he's trying to make with this statement - programs should be viewed as a natural expression of a solution, not a to-do list for a computer - <AUTHOR> valid. But he ignores that while computer languages can be put in the same hierarchy as natural languages, they have properties that allow us to use math to prove or guarantee conditions.

<comment><USER3> Computer science is what you get when mathematics and philosophy have a child, and hire electrical engineering as a babysitter.

<comment><USER4> And have linguistics as a heavily involved uncle.

</comment></comment></comment><comment><USER5> This article uses a lot of words to say nothing more than that the author doesn't like Java or Smalltalk's implementation.

I didn't get the whole thing about "don't create garbage objects" either. Not all state is persistent, programs have transient state as they go about their business. The transient state gets collected, and the space that it used can be reused for more transient state. That isn't wasteful or inefficient, it's a fact of life. (I think he's getting at reusing objects, which is a task for the compiler and GC, not for the programmer. The fact that Forth exposes that just means that Forth is a very low-level language, nothing more.)

Anyway, I could nitpick his other points, but they just don't make any sense, and I don't really care.

</comment><comment><USER6> White on black and small text makes me cry. I'm sure it would have been interesting, I just couldn't get very far without burning my eyes.

<comment><USER7> <https://www.squarefree.com/bookmarklets/zap.html>

Grab "zap colors". It's an eyesight saver.</comment></comment>


Protect Your Kids From The NSA – Teach them To Code Early Here - <AUTHOR> http://www.flatplanetmedia.com/protect-your-kids-from-the-nsa-teach-them-to-code-early-here.html

<comment><AUTHOR> Even being tech savvy and privacy savvy may not be enough, but we should all try to do what we can to teach our kids about these issues... and it starts with teaching them to code early on...IMHO</comment>


Ask HN: If you could start over, how would you do it? - <AUTHOR>

If you were 20 years old today, what would you focus on learning? <comment><USER2> Going deep in Algorithms and Data structures, Solve as many problems as possible from books, sites like TopCoder, SPOJ, Euler, etc. Probably I would achieve a good rank in a Google code jam by I am 25 years again :)

</comment><comment><USER3> Machine Learning & NLP

</comment><comment><USER4> Nanotech (as defined by Drexler).</comment>


Installing system packages in Docker with minimal bloat - <AUTHOR> https://pythonspeed.com/articles/system-packages-docker/ <comment><USER2> The initial container is a contrived worst case example. Not necessarily a bad idea when you want to make a point but most of the gains are from not doing things you're told not to do on page 2 of the docker tutorial.

Also, while vanilla Dockerfiles do need to carefully clean up after themselves BuildKit offers you a friendlier way of handling this with '--mount=type=cache' on the appropriate directories

</comment><comment><USER3> Adding these commands to a separate script seems like an unnecessary level of abstraction.

Concatenating the commands with &&, adding "\--no-install-recommends", and adding " && apt-get clean && rm -rf /var/lib/apt/lists/*" to the Dockerfile seems much more straightforward and maintainable.

</comment><comment><USER4> you shouldn't be installing syslog-ng in your container. Containers should do a single thing. If you want syslog, run a syslog-ng container.</comment>


March Madness: Artificial Swarm Intelligence in Top 99% - <AUTHOR> https://futurism.com/march-madness-a-swarm-intelligence-is-predicting-the-future/ <comment><USER2> Why are all the traces in the thumbnail overlapping? That's not how circuit boards work.</comment>


Dear MBAs who want to work at startups - <AUTHOR> http://www.thisisgoingtobebig.com/2010/01/dear-mbas-who-want-to-work-at-startups.html

<comment><USER2> "Another note on the approach—a resume attachment is fail on delivery."

Is this true? Have I been screwing myself by sending a resume with all of those emails?

<comment><USER3> No. There's nothing wrong with attaching a resume. Charlie's got this one backwards.

<comment><USER4> Right, I don't agree with this one either. He suggests sending your Linkedin profile. I actually attach a PDF export of my Linkedin bio (formatted much like a resume.) I'm sure a startup doing hiring doesn't want to spend a bunch of time logging into Linkedin and browsing through profiles until something interesting enough comes up to warrant further digging.

</comment></comment></comment><comment><USER5> I've had lots of success, getting jobs I want by approaching the right people and telling them how and why I should be kicking ass with them.

I got on a presidential campaign and ended up managing a congressional campaign doing this. I also landed some nice medium term contracting work with a couple different startups and an NPO, by approaching them and telling them what I can do to add value to their comp/org.

</comment><comment><USER6> I'm getting my MBA for free right now because I had a good enough average in undergrad. Hearing about all this MBA bashing I'm kind of worried people will make assumptions about me before even meeting me. I am applying to many start- ups for internships. hm

</comment><comment><USER7> While I don't know any MBAs, the advice is sound for anyone wishing to get into startups. In fact, I'd argue that many of these techniques could get you the inside track to most job openings.

</comment><comment><USER8> Wow there where a lot of ninja's in that article about start-ups.</comment>


PayPal Chargeback attacks hit Free Software developer. - <AUTHOR> http://bitcoinmedia.com/paypal-chargeback-attacks-hit-free-software-d

<comment><AUTHOR> Add a paypal donation box at your own risk.

<comment><USER2> Or worded another way, "bitcoin has no protection against fraudulent sellers."</comment></comment>


Finishing on the Bubble: My Experience with the TechStars Application Process - <AUTHOR> http://failquicker.posterous.com/finishing-on-the-bubble-my-experience-with-th#

<comment><USER2> Thanks for sharing your experience!</comment>


Boxer: The DOS game emulator that's fit for your Mac. - <AUTHOR> http://boxerapp.com/

<comment><USER2> _Let's maintain the convenient fiction that you won't just google "abandonware" and avail yourself of the many websites for pirated DOS games instead._

Seeing Dark Forces really brings me back.

edit: after reading through the thread, I realize I'm the 3rd or 4th person to say that Dark Forces "brings me back." Sorry to add so little, but it's also fascinating that so many of us have such fond memories of that one game.

</comment><comment><USER3> Ah, they have Dark Forces on the downloads page. I just played through the first level, and memories came flooding back.

</comment><comment> bjelkeman-again Very nice. Good that I still have the original X-Com box lying around.

</comment><comment><USER4> I like Boxer/Dosbox, but why does it burn my CPU though it doesn't/shouldn't require much processing power?

<comment><USER5> It simulates a computer entirely in software, which is expensive. This is different from for example Virtualbox which virtualizes a computer, and still executes most of the instructions directly on the processor.

<comment><USER6> Modern preemptive multitasking operating systems send the CPU to sleep when there's no work to be done. In DOS, the currently running app or game usually just used every available cycle (aside from interrupts handled by the BIOS or DOS) for its own purposes. I don't know if Dosbox has some kind of limiter in place, but if not, the game/app will eat every single cycle it can unless it's specifically designed to wait for the vsync interrupt.

<comment><USER4> You're right, but DOS emulators are usually configured to run at a slower speed than the host CPU. If not, the games usually run very very fast :-)

</comment></comment></comment></comment><comment><USER7> At least one of those screenshots is going to pull some heart strings for people who played games way back when.

I became a PC gamer at the tail end of DOS gaming, when Command & Conquer was only available on DOS and Dark Forces was released to mild acclaim. That shot of Dark Forces brings me back…

<comment><USER8> Dark Forces strikes me as an odd choice, since at that time period, LucasArts had in-house Mac porting developers. Dark Forces, Loom, and even Sam & Mac got classic Mac OS ports that supported better graphics resolutions than the DOS games of that time period. Pity it was mostly based on the work of one key developer who moved on after a couple of years…

EDIT: Citation Needed… <http://www.aarongiles.com/history/index.html>

</comment></comment><comment><USER9> The site is dragging quite a bit right now, but you can download from their Bitbucket page <https://bitbucket.org/alunbestor/boxer/downloads>

</comment><comment><USER10> I couldn't find this info on the site, so how is this different from DosBox?

<comment><USER11> i am guessing that it is a DosBox wrapper, to make management and running of games, both easier and prettier. :) No more mounting and all that crap.

<comment><USER12> Seems like it's indeed a frontend for DosBox: [http://www.dosbox.com/wiki/DOSBoxFrontends#Mac_OS_X_Frontend...](http://www.dosbox.com/wiki/DOSBoxFrontends#Mac_OS_X_Frontends)

Boxer should at least acknowledge DoxBox on their homepage IMO, feels to me a bit like taking DosBox's glory for themselves?

<comment><USER13> (I'm the developer of Boxer.)

You're right - Boxer's homepage did actually acknowledge DOSBox until a couple of days ago, when I rewrote most of the copy and in the process took it out. I now realise this was caddish of me, and have added the acknowledgement back in.

It wasn't my intention to take credit for DOSBox's work; it's an excellent emulator and responsible for 90% of what Boxer does. However, it's also extremely painful to use on the Mac - and I wanted to avoid the suggestion that Boxer's user experience was like that of DOSBox's.

As airolson noted, DOSBox is also prominently credited within Boxer itself.

</comment></comment></comment></comment><comment><USER14> Epic Pinball! Woo! Donated 10. Should probably give some to DosBox too :)

</comment><comment><USER15> Oh no! Now I'll _have_ to play Maniac Mansion again! :-)

<comment><USER16> you may be better served by ScummVM for that: <http://scummvm.org/>

</comment></comment><comment><USER17> Brings back memories. I suppose at the time my dream was to understand how those games worked. And I think I still couldn't write one today...

</comment><comment><USER17> Great product - it even helps you go through the installers. I had to change from A: to D: for installing Stunts though! (I had a copy...)

<comment><USER13> Let me know (via the Send Feedback link in Boxer's app menu) where you got your copy of Stunts from - I'll check it out and see if the import process needs tweaking there.

</comment></comment><comment><USER18> An underrated game I've never been able to find again was Hyperspeed by Microprose. Super awesome. Anyone know where to find a copy?

</comment><comment><USER17> Lemme just grab a copy of Bananacom so I can download some games from the local BBS.

</comment><comment><USER17> The incredible machine anyone?

</comment><comment><USER19> Thexder still hates me.

<comment><USER20> That game is _hard_.

Thexder HD was released on PSN recently, btw.

</comment></comment><comment><USER21> Just installed the original C&C. Thanks!</comment>


Ask HN: Best podcasts in 2012? - <AUTHOR>

I'm thinking of getting into a few more podcasts in the new year. What were some of your favorites in 2012? <comment><USER2> 99% Invisible <http://99percentinvisible.org/rss>

This American Life <http://feeds.thisamericanlife.org/talpodcast>

BackStory with the American History Guys <http://feeds.feedburner.com/BackStoryRadio>

Freakonomics Radio <http://feeds.feedburner.com/freakonomicsradio>

Fresh Air Podcast <http://www.npr.org/rss/podcast.php?id=13>

Here's The Thing <http://feeds.wnyc.org/wnycheresthething/>

The Moth Podcast <http://feeds.feedburner.com/themothpodcast>

On the Media <http://feeds.wnyc.org/onthemedia>

Person Place Thing with Randy Cohen (man, I miss "The Ethicist") <http://personplacething.org/?feed=rss2>

Planet Money Podcast <http://www.npr.org/rss/podcast.php?id=510289>

WNYC's Radiolab <http://feeds.wnyc.org/radiolab>

To the Best of Our Knowledge <http://feeds.feedburner.com/ttbook>

With Good Reason Radio <http://feeds.feedburner.com/WithGoodReasonRadio>

I was tempted to put them in preferential order, but to be honest the go-to podcast depends on how much time I have (length of commute, how tired before bed, that kind of thing).

</comment><comment><USER3> Seconding Planet Money (<http://www.npr.org/blogs/money/>), in fact the whole Marketplace team is pretty stellar (<http://www.marketplace.org/marketplace- podcasts>)

TWIT is always pretty fun as well (<http://twit.tv/show/this-week-in-tech/>)

Smithsonian puts out an interesting presentation every so often too (<http://www.si.edu/podcasts/>)

Granted these are all great podcasts, but they've been around and entertaining way before 2012.

</comment><comment><USER4> As posted previously, IMO the best podcast (episodes) of the year for

Web devs: <http://flapcast.com/playlist/16>

Entrepreneurs: <http://flapcast.com/playlist/18>

There are a variety of podcasts in there, just click on each episode link to see the rest of the podcast's archive.

</comment><comment><USER5> What are the podcasts you're already listening to?

Also, Personal favorites this year:

<http://www.creativemornings.com/> <http://unity3d.com/unite/archive/2012>

Old School Toughness from Hardcore history. feed://feeds.feedburner.com/dancarlin/history?format=xml

</comment><comment> jarek-foksa I was listening to Mohammed Abshaun's videlog [1] most often this year. It helped me a lot in getting stuff done and kept me motivated to work on my startup. I also like Mixergy, but I guess everybody here knows about it.

[1] <http://www.youtube.com/user/mohammedabshaun/videos?view=0>

</comment><comment><USER6> Management: HBR (Harvard Business Review) Podcast <http://hbsp2.libsyn.com/rss>

Interviews: Conversations with Richard Fidler [http://abc.net.au/queensland/conversations/conversationspodc...](http://abc.net.au/queensland/conversations/conversationspodcast.xml)

</comment><comment><USER7> Not really tech focused, but great nonetheless

\- Skeptics Guide to the Universe ( <http://www.theskepticsguide.org/> ) \- Cognitive Dissonance ( <http://dissonancepod.com/> )

</comment><comment><USER8> It's not technical, the only podcast I listen to is: WTF with Marc Maron - <http://www.wtfpod.com/> \- he's a comedian who usually interviews comedians and they can go pretty deep sometimes

<comment><AUTHOR> Yeah, I've heard some great episodes of WTF. It's one of the few I listened to this past year as well. Its interesting hearing a more serious side of comedy, the guests he has on are pretty well-known too.

</comment></comment><comment><USER9> Q <http://www.cbc.ca/podcasting/includes/qpodcast.xml>

Not technical at all, it focuses mostly on music, culture and art with some politics.

</comment><comment><USER10> Ruby Rogues: <http://rubyrogues.com/>

Ruby Tapas: <http://devblog.avdi.org/rubytapas/>

</comment><comment><USER11> The Industry, by Adam Stacoviak, Jared Erondu, and Drew Wilson.

Great group of folks talking about design-focused startups and a lot of cool front-end tech.

</comment><comment><USER12> I've enjoyed Systematic, <http://5by5.tv/systematic/>.

</comment><comment><USER13> I've been enjoying <http://techzinglive.com/> lately

</comment><comment><USER14> The <http://packetpushers.net/> guys are great.

</comment><comment><USER15> Philosophy Bites.

Du Nord Football Show.

Responsible sports.

I prefer to read about tech.

</comment><comment><USER16> NPR's Planet Money

Lapham's Quarterly

</comment><comment><USER17> <http://sixgun.org/linuxoutlaws/>

<http://anarchast.com/>

<http://www.lewrockwell.com/lewrockwell-show/>

<http://www.corbettreport.com/podcasts/>

[http://prn.fm/shows/lifestyle-shows/the-expat- files/#axzz29V...](http://prn.fm/shows/lifestyle-shows/the-expat- files/#axzz29V062jtk)</comment>


Ask HN: Are you using a Nagios theme? - <AUTHOR>

Every conference talk about #monitoringsucks bashes Nagios for its interface. Have you tried using themes (http://bit.ly/1gMAkxb) and why don't they solve your problem? <comment><USER2> We're using exfoliation with no complaints. Although very few people actually interact with Nagios and they're used to enduring far worse interfaces.</comment>


Orchestrate.io shutting down, deleting user data - <AUTHOR> Well, my trepidation proved correct.  We signed up for Orchestrate.io's free tier for a bot project last month, and were impressed with how easy and quick it was to use their tools to integrate with our Slackbot project.  However in the back of my mind, I knew Orchestrate wasn't one of the popular NoSQL systems that people talk about, and I wondered if they would stick around for the longer term.
This morning, I received the following in my Inbox:
"Effective December 15, 2016, the Orchestrate NoSQL Database product ("Orchestrate") will be retired. On this date, existing free and paid accounts will be deactivated. The Orchestrate product will be fully supported until that date and you will continue to have access to any applicable Content in order to remove and/or backup any applicable Content prior to deactivation.After December 15, you will no longer have access to any Content or the Orchestrate NoSQL Database product.For assistance with this transition, you can contact CenturyLink Cloud support by opening a ticket via firstname.lastname@example.com. If you have any other questions, or would like additional information, please email firstname.lastname@example.com or reach out to your account manager.
Regards, CenturyLink Cloud"
I'd appreciate feedback from anyone else who uses Orchestrate who can give me pointers to a good alternative, who has a good Node library that integrates will with Slack's botkit. <comment><AUTHOR> UPDATE: Just got another email from them saying that they are extending the shutdown period to 120 days, so everyone has until 31st March 2017 to either convert to another system or grab their data before it is gone.

We've just spent the past 2 days working round the clock to transition our work to Amazon's DynamoDB.

Still wish they had released their NoSQL system as open source or something, to allow people to self host.

</comment><comment><USER2> Just got the same shocking message, I had the same feelings about orchestrate, I worked with orchestrate for a wile but I was skeptical as you (glad for that) so I switched to self hosted solution few months ago to a new data base "crate.io" it wasn't that hard to migrate code base, no data transfer though since I stopped using it before launching my project :)

again I'm glad I followed my hunch :)

<comment><AUTHOR> Yes, I am kind of wishing I had followed my gut feel too. I had tried AWS's NoSQL system, but had interminable trouble getting it to integrate with BotKit - Then while researching things I saw that Orchestrate had a plugin which integrated easily, and we managed to get it working in an afternoon and were delighted.

Now it means we have to pull out all that code and integrate another NoSQL system in there for data storage. I am glad that we held off from launching our bot to the public this month - we were waiting until the new year. So fortunately I don't risk losing any real customer data - only beta tester data. Inconvenient, but not insurmountable.

It has made me a lot more reticent to consider other small players in our stack though - might stick with AWS all the way from now on.

</comment></comment><comment><USER3> Well I built the backend of 3 startups pyoopil.com, zapprep.in, playable.in - they are all going to go bust in 30 days. these are products I've written and tested over a year. the startups will simply die. there is no way to port! The least they could at least release the source and allow self hosted version of orchestrate. but where is the sadism in that right?

<comment><AUTHOR> Yeah, I would have thought at least offer an open source version that people could self host - would make it SO much easier, especially if they are just going to shutter the original product. Sorry to hear about your projects having to be scrapped just like that.

</comment></comment><comment><USER4> I've been using Orchestrate for 2 years, can't believe they are just pulling the plug with 30 days notification. Lame.</comment>


Any HN users worried about coming bandwidth caps effecting your businesses? - <AUTHOR> http://www.huffingtonpost.com/josh-silver/internet-overcharging-the_b_198095.html

<comment><USER2> Please look up the definition of "effect" and contrast it with the definition of "affect".

And, in answer to your question, no.

<comment><AUTHOR> Sorry, don't care about the artificial distinction. Know it probably better than you, and don't care at all.

And if you don't care about it effecting your business, then you are an entrepreneur who needs to wake up.

<comment><USER2> Look, you seem like a nice person, but you're coming on too strong. Why would I hire you when you come on so strong?</comment></comment></comment>


The disturbing Facebook scandal we're all ignoring - <AUTHOR> http://www.businessinsider.com/facebook-scandal-we-ignore-2016-11 <comment><USER3> I'm surprised the recent news about how Trump's campaign is using facebook to depress black voting wasn't mentioned.

>The animation will be delivered to certain African American voters through Facebook "dark posts" — nonpublic posts whose viewership the campaign controls so that, as Parscale puts it, "only the people we want to see it, see it." The aim is to depress Clinton's vote total. "We know because we've modeled this," says the official. "It will dramatically affect her ability to turn these people out."

Highly targeted negative political advertising is the norm, but when the digital director for a campaign is openly using the ethnicity option in facebook to "affect her ability to turn these people out", it feels wrong.

[http://www.bloomberg.com/news/articles/2016-10-27/inside- the...](http://www.bloomberg.com/news/articles/2016-10-27/inside-the-trump- bunker-with-12-days-to-go)

<comment><USER4> TFA: _If the ad were selling a house or recruiting for a job fair, it would almost certainly be illegal._

We have laws about that stuff, for good reason. They don't address political speech, however, and probably wouldn't pass constitutional muster if they did. This is the sort of tawdry viciousness we've come to expect from Trump, but it's solidly within the "marketplace of ideas". The only way to respond to this is with opposing targeted ads.

</comment></comment><comment><USER5> It's on the person running the ad to not break laws or operate in discriminatory ways, not Facebook.

There are tons of metrics that correlate heavily with race, combinations of which that can be used in place of this metric. Facebook shouldn't be at fault when an advertiser abuses them.

If a landlord took online rental applications, the company providing the technology for the applications wouldn't be at fault if the landlord denied all applications from a certain ethnicity.

<comment><USER6> I think that it's a really dangerous trend; now we have all these platforms which facilitate illegal activity but which offload all the legal responsibility onto their users.

You could say the same thing about Pirate Bay, Silk Road, Uber (for helping its drivers bypass local license requirements), AirBnb (for helping landlords bypass local tenancy laws).

All these companies help people break the law... The ones which help people break 'important' laws are prosecuted (E.g. Silk Road and Pirate Bay) - <USER2> the ones which help people break minor laws tend to be left alone mostly.

Our society is evolving in such a way that our laws are slowly degrading - Particularly the laws designed to protect the working classes. What all these companies are doing is effectively turning us all against each other for their own benefit.

<comment><USER4> _Our society is evolving in such a way that our laws are slowly degrading..._

This may be an inevitable response to the ongoing proliferation of unnecessary laws?

<comment><USER7> _This may be an inevitable response to the ongoing proliferation of unnecessary laws?_

It's wishful thinking to expect the degradation of a law be inversely correlated to is value to society (however you want to calculate that, "necessity" or otherwise).

<comment><USER4> We weren't really talking about individual laws. It is the institution of Law in general that has been degraded, and that is partly due to all the extra laws. Each new law makes someone's life better, or else it wouldn't have been lobbied into existence, but on average each new law makes life worse for the public as a whole. The public knows this at some level, so it's understandable that the average person now has less respect for the Law than the average person did in e.g. 1950.

</comment></comment></comment></comment></comment><comment><USER8> Source: [https://www.propublica.org/article/facebook-lets- advertisers...](https://www.propublica.org/article/facebook-lets-advertisers- exclude-users-by-race)

Does this article add anything new?

<comment><USER9> The Business Insider article is sourced from [http://www.thefiscaltimes.com/Columns/2016/11/01/Disturbing-...](http://www.thefiscaltimes.com/Columns/2016/11/01/Disturbing- Facebook-Scandal-We-re-All-Ignoring)

And to answer your question, no, other than using a click-baity title.

</comment></comment><comment><USER10> I recognize it's the principle of the thing, but I have to admit I'm not sure I could get worked up about being excluded from seeing advertisements

<comment><USER11> X different rates / teasers / bonuses could be offered based on ethnicity.

</comment></comment><comment><USER12> How is this different from advertisers selecting the age bracket or gender they want to target? I'm not sure why this is any more illegal.

</comment><comment><USER13> Don't advertisers target ethnicities by, for example, choosing which TV network to use for an ad campaign?</comment>


How I ended up writing opensnoop in pure C using eBPF - <AUTHOR> https://bolinfest.github.io/opensnoop-native/ <comment><USER2> What is eBPF?

[https://qmonnet.github.io/whirl-offload/2016/09/01/dive- into...](https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-bpf/)

</comment><comment><USER3> Very entertaining article, thanks for that. I recognized a lot of my own a-ha moments w.r.t eBPF/bcc reading all the sections (especially the kern_version thing).

You seem to want to avoid either LLVM (understandable) or run-time compilation (would be great, but it's hard as you state).

I'd like to introduce you to ply(1). It's a DSL interpreter (think dtrace) that compiles an awk/dtrace like language to eBPF and wires up the necessary pipes/maps/... Link [https://github.com/iovisor/ply](https://github.com/iovisor/ply).

Please take some time to read the code. It's tiny. Every time I come away with a renewed appreciation for well written C (and wkz).

<comment><USER4> Thanks for the plug! :)

Please allow me to follow up with one of my own [https://wkz.github.io/ply/](https://wkz.github.io/ply/), where you can see some examples and read through the manual.

I'm currently working on a new version which will be easier to extend and will have a full C-compliant type system. Still tiny though. Hope to have a commit worthy of a git tag soon. :)

</comment></comment><comment><USER5> Thanks for the article. Your writing style is fun and easy to read. Learning more about tracepoints and bpf is also on my TODO list, and I'll certainly re- read this later.

The 4.15.0-33 output from uname -r does not mean that your kernel version is 4.15.0, it's probably based on a later 4.15. The ubuntu package version is 4.15.0-33.36. I'm not sure what the 36 means here. There are no upstream 4.15 releases any more, the last was 4.15.18, in April 2018.

I know how it works in Debian, which is similar. E.g.:

-$ uname -a Linux mekker 4.17.0-3-amd64 #1 SMP Debian 4.17.17-1 (2018-08-18) x86_64 GNU/Linux

uname -r says 4.17.0-3, but that's the package name (linux- image-4.17.0-3-amd64). The actual version is 4.17.17-1, which means it's 4.17.17 with Debian patches.

The number 3 is the an ABI compatibility number. So, as long as the kernel ABI keeps the same, newer versions (e.g. 4.17.18) can use the same package name (4.17.0-3). However, if the ABI changes, the -3 is bumped to -4, it causes a new package in the repository and when installing it, the user has to recompile self-made modules.

The only reason for the .0 in the package version name is because there might be something expecting three numbers in that place (like it was with 2.6.x kernels).

[https://www.debian.org/doc//manuals/debian-kernel- handbook/c...](https://www.debian.org/doc//manuals/debian-kernel-handbook/ch- versions.html)

</comment><comment><USER6> My biggest grievance with BCC has been, as noted in the article, that it requires LLVM to be linked in. Also, it requires a Python interpreter on the target machine. I've also wondered why eBPF can't be pre-compiled.

Installing those dependencies on a regular PC is easy, but not so on an embedded system. I tried cross-compiling the dependencies once, but got stuck at some point. It would've been hard to justify the time spent if I'd continued, so I dropped it. I'm really happy that someone has invested time into this issue.

<comment><USER7> I wrote a not very well known LuaJIT to BPF compiler as a part of bcc precisely because of this. It doesn't depend on anything besides LuaJIT (no LLVM, no C, no libbpf, etc). Caveats: it's Lua, it doesn't fast track all the latest from bcc as it's a "for fun" project.

[https://github.com/iovisor/bcc/tree/master/src/lua#luajit- bp...](https://github.com/iovisor/bcc/tree/master/src/lua#luajit-bpf-compiler)

<comment><USER6> Thanks for sharing this, I will look into it. We have luajit on our system so this might be just what I need.</comment></comment></comment>


Ask HN: How did you find your first 10 customers for your startup? - <AUTHOR> Wondering? <comment><USER2> Twitter. If you are solving a real pain point, there will likely be people complaining about it on twitter. Search for those phrases and offer to solve their problem. I got my first couple hundred users this way. Then it grew organically from there.

<comment><AUTHOR> Awesome, thanks. This could also be used to find what pains people have.

Any suggestion of how to find that? Using keywords like "how can I" ?

<comment><USER2> Another thing you can try is searching for the hashtags of conferences in your industry.

<comment><AUTHOR> Thanks, you gave me an idea to search for tech recruiters(one of the target market) with hashtags

Do you have any tips how to engage with them?

<comment><USER3> How do you see them using it? I know a couple of a Tech recruiters and I'm happy to email them on your behalf if I can understand the use case.

<comment><AUTHOR> Hey, thanks for the offer.

They can include the link to the chat page in job posting, articles, careers page, email etc, like "Apply via Chat"

A few benefits are: \- low barrier to get in touch, right when the candidates are the most interested \- faster than email and more comfortable than phone calls(especially for tech guys) \- no more filling of long application forms \- gives a good impression and stands out from the competition

<comment><USER3> I think you're onto something here but don't realise quite how useful what you have can be in the right hands, with the right pitch.

Push the mobile side of things, right now every recruitment site has a brick wall where the CV upload is mandatory but every iPhone user cannot upload a file - you're solving that problem and then some.

My product is similar to HootSuite, Buffr etc. but by focusing on a Niche (Real Estate) I'm seeing promising traction. By focusing you're going to find it easier to reach potential customers and your product development will be cut down too.

Are you in the UK? I'd love to meet for a beer and discuss, I think this could be huge.

<comment><USER3> FYI applypage.io is available.

<comment><USER3> If anyone reading this is interested in this product please email me (in my profile) - as this will be ready very soon after chatting with the OP.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER3> I'm aware that I owe you an email reply OP, sorry I have been busy and have stopped cold emailing customers.

Right now, I'm selling to retail / real estate ([http://www.retailwizard.co.uk](http://www.retailwizard.co.uk) / [http://www.propertywizard.io](http://www.propertywizard.io)) so to get customers I literally go to their workplace & ask them for 5 minutes of their time. I did try emailing as you know, but I have found going to speak to to them face-to-face to be more effective for my niche.

Obviously email works for other sectors, something I'm looking to explore again in the future.

<comment><USER4> I think that's a great tip.

For your product, would it apply for Canadian retailers/real estate companies as well?

Given that I was focused on real estate with my previous startup, I could help you make the connections in Canada.

<comment><USER3> It works worldwide, the only reason I'm concentrating on the UK at the moment is because of my high touch sales process. I'd love to chat more (email in my profile) and I'd appreciate any connections you can make. I'd also be happy to pay you a referral fee.

<comment><USER4> Sure. I'll ping you through email later today.

<comment><USER3> I didn't get an email, just wanted to make sure I didn't miss it?

</comment></comment></comment></comment></comment><comment><USER4> Thanks for asking a very relevant question.

Another tip I can share is going to meetups of your target customer and building relationships.

We're building something that's fairly overlapping (i.e. landing pages, etc. ) but we're more focused on the marketing automation piece. Good luck!

</comment><comment><USER5> It really depends on your product. Is it an app? SaaS?

Have you validated yet?

<comment><AUTHOR> Kinda validated, but I need to hit the 10 customers mark.

My product is a SaaS, outbound live chat for lead generation teams.

<comment><USER5> Quite a busy space that.

What pain points does your platform offer that others dont?

<comment><AUTHOR> Higher engagement(it's a landing page dedicated to chat), lead generation during conversation(it has a form builder) and you can include the chat link in emails or other websites.</comment></comment></comment></comment>


This new Samsung SSD is waaaaay faster than yours - <AUTHOR> https://www.cnet.com/uk/products/samsung-nvme-ssd-960-evo/preview/ <comment><USER2> Here's a link to a real review without the clickbait headline. Or just google for '960 evo review'. All of the results on the front page are better than this article.

[http://www.storagereview.com/samsung_960_evo_m2_nvme_ssd_rev...](http://www.storagereview.com/samsung_960_evo_m2_nvme_ssd_review)

</comment><comment><USER3> Well, unless you have the 950 pro [1] released last year, in which case it's only about 20% faster for reads, and 25% faster for writes.

That said, it does appear to be half the price of the old pro for the same sizes, so there must have been some significant process improvements to get Gen 2 at half price with better speed.

[1] [http://www.samsung.com/semiconductor/minisite/ssd/product/co...](http://www.samsung.com/semiconductor/minisite/ssd/product/consumer/950pro.html)

<comment><USER2> And the 960 Pro is about 10% faster than this SSD.

<comment><USER4> 960 Pro has a 5 year warranty, & ought basically live forever; that's why I'd consider paying the premium.

At high queue depth, it seems like the two are pretty close. At lower queue depth, the 960 Pro often looks to be 50% faster or more. (Based off the storagereview link in comments)

</comment></comment></comment><comment><USER5> As an owner of a Samsung SM961 that I've had for a few months now - no it ain't!

<comment><USER6> haha was going to say the same thing - kind of a bold title, seeing that Apple has included m.2 ssd's in their laptops now for a year or so, and tons of enthusiasts are already using them.

</comment></comment><comment><USER7> Top comment

> Nice! Do these start on fire like all the other Samsung products?

I cannot wait until the last few use cases for spinning rust die out. So many problems from spinning rust crashes throughout my life.</comment>


Do Vegans Secretly Wish They Could Eat Meat? - <AUTHOR> http://iamverysmart.com/2015/07/20/do-vegans-secretly-wish-they-could-eat-meat/

<comment><USER2> In-vitro meat grown as tissue will never be viable. If you want meat, you need to add the ingredients that make "meat," which makes it almost as expensive as growing meat naturally.

IMHO, some sort of tailored yeast or other will be the basis for a commercially viable product.</comment>


Mozilla uses server-hosted JavaScript to 'secure' user passwords - <AUTHOR> https://accounts.firefox.com/scripts/0f968594.main.js

<comment><USER2> [http://hg.mozilla.org/mozilla- central/file/0a8b3b67715a/secu...](http://hg.mozilla.org/mozilla- central/file/0a8b3b67715a/security/manager/boot/src/StaticHPKPins.h#l729) shows that [http://accounts.firefox.com](http://accounts.firefox.com) cert is pinned. Only Mozilla has the power to attack you.

Also, if you think there's a security issue, maybe file it on Bugzilla before HN. Probably a better place to put it.

(Password stuff in JS is truly sketchy though. That much I can agree with.)

<comment><AUTHOR> > Only Mozilla has the power to attack you.

Ah, good to know, but still not good. The whole point of a secure password- storage mechanism should be that all they can do is delete passwords, not decrypt them.

> Also, if you think there's a security issue, maybe file it on Bugzilla > before HN.

I took a look at Bugzilla, but it looked like a pain to sign up and I couldn't tell quickly where & how to file security issues vice bugs.

And to be honest, I was also a bit angry about how they completely removed the brilliant crypto they used to use. Given that they seem to think that this reduction in security is perfectly acceptable, I figured that publicity was more likely to effect change.

</comment></comment><comment><AUTHOR> This means that at any time Mozilla can replace that JavaScript and steal end- user passwords. Anyone who can successfully MITM Mozilla (i.e., anyone with a trusted certificate: this includes CNNIC, the Government of the Netherlands, the Government of Spain and others, as indicated in [https://wiki.mozilla.org/CA:IncludedCAs](https://wiki.mozilla.org/CA:IncludedCAs)) can successfully do the same.

And yes, this means that anyone with a Lenovo laptop who changed his Firefox Account password must now change every single password he has ever synced, even if he's never logged onto a particular site with that laptop.</comment>


Bill Gates's Secret to Success: Cheating - <AUTHOR> http://www.gototheboard.com/articles/Bill_Gates_Secret_to_Success:_Cheating This will be controversial but there's a good point that Gates benefited tremendously from no one enforcing anti-trust laws.  No company should ever get to a 90% market share - that's not good for the public. <comment><USER2> Antitrust or not, most Gates biographies I've read touch on aspects of cheating or questionable ethics. Microsoft has a history of using predatory pricing through OEM distribution and/or giving products away to establish its monopolies.

<comment><USER3> Three businessmen are sitting in the hallway of a court, waiting for their trial. After some time, one of them starts lamenting: "because my prices are way higher than my competitors, those bastards want to convict me for profiting from a monopoly!"

"Well, that's interesting" replies the second one, "because I'm also here for an antitrust case: I charge way less than my competitors and they say that I'm doing predatory pricing to kill the competition."

The third one starts laughing hysterically: "Believe it or not, guys, I'm here for the same reason as well! But my prices are exactly the same as my competitors, so they want to convict me of price collusion and profiting from a cartel!"

<comment><USER4> Funny, but the purpose of an investigation is to determine the truth. It probably sucks to get dragged into an investigation when you've done nothing wrong, unfortunately history is not on their side.

If they're looking for someone to blame, blame the monopolies, cartels, and predators that abused public trust so badly that laws had to get made.

<comment><USER3> Well, as far as I'm concerned the real, evil bastards are the ones attacking their competitors through the government using lawsuits instead of working to improve their products and services.

<comment><USER4> I agree that sucks, but the laws wouldn't likely be there if people hadn't pushed those boundaries to begin with. I'm sure people were quite happy in the pre- Sarbanes-Oxley US but Enron went ahead and screwed that up for everyone.

<comment><USER3> Your logic is broken; it's a little bit like saying that the Third Reich or the Apartheid wouldn't have existed if the jews and blacks behaved nicely.

</comment></comment></comment></comment></comment></comment><comment><USER5> Reminds me of John D. Rockefeller's agreement with shippers.Gates must have studied history.

Regardless, ultimately Microsoft lost the US antitrust lawsuit and is no longer dominant in the era of the Internet.

Much of the money he earned would end up funding good causes so I feel there is some justice in all of this.

<comment><USER6> They still have two strong monopolies: Windows and Office. Neither are going anywhere anytime soon.

<comment><USER7> Windows and Office are dominant but they are not monopolies. People have alternatives. I haven't used a Windows machine (at least at home) for years.

<comment><USER8> I've not either, but most non-apple machines I've bought has a XP/Vista sticker on it.

<comment><USER9> <http://www.paulgraham.com/designedforwindows.html>

</comment></comment></comment></comment></comment><comment><USER10> This is one of those where I try and put myself in his shoes.

If your business had the opportunity to take the contracts he mentioned, would you? Of course there are those silly things called _laws_ that might get in the way of this business deal, but they may not have been clear at the time (I don't know).

All I know is that Gates leveraged his product against an unknown market and then created barriers of entry for other competitors. Machiavellian, perhaps, but brilliant.

</comment><comment><USER11> Opinions differ on the anti-trust thing... Personally, I don't understand it. I don't think anybody was forced to sign the contract.

<comment><USER12> Well, quite. It's worth noting that the anti-monopoly laws are retrospective, which means you can be found guilty of things _that were not illegal at the time you did them_.

If the democratic will of the People is that the government regulates business that's one thing, but retrospective laws are just insidious. A level playing field up front is the only fair way.

<comment><USER3> Just because "The People" democratically wants something doesn't mean it's right.

<comment><USER12> You're right, but that's not the point I was making.

</comment></comment></comment></comment><comment><USER13> This is simply redefining cheating such that Microsoft is guilty of it because he doesn't like them. That sort of contract seems like a brilliant maneuver to me. The fact that they were merely forced to stop it, rather than pay for having done it shows the DoJ probably didn't feel it was illegal.

And if it ain't illegal, it ain't cheating in business.

</comment><comment> patrickg-zill They are still illegally "tying" by their use of the WHQL certification process.

</comment><comment><USER14> I read things everyday about what's better: Windows or something else. The truth is each OS has its own plusses and minuses. Linux/Unix allows a sophisticated user much more power than Windows. Windows has a whole network of developers that create the mainstream games and other entertainment software I enjoy. I use both a Unix and a Windows system, but I use both in a very different manner.

Regardless of one's opinion on what OS is better, you cannot deny that Gates is one of the most brilliant people of our time. His business practices are what brought him wealth. He may or may not have done a few questionable things, but what business hasn't? This is why we have a justice system. Laws are not always written to be black and white. The justice systme is there to help us define all the gray in between.

If I had the ability to create a monopoly because the laws don't explicitly define a certain prohibition, you can bet your ass that I would. I'd deal with antitrust issues as they came up and leverage what I have already done to move into a new area of exploitation. Whether or not you want to believe it, that is how capitalism is practiced.

<comment><USER15> I don't agree Billg as one of the most brilliant people of our time. He is certainly a clever strategist, but not much more than that. He got incredibly lucky a couple times: The non-exclusivity IBM deal, the PC clone market (that could have not existed if the BIOS were harder to reverse engineer - say, like a Mac). MS has also at least one failed attempts to create a PC-like environment: MSX. They saw that a commodity computer running an OS they controlled was a way to get big money.

I would also like to know if they somehow covertly helped the BIOS reverse engineering process.

Everything they did up to Windows 3 derived from that - do whatever it takes to secure a market for their OS. They did not leave OS/2 to IBM because the codebase was bad. They needed control of the OS in order to keep it a commodity and having a competitor developing the OS that runs on commodity PCs was out of the question. Up to the launch of Windows 3, the public discourse was that OS/2 was the future. It changed dramatically at that minute.

They played dirty tricks all the time. Threatening Apple not to renew the Applesoft BASIC license was a way to secure Apple would endorse Microsoft BASIC on the Mac and ditch a competing product. I don't know what else they got from Apple while their cash cow had a piece of MS software within. It certainly made Apple's contracts better the next time.

They got lucky a couple times and IBM got fooled twice. Their dominance is the consequence of luck and borderline criminal tactics. I see no huge genius here beyond one that was willing to bend the law (and morality) as much as he could.

It's also unclear how much of this came from Ballmer.

As far as I know, the big genius among the Microsoft founders is Paul Allen.

<comment><USER16> I think you need to give credit where credit is due. Bill Gates is one of the geniuses of our time.

You don't create a powerful company like Microsoft just by being lucky. This is the guy who brought personal computing to the masses. This is the guy who managed to grow his company into the behemoth that it is today. This is the guy who responded to the Internet threat brilliantly (well initially that is.).

Dirty tricks are PARTS AND PARCEL of the world, especially in businesses. The techies are insulated from such behavior, which is why they are usually shocked at such behavior. People on the business side are used to such behavior. They deal with it. They counter back. Wall St revel in it. Govts use them all the time. This is society at its normal equilibrium. Google, being a techie wonderland, is trying to avoid this for as long as possible but trust me, WallSt will push their hands sooner or later.

Paul Allen wouldn't have build Microsoft into the success that it is today. He just isn't as sly as Bill is.</comment></comment></comment>


Bad hackers copy, great hackers steal — Avi Bryant - <AUTHOR> http://2010.cusec.net/01-08/from-cusec-2009-avi-bryant-bad-hackers-copy-great-hackers-steal/

<comment><USER2> Good interesting video. Main theme is that it pays off to read research papers and try to use that stuff in the real world. Some interesting tidbits from Avi from the presentation:

* sun built java and self at the same time, self was an attempt to build a smalltalk that was more smalltalky than smalltalk, which ended up in that they made a very efficient dynamic method dispatch that was fast.

* There's no need for dynamically typed languages to be slow, because strongtalk has already solved that problem.

* The hotspot VM is actually the strongtalk vm, but crippled for fast dynamic dispatch because of the security model.

* There are now 3 really good and fast VMs for javascript making it very interesting.

* If a problem is hard, probably someone has a solution for it => research academic papers.

</comment><comment><USER3> Off topic, but the title derives from a favorite line by T.S. Eliot. I'd always heard it quoted as "Good poets borrow, great poets steal." After a bit of Googling, though, it turns out that the actual line is "Immature poets imitate, mature poets steal." That's less punchy; I prefer the bastardized version. It's an interesting example of how evolution can strengthen and polish an original phrase. Who knows how many versions (and minds) it passed through before ending up with that perfect rhythm.

Still, the full quote more than makes up for it with the context, which is magnificent. Check this out:

 _One of the surest of tests is the way in which a poet borrows. Immature poets imitate; mature poets steal; bad poets deface what they take, and good poets make it into something better, or at least something different. The good poet welds his theft into a whole of feeling which is unique, utterly different from that from which it was torn; the bad poet throws it into something which has no cohesion. A good poet will usually borrow from authors remote in time, or alien in language, or diverse in interest. Chapman borrowed from Seneca; Shakespeare and Webster from Montaigne. The two great followers of Shakespeare, Webster and Tourneur, in their mature work do not borrow from him; he is too close to them to be of use to them in this way._

<comment><USER4> Fascinating; I've always heard it attributed to Picasso, as "Good artists copy. Great artists steal.", but Wikiquote has that as unattributed and cites Eliot in 1920. Picasso would have been 39 then and was established well before that, so it's _possible_ it originated from him.

Then again, given the nature of the quote, it's entirely possible that he stole it from Eliot ^_^.

Thanks for digging this up! The full Eliot quote is indeed magnificent.

</comment></comment><comment><USER5> Is there a transcript?</comment>


Announcing LTS Haskell 1.0 - <AUTHOR> https://www.fpcomplete.com/blog/2015/01/announcing-lts-haskell-1-0 <comment><USER2> There are a couple questions in the comments about LTS Haskell and related projects, I was thinking this might be a good summary. (tel's might be better, but I had already written this so I'll let others decide [https://news.ycombinator.com/item?id=8834823](https://news.ycombinator.com/item?id=8834823))

Hackage is the core package server, comparable to RubyGems.

The Stackage ([http://www.stackage.org/](http://www.stackage.org/)) project functions like a CI system for Hackage. Stackage builds and tests the group of packages that have opted in to it, ensuring that the latest versions all work together (when there's an incompatibility between packages, the authors of the packages are pinged to resolve the issue [1]).

When a build of all the packages succeeds, Stackage generates a "snapshot", a list of all the package versions used for that build (sort of like a Gemfile.lock/Podfile.lock, for the whole ecosystem). Developers can have Cabal (Haskell build tool) use the package versions from that list when installing new packages. This ensures that when you install a new package that it's compatible with the other packages you're currently using.

The issue with those snapshots (generated nightly) is that you'll want to get updates for your packages, but the snapshot generated N days from now might have packages that have made breaking API changes, making them incompatible with your application.

LTS Haskell attempts to fix that. It's based off a specific Stackage snapshot. For the duration of the LTS (currently 3 months), the major versions from that snapshot are locked down, but patches/bugfixes will continue to be released. This allows you to get bugfixes for your application while still getting the advantages of Stackage.

[1] As an example, when the language-ecmascript 0.17 package was released, the authors of the 2 packages that depended on language-ecmascript < 0.17 were pinged to update their packages: [https://github.com/fpco/stackage/issues/390](https://github.com/fpco/stackage/issues/390)

</comment><comment><USER3> I guess this is similar to Quicklisp for CL packages? A stable "world snapshot" every now and then instead of rolling releases.

I works pretty well in the CL world, I think this approach (releases) will become standard for package management in Ecosystem-package-managers (as it has been in the OS world).

<comment><USER4> Sorta yes. In order of wild-west to stable, it's:

Hackage - live packages get uploaded and released fast

Stackage - a rolling tested release. It promises that all packages will compile together. (There are a few flavors of this).

and now LTS Haskell. A snapshot of Stackage that doesn't roll very quickly (every 3 months). It won't do upgrades to packages at all, except for bug fix & patch releases. So your own application code can pull down the LTS today, and again tomorrow, and be relatively sure that everything will work the same.

</comment></comment><comment><USER5> "LTS" usually stands for "Long Term Support".

This page says "Run weekly point releases"

Is this a bizarrely very-rapid software ecosystem where a week is considered "long term". Or am I missing something?

<comment><USER2> The weekly point releases are bugfixes for that LTS (so 1.1 is just bugfixes for 1.0).

<comment><USER6> In addition to this, the release duration is somewhat experimental.

 __ _Why such short support windows? The strawmen of three months between releases and a one month grace period are ridiculously short support windows. The reason I propose them is because- like I mentioned in the design goals- we want the smallest delta from how people work today. Right now, there is no concept of stable versions, and we 're trying to introduce it. Starting off with a more standard support window of something like two years would be a radical shift in how library users and authors operate today. Three months is very short, but it's long enough for us to test the process. As time goes on, we should have serious community discussions on how long a support window we should have. (I, for one, am fully in favor of extending it well beyond three months.)_ __

</comment></comment></comment><comment><USER7> The website doesn't say what LTS haskell is. A curated set of packages? Of what?

<comment><USER8> My best understanding from the posting is that it's going to be a "stable" version of the "Haskell Platform" set of packages.

Haskell has been notorious for moving (too?) fast while not maintaining decent backwards/forwards compatibility, a problem made worse by some tooling issues ("cabal hell"). Now most of the technical issues should be solved.

<comment><USER9> As far as I'm aware this has nothing to do with the Haskell Platform and is, in fact, more or less a competitor.

<comment><USER10> It does seem to be a competitor. They could use the same infra to do the HP versioning and builds. Some NIH going on? The key here seems to be the level of automation, which is great to see.

<comment><USER9> Unfortunately, I think it's a bit of a branding thing, too. To most people's eyes the HP is something of a failure since it's so slow to release—never mind the stabilizing effect it has had on all constituent projects. Stackage thus grabbed some market- and mind-share by promising a closer-to-bleeding-edge update path at the cost of lesser stability. From this position they're peeling back a little bit, trading off newness for a bit more stability, in what appears to be the easiest-to-maintain fashion.

So from that, it's sort of culturally incompatible with HP, unfortunately. It'd be very nice if some crosscutting could be had once-and-if LTS stabilizes as a product.

<comment><USER11> Actually, the ideas for LTS Haskell came out of conversations I had with Duncan and Mark at ICFP. The original idea was to create a GPS Haskell that would encompass a "best of both worlds." LTS Haskell is a first step towards that, and I'm hoping that Haskell Platform and Hackage ultimately fold this stuff back in.

I went into more detail on this history in the previous blog post: [https://www.fpcomplete.com/blog/2014/12/backporting-bug- fixe...](https://www.fpcomplete.com/blog/2014/12/backporting-bug-fixes)

<comment><USER10> Sounds good. I had assumed you were heading in this direction. The approach was something Duncan and I wanted to try in 2007/2008 but we didn't have resources at the time. Now the infrastructure is there, automatically identifying stable sets, tagging and releasing them is a good step. If you can get to the point of computing the next HP set in the same fashion, that will be a big win for stability.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> So what happened to the "avoid success at all costs" motto?

<comment><USER13> It has two different parsings:

        avoid (success at all costs)
        (avoid success) at all costs

The first is more apt description of Haskell's design, the later is more of a joke.

<comment><USER14> One could say that the second parsing is... too eager? :)

</comment></comment></comment><comment><USER15> What does LTS stand for? My dirty guess is Love ThreeSome.

<comment><USER16> Long Term Support</comment></comment>


Things I Love About Go - <AUTHOR> http://www.cambus.net/things-i-love-about-go/

<comment><USER2> A lot of these are simply the Go people declaring certain conventions by fiat: gofmt, the go build tool, a large standard library, and the like.

These are a lot of the benefits that Python had: everybody pretty much has to do things the same way (and there's PEP 8 that establishes non-enforced conventions), so I can start playing with a new codebase without having to figure out their conventions and build system too.

<comment><USER3> It's unbelievable how helpful it is. The Go article that was posted last week was lambasted for a lot of good reasons, but even as a Go fan I was annoyed at how hard it was for me to quickly scan the source because it didn't follow the conventions that I'm used to staring at quickly.

</comment></comment><comment><USER4> There are some neat things about it. Being able to retroactively distill an interface from code you do not have the source to. Sometimes I wish I could do this in c# when I mock stuff up.

Goroutines and channels are cool because they are simple to use. We have tasks in c# and I could construct channels in countless ways. But go makes them dirt simple.

I don't like the terse c-like naming conventions but that is a manner of taste. Makes it feel more close to the metal and less enterprisey I guess.

I wish there was go#

<comment><USER5> "less enterprisey" is a feature.

<comment><USER4> Yeah I'm guessing that is why they went that direction. It really isn't any less enterprisey than anything else and we ended up with stuff like fmt.printf, who would have guessed printf is in something called fmt. Well I guess it stands for format, but is printf primarily a formatting function? It prints and the formatting is a convenience. If we are meant to use it for formatting, it is badly named.

<comment><USER6> Not really.

Printf is all about "formatted printing". What you think the "f" at the end stands for and has stood for since C?

If anything, its the opposite of what you say, ie the "fmt" package name is not measleading but redundant!

</comment></comment></comment></comment><comment><USER7> I'm learning a bit of go at the moment, and liking it a lot. One thing which caused me a little head scratching was doing something like this:

        for _, item := range slice_of_obj {
            item.update()
        }

where the 'update' method wrote to some member data in item.

It seems that the 'item' is a copy of, rather than an alias to, the underlying object, so the mutating 'update' call is updating the copy, which is then discarded. (The 'right way' to do this to use the loop index and slice_of_obj[i], but that seems mildly barbaric)

This seemed odd to me, particularly since no error was generated. Can anyone comment if I'm doing anything particularly dumb here? If Go had a concept of 'const', at least it could throw an error when you mutate the copy which is going to be discarded.

<comment><USER8> The effect you are seeing there is because the as it says in the documentation: "The iteration values are assigned to the respective iteration variables as in an assignment statement." So item is being assigned and because it's an obj and not a *obj you are getting a copy.

Whereas slice_of_obj[i] is accessing the element within the slice without a copy. One solution to this problem would be to store pointers in your slice instead of objects.

<comment><USER7> Thanks for the reply. I don't argue that it's not to spec, just that it seems not useful/a bit surprising.

Some other languages (e.g. perl and I think also java) choose to make the loop var an alias, rather than a copy, to allow mutation:

        for my $item (@items) {
            $item->frob; # Can happily mutate the item
        }

will work as it reads.

</comment></comment></comment><comment><USER9> Go seems like a rehash of Ada, without the option to dynamically linked. Maybe an improved version of Ada.

I liked some feature of Ada a lot, it was safe, input, output, in/out parameters for functions. Of course to make itself useful as a lower level language you need to be able to call OS functions, which in unix means C. So then you have to start wrapping... Some parts of Ada were terrible (string handling comes to mind.)

I think its worth a look, but I'm still not sure what problem its trying to solve.

<comment><USER10> Go repeats the mistake of Boolean Blindness [1] so I think it disqualifies it from "safe", though.

[1] [http://existentialtype.wordpress.com/2011/03/15/boolean- blin...](http://existentialtype.wordpress.com/2011/03/15/boolean-blindness/)

<comment><USER3> You posted this a few days ago, I didn't understand it and still don't understand after another read through. Can you give either a dumbed down summary or a scenario or an example of a language that doesn't do this?

<comment><USER10> Basically, the idea is that when you branch on a conditional, information is gained. This information may be represented in the type system and used by the compiler to verify safety, or it can be ignored. If it is ignored, the language is said to have "boolean blindness".

Example:

      if (ptr == NULL) {
        ... a ...
      } else {
        ... b ...
      }

In branch a and branch b, different invariants about ptr hold. But the language/compiler are not verifying any of these invariants.

Instead, consider:

      data Maybe a = Nothing | Just a

This defines a type "Maybe", parameterized by a type variable "a", and it defines two "data constructors" that can make a Maybe value: "Nothing" which contains nothing, and "Just" which contains a value of type "a" inside it.

This is known as a "sum" type, because the possible values of the type are the sum of all data constructor values.

We could still use this sum data-type in a boolean-blind way:

      if isJust mx then
        .. use fromJust mx .. -- UNSAFE!
      else
        .. can't use content of mx ..

However, using pattern-matching, we can use it in a safe way. Assume "mx" is of type "Maybe a":

      case mx of
        Nothing -> ... There is no value of type "a" in our scope
        Just x -> ... "x" of type "a" is now available in our scope!

So when we branch on the two possible cases for the "mx" type, we gain new type information that gets put into our scope.

"Maybe" is of course a simple example, but this is also applicable for any sum type at all.

If your language does branching without giving you back any new type information, it means you have to _manually_ track the invariants and conditionals your program is in. If you get it wrong, your program will die at runtime. Instead, the language can almost always provide you some kind of proof that you can pass along of the conditional's truthness, which makes it safe to rely on it.

<comment><USER11> I may be mistaken, but I believe type switches in Go address this criticism:

        type Fruit struct {
            Name    string
            Species string
        }

        // define a method on Fruit structs named Rename
        func (f *Fruit) Rename(s string) {
            f.Name = s
        }

        type Candy struct {
            Name    string
            Company string
        }

        // define a method on Candy structs named Rename
        func (c *Candy) Rename(s string) {
            c.Name = s
        }

        // any type that defines a method named Rename is also
        // of type Renamable.
        type Renamable interface {
            Rename(string)
        }

        // produce something that implements Renamable.  Its
        // fields will be unknown, but the method Rename will be
        // known to exist.
        func SomeProducer(...) Renamable {
            ...
        }

        x := SomeProducer(...)
        // at this point, x is of type Renamable.  We do not
        // know what fields it has.  The only thing we know is
        // that it has some method named Rename that takes a
        // single string for its only argument and returns
        // nothing.

        switch t := x.(type) {
        case Fruit:
            // T is of type Fruit, while x is of type Renamable
            fmt.Print(t.Species)
        case Candy:
            // T is of type Candy, while x is of type Renamable
            fmt.Print(t.Company)
        default:
            // some other type.
        }

it's in the Switch section of the Go spec: <http://golang.org/ref/spec#Switch_statements>

<comment><USER12> Not exactly. You see, you have to define new types from scratch with your approach. With Haskell's approach, you just have to use the Maybe parametric type, which just needs to be defined once. In other words, you just go and use a generic type instead of writing your own, like new List<Integer> instead of new ListInteger in Java.

<comment><USER11> unless I'm missing something, that seems to address a separate difference in the specifics of Go and Haskell's type systems, namely that Go's interfaces and Haskell's sum types are different. Yes, they're different. I really only meant to say that the article is predicated on the notion that we're only able to branch on booleans instead of predicates. As for checking for null values...

        var x *MyType

        ...

        switch x {
        case nil:
            // blah
        default:
            // blah
        }

tada, no boolean required, no having to "establish the provenance" of any bits. Sure, inside the nil case, the compiler doesn't actually stop you from unsafely attempting to access the fields of x, and, in that way, Haskell is safer than Go.

I'm not trying to assert that Go is better than Haskell or that they are the same; I've never programmed Haskell so I'm not qualified to make such a statement. I'm merely addressing the specific "Boolean Blindness" criticism.

I don't really think that criticism is in any way valid, since "Boolean Blindness" isn't a criticism of a language design, it's a criticism of how one might use a particular language. To say that Go committed "Boolean Blindness" is predicated on the following assumptions:

\- you can only branch on a boolean

\- given a value and a type, the only thing you can do is obtain a boolean indicating whether or not that value is of that type

as far as Go is concerned, those statements are factually inaccurate.

Given some variable `x` of unknown type, and a type `t`, is there some way, in Haskell, to create a boolean `v` such that the value of `v` is `true` when `x` is of type `t` and `false` otherwise? And if so, is there some way to branch on this boolean value `v`? Because if that is true, then how has Haskell not committed the same atrocity of "Boolean Blindness"?

<comment><USER10> > tada, no boolean required, no having to "establish the provenance" of any > bits. Sure, inside the nil case, the compiler doesn't actually stop you from > unsafely attempting to access the fields of x,

But you _do_ have to establish the provenance of your conditional. You have to keep track of whether you compared against nil yourself.

Whether this is expressed as if(x != nil) or as a boolean-blind switch case, the information is lost and it is up to the user to keep track of the meaning of 'x' under all the conditions it is run.

Of course Haskell is capable of expressing boolean blind and unsafe code. But Haskell, unlike go is also capable of expressing non-blind, safe code.

Go is _only_ able to express boolean blind code (again, it is _not_ about a boolean condition but about whether branching buys you type information). When you compare against nil, it is up to you to keep track of the provenance.

<comment><USER11> > You have to keep track of whether you compared against nil yourself.

that's true in the case of comparing against nil, which I've already agreed with. I never said that Go is as safe as or safer than Haskell, I said that your assertion that there's "no way to branch and get type information" is a factual inaccuracy that misrepresents the language.

The fact that you haven't commented on type switches in any way shows that you're not really interested in anything other than your own sense of superiority.

Haskell is a better programming language. As a programmer of a programming language that is not Haskell, I am inferior to you.

There.

<comment><USER10> It's not just comparing against nil, it's any comparison or switch-case besides a type-switch.

A type-switch seems to be non-boolean-blind indeed, but it seems to have too much syntactic overhead, as Go code generally uses if branches when a type- safe case is due (e.g: When analyzing return codes).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> _Statically linked binaries (No dependencies hell, easy to deploy in production)_

Is this always this way? I'd be interested in a discussion on the pros/cons of this. Some are obvious, but I'm interested in a deep discussion.</comment>


Tesla Gets $350 Million In Government Money to Build Model S Sedan - <AUTHOR> http://www.allcarselectric.com/blog/1018497_breaking-tesla-to-unveil-model-s-sedan-on-march-26-and-has-been-accepted-for-350-m-in-government-loans-to-build-it <comment><USER2> Ok, now I'm 100% certain that the price of lithium is going to skyrocket. There isn't that much of the stuff pulled out of the ground every year, and most of it goes to small battery applications - not cars like the Tesla. Toyota's electric cars have purposefully stayed away from lithium because they knew that there was not enough lithium for Toyota sized production.

Unfortunately lithium is not traded on any futures market that I know of, and I know of no publicly traded stock on any exchange that solely represents lithium mining interests.

Does anyone know how I can buy bulk ($25k+) lithium? I'd prefer not to buy it from a science supply store. I'm getting a quote from <http://www.baotou- rareearth.com/> right now, but ideally there would be an ETF that tracks the price for me.

<comment><USER3> I read this a while ago - <http://www.forbes.com/forbes/2008/1124/034.html>

Symbols SQM and POT from the article are relevant if you want to invest in Lithium.

</comment></comment><comment><USER4> Forget Y Combinator. I'm applying to TARP.

<comment><USER5> the application form is probably shorter too

<comment><USER6> Usually it's the size of a business card.

</comment></comment></comment><comment><USER7> Can I give a strong suggestion that news stories not be submitted from obviously-biased sources? The headline should be the same as what the reliably-green nytimes asked a few months ago:

[http://dealbook.blogs.nytimes.com/2008/12/01/should- taxpayer...](http://dealbook.blogs.nytimes.com/2008/12/01/should-taxpayers- pay-to-back-tesla-motors/)

The Tesla business model, to me, seems hopeless. Look: There's nothing special about running vehicles by battery. They were doing it many decades ago. Every big factory and every golf course has numerous electric vehicles. In the proper context, they're just great.

The technology is well-established, but thus far none of the manufacturers thought it wise to move from factory to highway. I'm guessing there are some good reasons, among which is the fact that diesel cars are usually more efficient...

<comment><USER8> "fact that diesel cars are usually more efficient..." is true if compared to a gasoline combustion engine. But there is no simple comparison on efficiency between the 2 different technology battery vs gasoline.

My take is the other way. Loan several billion dollar to any of the big three is not doing much. The cash burn rate they have will eat the money quickly and just to survive. Since the first oil crises in the '70 any of the Detroit companies had lots of time to spend R&D money on alternative power train solutions. They decided not to do a lot for multibillion dollar revenue companies other than building bigger and bigger SUVs. Japanese car manufacture by now have some lead in hybrid and battery technology and a small company Tesla has in my opinion a better chance to compete in this segment.

<comment><USER9> > there is no simple comparison on efficiency between the 2 different > technology battery vs gasoline.

What's wrong with "km/J" ?

<comment><USER10> You can get electricity from oil without refining it to gas. The only real useful metric is $ / mile and electric cars win that one.

</comment></comment></comment></comment><comment><USER11> They also plan on being profitable by mid-year. I wonder if GM, Ford, or Chrysler could say the same? At least the Government has a good chance of their loan to Tesla being repaid!

<comment><USER12> Didn't it just come out that their product costing was completely off-base and every car was being sold at a loss. This company has never impressed me and they just don't seem to have the leadership to ever become viable. They've already burned through lots of money, promising the whole time that profitability is right around the corner.

This model isn't going to be out until 2011, by then, GM and Toyota will likely have more commercially viable PHEV models available to the public. I just don't see Tesla getting past a niche market. ANd getting past that point should be the expectation given the size of this loan.

<comment><USER13> Toyota I can see having more commercially viable PHEV models, but have you paid attention to any NA automaker's adverts recently? They haven't even noticed that they're in a burning house carrying a crate of gunpowder. I mean watch the commercial for the new Ford F-150, it has _steps_. Yes their selling feature right now is _steps_. It's mentally retarded, they completely gloss over the fact they've increased the carrying and towing capacity for the vehicle because they've got _steps_.

They even say something like 'with the extra capacity, you'll need those steps more than ever' and I'm just trying to think through the logic there, because whenever I've seen a truck fully loaded it's been done by a fork lift or a bobcat for when we filled the sucker full of sand... it had a purpose, I swear! And it wasn't sandcastles neither.

My point is, is that everybody is watching gas prices to see when they spike up again. The price is quite nice here in Canada, but we're all waiting for it to double and be at the same price it was last summer. What no NA automaker seems to realise is that the market has completely changed, right now almost everyone is wanting fuel efficiency because everyone's afraid they're going to be spending a fortune commuting.

<comment><USER14> _they completely gloss over the fact they've increased the carrying and towing capacity for the vehicle because they've got steps_

Sadly, this might just be because they know their market and they know that most people who buy the F-150 aren't using it to tow stuff, but are the type who are more likely to buy it because it has shiny steps.

<comment><USER15> You're partly right: I think it's because all the vehicles in its class have roughly the same capability, but the steps can differentiate the F150 from the competition. Around here any truck sold from dealer inventory automatically comes with a tow package and will at least occasionally be used to tow something. Even my Xterra is sometimes used to tow a trailer.

People are still buying big trucks: I just bought my wife a used F250 with 7.3L diesel and it's her daily ride!

</comment></comment></comment></comment></comment><comment><USER16> As a side note, I dislike the term "government money," since it makes it easy to forget the the money ultimately comes not from the government but from the people. "Taxpayer money", on the other hand, has a pejorative connotation, since it is often used derisively. Maybe "public money"?

<comment><USER17> Except for that the money doesn't come from the people, since it is fiat money as opposed to money being collected via taxes.

<comment><USER18> _Except for that the money doesn't come from the people, since it is fiat money_

Don't you mean "seigniorage" money? <http://en.wikipedia.org/wiki/Seigniorage>

_as opposed to money being collected via taxes._

Isn't seigniorage a type of tax? <http://en.wikipedia.org/wiki/Seigniorage>

_seigniorage is also referred to as an inflation tax [...] the "inflation tax" is paid by those who hold the existing currency, which results from their holdings of currency becoming devalued through inflation because of the introduction of additional money supply._

<comment><USER17> "Isn't seigniorage a type of tax?"

Yes, but it's not a tax on the people, it's a tax on dollar holders.

</comment></comment></comment></comment><comment><USER19> The major problem with electric cars is building an infrastructure for them. First, they can run around 100-150km (60 - 100miles) and after this they must recharge for a day or so. I.e. they are pretty useless on longer trips.

In Denmark, Dong Energy (which is Denmark's biggest energy company) has signed an agreement with Better Place to build electric "gas stations" where one can drive in and get a fresh battery. I think Israel also has an agreement. And with such gas stations, electric cars could be a very fine choice since they are cheaper (pr. km) and a lot more environment friendly.

And Teslas are pretty hot, so it would probably be a very good investment by the US gov.

Sources: <http://en.wikipedia.org/wiki/DONG_Energy> <http://en.wikipedia.org/wiki/Project_Better_Place>

<comment><USER10> FYI: your numbers are wrong.

<http://www.teslamotors.com/performance/perf_specs.php>

      Tesla Roadster
      Range: About 220 miles (based on EPA combined city/highway cycle)
      Full Charge: About 3.5 hours using the Tesla Motors High Power Connector.

One of the better suggestions I have heard was an all electric car where you could use an external generator for long trips. 95+% of the time you don't need and save a lot of weight over a hybrid but it but it's still an option for long trips and you could even add extra storage space.

<comment><USER14> _One of the better suggestions I have heard was an all electric car where you could use an external generator for long trips. 95+% of the time you don't need and save a lot of weight over a hybrid..._

Why is this better than a hybrid? Would the generator be powerful enough to provide enough electricity to operate the car? If so, I have a hard time seeing how you would save weight or how it would be more efficient, since you're going to have more steps in the process, each with more efficiency loss.

<comment><USER10> A 30hp generator would be sufficient to give a car essentially unlimited range, but it adds a few grand in cost, 4-500 lb's of weight and a host of mechanical issues. If you don't need it 95% of the time what's the value in dragging it around? If you can rent it for less than the cost of ownership what's the value in renting it?

</comment></comment></comment></comment><comment><USER20> Here is your state issued car.</comment>