Surprisingly modern graffiti from the walls of Pompeii - <AUTHOR> http://pompeiana.org/Resources/Ancient/Graffiti%20from%20Pompeii.htm

<comment><USER2> What do you think is modern about the language? Try Aristophanes.

That said, this is a cool collection. I think it would benefit from more interesting presentation, in terms of web design. Also, a more _modern_ / freer translation technique might suit the content better than the stilted rendition offered here.

</comment><comment><USER3> The inscription in I.7.1 - 8075 translated here as: "The finances officer of the emperor Nero says this food is poison" is in latin "CVCVTA AB RATIONI[B]VS NERONIS AVGVSTI".

An alternative, sarcastic, translation has been proposed: Poison is Nero's secretary of finance.

</comment><comment><USER4> as a classics majors, I love running across these things, and I'm especially glad to see it on HN, though I agree with tborg that both the presentation and translations could be more up to date. something to work on if I'm bored tomorrow. Now I just need to find the Latin

<comment><USER5> How were these words applied to walls? Did vandals have to walk around with a paint bucket and brush? Was it carved out? Or perhaps walls were finished with some sort of wet plaster and people had a short window of time to write in it with their fingers?

<comment><USER4> as far as I remember, it was all paint. they would go around at night with buckets of red paint and write, sometimes over other words, it could be a mess. only because Pompei was so frozen in time did the paint not wear away

</comment></comment></comment><comment><USER6> "Modern?" They were way ahead of us.</comment>


Will you join my Steam Protest? - <AUTHOR>

Steam's no resale policy is illegal in the EU - see the UsedSoft v Oracle ruling (link below). Basically it says that if you're an EU citizen and you paid a one-time fee for a lifetime license of software, you can resell it. I created a site that will let you sell your used Steam games www.halfpricedigital.com Twitter @HalfPriceDigi
If you're in the EU and you want to protest Steam's no-resale policy, just list your Steam game for sale and then email Valve to ask them how you will be able to transfer the game when your auction ends. Here's Valve's email form http://www.valvesoftware.com/email.php I'm turning off the fees on my site for a month starting today - so, no, I'm not scamming you for a percentage of the sale.
Valve will probably tell you reselling games is against their user agreement. Tell them that that's against EU law and mention the UsedSoft v Oracle ruling.  If we can get Valve to allow reselling games in the EU, they might allow reselling games all over the world.
UsedSoft v Oracle info: http://www.forbes.com/sites/raywang/2012/07/04/news-analysis-usedsoft-vs-oracle-ruling-opens-up-monopolistic-practices-by-software-vendors/
TL;DR - Protest Steam's illegal no resale policy by listing your used Steam games for sale on www.halfpricedigital.com if you're an EU citizen. <comment><USER2> Eh, I like my money to go to the publisher and the developer when I buy a game, not some schmuck who's done with the game and wants a quick buck for something they bought. Used game sales are a moral grey zone and the general populous of gamers needs to wise up to that.

But you know, good luck with your plan to rally popular opinion and take a cut of everyone's undeserved payouts!

<comment><AUTHOR> Do you find the selling of used cars to be a moral grey zone? If you weren't able to sell your used car ever, would you be more or less likely to buy another car? Do you think that people who resell their used games buy more or less new games?

When you buy something you buy a license to use that item for as long as you own it. If you sell it you no longer have the right or ability to continue to use that item anymore. I think that the argument that you are making is that a game is an experience and that once you have played a game once you have reaped the full benefit of ownership from that game. However, I believe that you are mistaken. The full benefit of owning something is that you can reuse it as often as you like. You can read the same book as many times as you want for as long as you own that book. The same is true for a game. The benefit of owning a game or any software is that you can use it as much as you want for as long as you own it. When you sell it you are giving up your right to continue to experience that game until you buy it again.

<comment><USER2> Of course there's a moral grey zone when selling a used car. We're talking about the people who craft something being snubbed for the profit of a private individual. When someone buys a used car that means a new car isn't sold. The car industry and any industry that has used sales, has to then push up the price of new products to counter the loss of sales from the used market, punishing customers. This is BAD, no matter what way you look at it.

Money is meant to be a mechanism that enables the trading of labour. I put in X effort, I am recompensed with Y money. I can then use Y money myself to by things that I want. To then resell something I've worked for and legitimately purchased is me making money out of nothing, or rather from the labour a game developer has put in. That right there is the moral greyzone. You have a gut feeling that you should have the right to resell any of your possessions, and perhaps you're right, but you have to accept the damage you do to an industry, and to the other purchasers of products and services like yourself, that is done when you perpetuate a second-hand market.

To say you have a right to resell, and the added inference that 'more money for myself is good' that comes along with that is a very narrow-minded and one-sided argument. If you think about the larger picture and the consequences of your actions then this all becomes a very different proposition. But as the owner of a used games marketplace I don't expect you to see the selfless side.

<comment><AUTHOR> It seems that your argument then is that no one should ever be able to resell or give away anything that they buy ever. So when you buy something, anything at all, you would have to own it yourself until you throw it away. Obviously that would have a huge negative impact on the environment with items like cars, computers, clothes, etc. Also, the lack of a second-hand market would have a negative impact on low-income people who need to buy used goods for the lower prices. So it seems to me that your argument against the existence of any second-hand market would have disastrous effects and cannot exist in the real world.

You have avoided the issue of whether or not second-hand markets positively impact the primary market. For example, if people weren't able to sell their used cars, would they be more or less likely to buy new cars. I think that the answer is pretty obvious. If people couldn't resell their used cars ever, they would buy new cars less often. Mainly because people often partially pay for new cars by trading in or selling their old cars.

I agree with namlem's comment "Why does incurring the costs associated with resale on the industry in any way morally gray? It's the manufacture's right to price items accordingly. They can just raise it to compensate." The manufacture should simply price the existence of a resale market into their product. That's what ever merchant other than Steam already does.

Steam is breaking the law in the EU and their illegal business model (not allowing resales) is what allows them to undercut the prices of their competitors. Don't you find that to be a moral grey zone?

The problem with making the argument, as I suspect you are, that because games are intellectual property that they shouldn't be able to be resold when you are done with them, is that almost everything is intellectual property. Think of how many parts of your car are patented. Those patents are intellectual property. If you let Steam say that you don't own the games that you buy then you opening the floodgates to a world where you don't own anything that you buy - you are just "licensing" it. As I've stated above a world like that isn't practical and I don't believe it is morally correct either. It restricts the rights of consumers for no reason other than to further enrich the producers of goods, who many doing just fine as is. Valve is worth 2.5 Billion dollars. Aren't they doing well enough without having to step all over consumer's rights?</comment></comment></comment></comment>


What it's like to use Haskell - <AUTHOR> http://engineering.imvu.com/2014/03/24/what-its-like-to-use-haskell <comment><USER3> Thanks especially for the "Not All Sunshine and Rainbows" section. It is all too easy to write about the positive things and leave the negative parts out.

Resource leaks in Haskell perhaps a bit trickier to track than in other languages and I would appreciate hearing more about the issue you were experiencing and how you solved the problem. In many blog posts there have been warnings against long running Haskell processes but you guys seem to have fairly successful with it.

Also, the problems you were experiencing with Cabal might be fixed in newer versions with the sandboxes feature which is now built-in with later versions of Cabal.

<comment><USER4> We deal with Haskell resource leaks the same way you would in C++ or Java.

We have production monitors on every host that show basic metrics like memory, disk, and CPU utilization. Atop that, we added a tracker for the number of suspended Haskell threads. (that is, threads which are not blocked on I/O, but are also not running)

We found that the machines are usually able to handle requests as soon as they come in, so if the number of Haskell threads goes above 0 for any length of time, the machine is about an hour away from melting down.

We can restart the process without losing any connections, so this leaves us a very comfortable margin of error.

Once we know we have a problem, it's usually pretty simple to run the heap profiler on the process and look at recent commits. We continuously deploy, so there's only about a 10 minute delay before a particular commit is running in front of customers. This makes tracking regressions down really fast.

Even in cases where we can't figure out why a bit of code is leaking, we can almost always identify it and revert it until we understand what's going on.

<comment><USER5> > We can restart the process without losing any connections

Would you mind expanding on this a bit? I'm not too familiar with Haskell, but I am familiar with various was of blocking new connections while allowing existing connections to complete, either at the load-balancer level or built- in each individual process.

What Haskell stack are you using, and how are graceful restarts accomplished?

Thanks.

<comment><USER4> One of my coworkers wrote a really cool bit of software to do this. I want him to open source it.

Basically, you can share a single socket amongst many servers. The OS ensures that just one process accepts each connection.

You can therefore have a manager process that owns the socket and passes it on to application processes.

To update, start new processes, then politely tell the old ones to go away.

<comment><USER6> One really cool thing in Linux is that you can actually pass file descriptors between processes over unix domain sockets.

<comment><USER7> Windows has supported this for ~14 years too.

<comment><USER6> Good to know. Does it work for everything that's an fd in Linux? I know you've got to treat sockets and files differently in some cases (or at least did once)...

<comment><USER7> It works for most kernel handles, sockets might be a little more normal starting with Win7 but I stopped doing Windows development around then.

Here are the official docs: [http://msdn.microsoft.com/en- us/library/windows/desktop/ms72...](http://msdn.microsoft.com/en- us/library/windows/desktop/ms724251\(v=vs.85\).aspx)

<comment><USER6> Looks like there's a separate function for sockets.

Still, cool stuff there too.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Switching a programming language is a major decision for a company. It requires changing the runtime library and possibly re-writing a lot of in- house infrastructure. While personal affinity to a language is important, making a decision for a company might have substantial business consequences.

For a company, overall language adoption, availability of libraries, tools and talent (and I'm not talking about training someone to be productive; sooner or later you need real experts and training an expert is expensive in any language) are extremely important. That's why when choosing between two languages, assuming both are well suited to the job at hand, a company should always pick the one with the wider adoption unless the other is _so significantly "better"_ to trump lesser adoption. And the smaller the adoption, the "better" the language needs to be.

There's no doubt Haskell is an excellent programming language. I'm learning it and enjoying it. But because it has such low adoption rates, it needs to provide benefits that are orders of magnitude higher than other, more popular languages. I guess that for some very particular use cases it does, but I just can't see it in the vast majority of cases.

Hobbyists can afford playing with different languages, and can (and perhaps should) jump from one to the next. Companies can't (or most certainly shouldn't, unless for toy projects); they should pick (wisely) a popular language that's right for them, and just stick with it.

BTW, I think that if a company does want to try a good, though not-so-popular language, it should pick a JVM language, as the interoperability among JVM languages, and the availability of libraries that can be shared among the popular and less-so JVM languages, reduces much of the risk.

<comment><USER9> I about 50% agree with you here. The factor that you're forgetting is the filter effect: Haskell is not adopted, it's learned after a thankless (there are no jobs) process of deep study. This means that the quality of available talent is of a much higher standard. If you adopt a technology with these characteristics, and you're one of the few who are hiring in this pool then you have a significant advantage!

The only risk in my mind is when the big boys figure it out and start gobbling up Haskellers! :-)

<comment><USER8> I think this is a bad filter. I'd rather filter prospective employees based on an ambitious algorithm or a complex project they've done. Most of the people I know that like solving hard problems with novel data structures, algorithms, or mechanically-sympathetic implementations are averse to spending time on learning new programming languages. It seems to them (and to me) like focusing on bling rather than on substance.

Of course, this is a crude generalization, and obviously, anyone who's interested in learning any new, perhaps unappreciated, and difficult skill would make a good hire, and Haskellers are no exception. But I wouldn't filter based on programming language preference.

<comment><USER10> I have to disagree on two points.

First, the implicit point you are making that ambitious algorithms or novel data structures are useful in industry. For the vast majority of applications this simply isn't the case.

Second, the argument that people interested in learning advanced computer science aren't interested in learning new programming languages. This goes against all of my experience; my friends who are most interested in advanced computer science concepts are exactly the ones who spend the most time exploring different programming paradigms as well.

I have one idea of what the distinction might be, though: learning different programming paradigms is very different from learning different programming languages. I certainly wouldn't want to waste time learning yet another Java or yet another Python, since as you say that would be focusing on bling rather than substance. If this is the distinction, Haskell comes out fine, as it is clearly a different paradigm from the mainstream languages.

</comment></comment></comment></comment><comment><USER11> It's good to hear stories about how FP is being used in industry and I'd like to read more.

For those who have an interest in this, I recommend the Commercial Users of Functional Programming workshop ([http://cufp.org](http://cufp.org)). It's where I first heard about Facebook's use of OCaml to create Hack ([http://www.youtube.com/watch?v=gKWNjFagR9k](http://www.youtube.com/watch?v=gKWNjFagR9k))

<comment><USER12> While visiting your link ([http://cufp.org](http://cufp.org)), I saw Chester Bennin of Linkin Park fame there. I didn't know that he's also a programmer! Programming in a functional manner. Another Wow!

<comment><USER13> Isn't the Linkin Park vocalist named Chester Bennington? I think you're off by a gton.

<comment><USER12> Chester Bennin is what the website says. Click his picture in the upper-right corner, you'll be then taken to the page where it says his name is 'chester Bennin.'

<comment><USER13> I agree there is a "chester Bennin" listed on CUFP, there is also a person named "Chester Bennington" who was the lead singer of Linkin Park. What I disagree with is your claim that these people with different last names are the same person.

<comment><USER12> Haven't you seen the picture? It looks like Chester. I was not the one who claimed they are the same person. If they are indeed different then the CUFP website is at fault for misinformation.

<comment><USER13> Oh, sorry, I didn't realize that CUFP was saying this. I searched for "chester bennin site:cufp.org" on Google and the only result returned was this page: [http://cufp.org/users/genie](http://cufp.org/users/genie)

<comment><USER12> Apology accepted :)

But you're kind of right. I can't really find information on Chester (from Linkin Park) doing functional programming.

It's either the guy on the picture really looks like Chester, or the said person (programmer) used Chester's pic as his avatar (unlikely, though, since they are a reputable sight).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> Wait, IMVU? As in those terrible banner-ads with the Bratz-dolls-looking avatars? They use Haskell under the hood?

Seriously, this is like finding out that McDonalds' restaurants are powered by nuclear fusion.

Although this does make me very curious about learning Haskell - I've been pretty stagnant about learning new languages.

<comment><USER15> McD's runs the most technically sophisticated operation in the industry.

</comment></comment><comment><USER16> It always surprises me to see these imvu.com posts on HN. They are often insightful and interesting, but when you see the website you wonder who pays money for this. Do they sell virtual goods for their own virtual world, similar to secondlife?

<comment><USER12> They do. I was once an active IMVU user. Outward appearances can be deceiving, but believe me they are profitable. If you read Eric Ries book 'The Lean Startup' you can have a glimpse of IMVU's back story there.

<comment><USER17> Yeah, IMVU is a company behind a product which most people know about because of the "Lean Startup" book, not because they used the product itself. I must say I read the book with great interest but I never found the product itself interesting enough to even have a look at at :)

<comment><USER14> The target market is pretty clearly teenaged/tweener girls. I'm not surprised to learn that Hacker News doesn't have many of those.

</comment></comment></comment></comment><comment><USER18> I can't like this post enough. It affirms everything I believe to be true about developing software using modern languages. I wish more developers would invest more time in learning better tools.

<comment><USER19> I guess saying "This." didn't seem verbose enough.

Let me propose an incredibly controversial idea: Haskell isn't a better tool, it's just yet another tool. Which is aggressively promoted not so much with actual benefits, but by trying to shame people who prefer other tools by calling them dullards and telling them that they don't know what they are doing.

<comment><USER20> "This." is an abomination, a pox upon the English language, and, what's more, serves absolutely no purpose on a site with little arrows to vote for things you like.

<comment><USER15> Votes are for contributions to discussion, not expressing agreement. Please stop abominating the arrows.

</comment></comment></comment></comment><comment><USER21> The problem I had with Haskell when trying it out was that every time I wanted to use a package with dependencies I ran into "cabal: Error: some packages failed to install. The exception was: ExitFailure 1.". The solution was most often trying earlier versions of the package until it worked or not use the package at all. Cabal just seemed so broken.

<comment><USER22> Not to diminish the Cabal problems here, but you run into similar problems with Maven as well. Version management is a real hard problem. Especially when there is little awareness in producing compatible successors. Especially this problem made my experiences with Haskell somewhat bitter. But I have the same problem (in really productive code) with Maven. Writing a working Maven plugin can be made pretty challenging by that as especially the stuff you want to use in Maven plugins is burdened with incompatibilities.

So, Cabal is in good company in that regard.

<comment><USER23> Haskell packages like to specify requirements using both a lower bound and an _upper bound_. So package A depends on B being version 0.55 <= B < 0.99. Package C depends on B being version 0.90 <= B <= 1.35. So if you installed C before A you will get version 1.35 of B and will now need to either downgrade B or have two versions installed. Chaos ensues.

Why Hackage packagers like to specify upper bounds I'm not sure of. Backwards compatibility either is very hard to achieve in Haskell or maintainers just don't care that much about it. I don't know about Maven so I can't say whether that is as bad. But at least pip, npm and gems are a breeze compared to cabal.

<comment><USER24> "Why Hackage packagers like to specify upper bounds I'm not sure of."

There is a policy that says you're supposed to do this:

[http://www.haskell.org/haskellwiki/Package_versioning_policy](http://www.haskell.org/haskellwiki/Package_versioning_policy)

The idea is that by specifying upper bounds, the package is more likely to build after the dependencies change.

This idea is subject to considerable controversy.

[http://www.haskell.org/pipermail/haskell- cafe/2012-August/10...](http://www.haskell.org/pipermail/haskell- cafe/2012-August/102885.html)

There's also been more recent mailing list traffic on it, but my Google skills are failing me here and the arguments haven't changed all that much.

My opinion is that we are relying too heavily on upper bounds to solve a whole bevy of interrelated, but separate, problems. Other solutions are evolving to help deal with some of the problems. cabal sandboxes allow you to build a package separately from your others, reducing dependency issues. cabal freeze will help you specify exact dependencies, including transitive ones. Another project, Stackage, aims to maintain a whole slew of packages in a buildable state:

[https://github.com/fpco/stackage](https://github.com/fpco/stackage)

<comment><USER23> It's an incredibly stupid policy. As others have noted, other package managers also has the capability of setting upper bounds on package versions and pip also has the ability to freeze your dependencies to specific versions.

However those features aren't necessary to productively use pip for example. Because Python package maintainers are very good at maintaining backwards compatibility (or using deprecation cycles when those are needed) because people that depend on their packages get upset with them. The rules are different for beta releases because it's your own fault if you depend on them and their api changes.

Precisely because specifying upper bounds is encouraged, Haskell maintainers seem to act as if they have a free card when it comes to backwards incompatible changes. In the long run that causes much more packaging troubles then specifying upper bounds saves. Perhaps there's nothing wrong with Haskell nor Cabal, but the Haskell community's way to handle backwards compatibility is wrong imo.

<comment><USER25> Upper bounds are _information_ about what you know your package works with. It makes no sense to throw this away. What does make sense is improving our tooling to allow this information to be ignored in certain circumstances.

I've been on the other side of the fence with a large app written a long time ago that did not specify upper bounds. Now that app is essentially unbuildable given the time I'm willing to put in. If I and all my dependencies had followed the PVP and specified correct upper bounds everywhere, I would still be able to build my app today. No, I wouldn't be able to build it with the latest version of other libraries, but that's not what I want to do.

If you don't specify upper bounds, the probability of your package building goes to ZERO in the long term. Not epsilon...zero. That's unacceptable for me. If it works today, I want it to work for years to come.

<comment><USER24> "Upper bounds are information about what you know your package works with."

Not really; the upper bounds generally are speculative. They specify that the package will not work with particular versions when typically those versions have not yet been released. Often when those versions are released they work fine, which prompts a useless flurry of dependency bumping.

"If I and all my dependencies had followed the PVP and specified correct upper bounds everywhere, I would still be able to build my app today."

I now distribute my packages with the output of the ghc-pkg command so you can see the exact versions the library builds with. That solves your problem without using speculative upper bounds.

I wouldn't expect it to work for "years to come" in any event, though: Haskell changes too much. You probably won't be able to get today's package to work with the compiler and base package that will exist years hence. It's hard to even get an old GHC to build: today's GHC won't build it because of...dependency problems.

<comment><USER25> > Not really; the upper bounds generally are speculative.

Yes, an upper bound is still useful information. It says that a package is known to work with a certain range of dependency versions. This is why I think cabal should support something like < for speculative upper bounds and <! for known failure upper bounds. Then we could have a flag for optionally ignoring speculative upper bounds when desired.

> I wouldn't expect it to work for "years to come" in any event, though

I can still download a binary of GHC 6.12.3. Hackage also keeps the entire package history so there's no reason things shouldn't build for years to come. I'm all for the fast moving nature of the Haskell ecosystem, but we also need things to be able to build over the long term and there's no reason we shouldn't be able to do that.

<comment><USER24> "I can still download a binary of GHC 6.12.3."

Which won't even work on current versions of Debian GNU/Linux because the soname for libgmp changed.

"Hackage also keeps the entire package history so there's no reason things shouldn't build for years to come."

No it doesn't. I had specified a dependency on a particular version of text, and it summarily vanished from Hackage.

Even assuming that it's a worthwhile goal to make sure _old_ software builds with _current_ tools, upper bounds do nothing to get you there.

<comment><USER25> > Which won't even work on current versions of Debian GNU/Linux because the > soname for libgmp changed.

Again, my argument assumes that you're not upgrading to current versions of things. Enterprise production-grade deployments often fix their OS version because of this. There's a reason RHEL is so far behind the most recent versions. If you are upgrading, then you'll be fixing these problems incrementally as you go along and it won't get out of hand.

> No it doesn't. I had specified a dependency on a particular version of text

You're making my point for me. It looks like you were probably depending on 0.11.1.4, which doesn't exist now. Your problem would not have happened if you had used an upper bound of "< 0.12" like the PVP says instead of locking down to one specific set of versions. If you had done that, cabal would have picked up subsequent 0.11 point releases which should have worked fine. Also, I can still download text-0.1 which is more than 5 years old.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> I didn't know what Haskell code looked like so I went to the official website and there was this code example[1]:

qsort (p:xs) = qsort [x | x<-xs, x<p] ++ [p] ++ qsort [x | x<-xs, x>=p]

Is this a good example of good Haskell code?

[1] [http://www.haskell.org/haskellwiki/Introduction#Brevity](http://www.haskell.org/haskellwiki/Introduction#Brevity)

<comment><USER27> I think that's a bit extreme for an example - I'd go for the following version, which is less concise but easier to read:

      quicksort :: Ord a => [a] -> [a]
      quicksort []     = []
      quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
          where
              lesser  = filter (< p) xs
              greater = filter (>= p) xs

So, what's going on here? First you have the declaration of the function - <USER2> this case, you have a list of items of type A which can be compared to another one (Ord means "I can use <, <= and so on over this element"), and you'll return a list of type A.

Then you have the base case - if the list is empty, you'll return an empty list.

After that you have the case "item++[list of items]" (note that the second one can be an empty list), where you return [list of smaller items]++item++[list of larger items] (the two lists are defined under the "where" \- filter removes elements from a list).

Note however that, instead of "(lesser) ++ item ++ (larger)" you have "(quicksort lesser) ++ item ++ (quicksort larger)" \- this will call the algorithm recursively over smaller lists, but I bet you already knew that.

Both pieces of code do the same thing, but I think mine is what you'd expect from a typical piece of Haskell code - the one you have is closer to "see how small I can make this function".

<comment><USER26> Thanks for the insightful reply! I can understand most of the code but I still do not understand how should I know what "p" and "xs" is. Is it something you get when you declare the function as being "possible" to order (I believe that's what "Ord" means based on your explanation)?

<comment><USER28> One last thing I'll add to the other replies, the example shown is a bit unusual, like indexing a for loop with "q" instead of "i". The traditional pattern is this:

        (x:xs)

And that reads "x and the rest of the x-es", that is, the "xs" is not "ex ess", but "plural x", whatever remainder remains of the list of "things" in that list. (p:xs) is a bit weird, but if I saw (p:ps) I'd understand.

Also, Haskellers often use "x" here because they write a lot of functions that operate on "anything"; for instance, in this case, you don't really know _what_ you're sorting, so, call it x because what other name is any better? There's a set of about 10 of these conventional one-letter variable names. (A few more than conventional imperative languages, but not obscenely so; imperative has i, j, and k for iteration, a and b in sorting, sometimes f for function, and p for pointer.)

<comment><USER6> I assume here it's p for pivot, xs because the rest of the list is just items, not pivots (as ps would imply). I'm not sure I _love_ the naming choice, but it has a logic to it.

</comment></comment></comment></comment></comment><comment><USER29> i'd like to hear more about employers' perspectives on hiring for "an uncommon language without a comparatively sparse industrial track record." there was some debate about it in the clojure 1.6 release announcement. the author of the article didn't find it to be a problem, but then he was apparently only hiring one person.

good post, Tikhon!

<comment><USER25> When I left my last Haskell job, my employer put out ads to the Haskell community and quickly got a pool of 5-10 solid applications. A good number of those were from people outside the U.S. which was a no-go for them. After waiting a few weeks they decided to open it up and not require Haskell experience. I looked through a number of these resumes and there was a _massive_ drop in quality. It was like night and day. None of those applicants were even remotely interesting IMO. They ended up waiting a few more months and finally found a Haskell applicant in the U.S. that they were happy with. If you're willing to accept people working remotely your chances of finding someone are much better.

</comment></comment><comment><USER30> I'm curious about the claim that it only takes a few days to get people productive working in Haskell. I like the language a lot, but learning it has definitely been slow compared to any other language I've learned. It just seems like there are a lot of changes to how you think.

Is this a feature of the way your code is structured that simplifies what people have to understand about the language before they can contribute?

<comment><USER10> To be fair to the OP, the original claim was: "People who have prior functional programming knowledge seem to find their stride in just a few days." I would be somewhat surprised if someone with no prior functional programming experience could be productive in a few days in Haskell, because as you say, there are a lot of changes to how you think about programming. It's a lot easier for people with experience in a Lisp, and even easier yet for people with experience in another ML descendant.

All that said, the structure of the code definitely does help a lot in lowering the bar for contributions. When Don Stewart was on the Haskell Cast [1], he mentioned that the way they use Haskell allows contributions from people who not only have no prior functional experience but who have little CS background at all past basic programming literacy. Much of the ability to do this comes from Haskell's rigorous isolation of side effects.

[1]: [http://www.haskellcast.com/episode/002-don-stewart-on- real-w...](http://www.haskellcast.com/episode/002-don-stewart-on-real-world- haskell/) around 42:40 or so

<comment><USER30> I probably should have been more explicit: I use higher order functions and recursion all over the place in higher level languages that I use, so I'm familiar with parts of functional programming. But structuring impure programs in Haskell still has taken a long time to get used to (and I'm not great at it yet).

</comment></comment></comment><comment><USER31> > I wouldn't write an OS kernel in it, but Haskell is way better than PHP as a > systems language.

What's the definition of "systems language"? If PHP could even remotely be considered an option, the definition is clearly not what I think it is...

</comment><comment><USER32> Haskell is a terrible choice for a production system.

I know well over a dozen programming languages. I have a stronger theoretical background in mathematics, computer science, and compiler design than most web developers. But Haskell has always been utterly mystifying to me.

I've attempted to learn Haskell several times, and I've had monads explained to me several times right here on HN -- but I simply don't seem to be able to wrap my mind around the concept.

To be sure, if I had a year or so to devote to studying the theory behind Haskell's type system, I might indeed become more productive writing web applications in Haskell. And I don't doubt that there are certain problems in logic programming or language theory for which Haskell provides useful concepts and powerful tools, to the point where the solutions to important problems may have trivial implementations.

I've always thought that a major problem with Haskell for web development is: (A) You'll have difficulty finding people who both know Haskell and are interested in web applications, and (B) you'll have difficulty training web developers in Haskell. The author of the article apparently has a training process that gets around (B), and I'd kind of like to know what it is -- a way to learn Haskell without a ton of study.

<comment><USER33> I've seen experienced programmers failing at learning Haskell for the same reason experienced programmers fail at learning Vim, the initial learning curve is very steep, and they don't see the value on climbing that wall. Now, if you know Vim, ask yourself, was it worth it? I'm convinced 99% of people would say yes. It is the same with Haskell, all those seemingly complex concepts come with a big reward.

Learning Haskell is easier with a strong functional programming background; sadly CS students don't learn much about FP, so having lots of experience in CS and compilers won't necessarily put you in a better position than somebody who has no formal background in CS but lots of programming experience.

A math background on the other hand should help you. Learn about how category theory is applied in Haskell, and you're already half way there. Monads are just a piece of the puzzle.

I do agree with your last three points. I haven't used Haskell in production, so my experience in "real world Haskell" is limited, but it has helped me immensely in my daily work with other languages. Haskell forever changes the way you think and approach problems, just like Vim changes the way you write and edit code; it will make you a better programmer.

<comment><USER32> > the same reason experienced programmers fail at learning Vim, the initial > learning curve is very steep, and they don't see the value on climbing that > wall.

This is definitely me. I only got really into Linux with Debian-like systems after Nano became those distributions' standard editor. I know the bare minimum about vim for occasional, minimal editing of configuration files. I only ever use it when I'm stuck with a rescue prompt or some third-rate distro that has nothing else. Usually one of my first goals is to get either a GUI, or file transfer capability, or a package manager up and running; then I stop using it.

<comment><USER6> _" I only got really into Linux with Debian-like systems after Nano became those distributions' standard editor."_

I'd recommend learning an editor that has any sort of power - vim, emacs, or something lesser known. Trying to get anything done in nano is like pulling teeth. Yeesh.</comment></comment></comment></comment>


Ask HN: Why don't so many startups use ads (like AdSense) to monetize? - <AUTHOR> I've seen a lot of startups that launch without any kind of monetization (like Product Hunt, remoteok.io)<p>They could be earning revenue from day 1 by using AdSense, so why don't they? <comment><USER2> In addition to what others have mentions, the returns are typically low as well.

Going off what others said, since Google Adsense ads are targeted, that means your competitor would hypothetically be advertising on your own site, and second, startups usually are in niche industries where the bid prices for ads are low.

Unless the startup is in the business of legal help for mesothelioma, they can realistically expect a dime or two per click on ad. Consider an ideal 2% CTR (click through rate), and you'd need more than 5000 visitors to pull in only about $20.

<comment><USER3> >mesothelioma

Lol. I see someone has done some seo/marketing in the past.

</comment></comment><comment><USER3> It's bad for user experience. Also, you're getting paid to encourage users to LEAVE your site.

</comment><comment><USER4> Because ads irritate potential users/customers.

Also, a bit more specific to Product Hunt, they're mostly targeting the dev crowd; many of whom would be using an Ad Blocker anyways.

</comment><comment><USER5> Look at the shitstorm that happened when Pinterest started using skimlinks.

Admittedly, they did it in a stupid way, but still.</comment>


Show HN: Chat and Slash – An RPG You Play in Slack, Now in the App Directory - <AUTHOR> https://www.chatandslash.com/ <comment><USER2> Hey Dan!

As a fellow bot game creator, this is really cool.

what's your plan for monetization?

Thanks!</comment>


Flow vs. Typescript: type systems for Javascript - <AUTHOR> http://djcordhose.github.io/flow-vs-typescript/2016_hhjs.html#/ <comment><USER2> Despite being a fan of Flow, I do think it's prudent for any recent comparison to include SOME features on TypeScript's timeline, including non-nullable types in version 2.

[https://github.com/DJCordhose/flow-vs- typescript/pull/2](https://github.com/DJCordhose/flow-vs-typescript/pull/2)

<comment><USER2> My bad, it's totally mentioned in the next couple of slides, not sure how I missed it the first time around.

<comment><USER3> can I use TS2 already?</comment></comment></comment>


Go Daddy No Longer Supports SOPA - <AUTHOR> http://www.godaddy.com/newscenter/release-view.aspx?news_item_id=378&isc=smtwsup <comment><USER2> _> In changing its position, Go Daddy remains steadfast in its promise to support security and stability of the Internet. In an effort to eliminate any confusion about its reversal on SOPA though, Jones has removed blog postings that had outlined areas of the bill Go Daddy did support._

 _> "Go Daddy has always fought to preserve the intellectual property rights of third parties, and will continue to do so in the future," Jones said._

Translation: we got caught this time, but will not hesitate to do it again.

<comment><USER3> This is hilarious!

More translations that might make your day:

> In an effort to eliminate any confusion about its reversal on SOPA though, > Jones has removed blog postings that had outlined areas of the bill Go Daddy > did support.

Translation: we said some pretty stupid things yesterday.

> Go Daddy ... worked with federal lawmakers for months ... legislation first > introduced some three years ago ... entire Internet community ... ensure the > integrity of the Internet

Translation: we've been neck-deep in this legislation, and will be pushing the next version of this bill too. Seized domains would have been a de facto transfer to Go Daddy.

<comment><USER4> Here's another from last night:

> Go Daddy has received some emails that appear to stem from the boycott > prompt, but we have not seen any impact to our business. We understand there > are many differing opinions on the SOPA regulations

Translation: Screw you guys, wait, what did you say Jimmy Wales?

[http://arstechnica.com/tech-policy/news/2011/12/godaddy- face...](http://arstechnica.com/tech-policy/news/2011/12/godaddy-faces- december-29-boycott-over-sopa-support.ars)

[http://arstechnica.com/tech-policy/news/2011/12/godaddy- face...](http://arstechnica.com/tech-policy/news/2011/12/godaddy-faces- december-29-boycott-over-sopa-support.ars)

</comment></comment></comment><comment><USER5> The only thing this means is that community action actually made a difference. That's immensely reassuring.

Can we keep doing this, but for SOPA itself?

<comment><USER6> Businesses run the government. Money controls business.

This happened to be one of those issues where it was very easy to clearly show the company that their particular actions would not be tolerated. Not only that, but the difficulty of moving your support away from them was tremendously easy as well.

Because of limitations, not all industries enjoy this sort of free market- esque lateral movement. Comm companies, for instance, enjoy the benefits of an established infrastructure to keep other players out, and to keep you contracted with them, even under anti-consumer behaviors.

This was just a case of all the pieces lining up just right, and the market actually aligning with consumer demand.

<comment><USER7> That's 1 down, 141 to go. Who's next? [http://judiciary.house.gov/issues/Rouge%20Websites/SOPA%20Su...](http://judiciary.house.gov/issues/Rouge%20Websites/SOPA%20Supporters.pdf)

<comment><USER8> There's no good place to say this, but that URL bothers me every time I see it. What the hell are "Rouge Websites?" I think they meant something else. :-P

<comment><USER9> Clearly, they mean websites that are red. Red means communist. We must protect ourselves from the threat of communism.

<comment><USER10> Make up America!!1 Every year we lose tens of thousands of dollars to counterfeit online cosmetics!

Fight the powder! We need SOAP to unmascara the pirates!

</comment></comment></comment></comment></comment></comment><comment><USER11> Don't be fooled, people. I will believe GoDaddy when they provide proof that they have indeed stopped supporting SOPA. They claim that they've been working with lawmakers for months; what is to stop them from publicly "withdrawing" support for SOPA, while they continue to support it behind the scenes?

 _Until SOPA and its offsprings are dead, keep the pressure on GoDaddy and other supporters of SOPA! Don't let these weak public statements distract you; there's a lot that goes on behind the scenes._

<comment><USER12> The proof I'll accept?

Publicly telling Congress that GoDaddy supported SOPA, but had to back off when customers told them it's a bad idea -- and that Congress should do the same.

</comment></comment><comment><USER13> No matter what they say, GoDaddy hasn't reversed their position until they do so in front of Congress and publicly withdraw their letter of support from the judiciary committee hearings.

<comment><USER14> what could they say? we know sopa would make us some money but even before it's legilated it started to cost us money than we had to withdrew our support?

<comment><USER15> "After further analysis it has become clear that SOPA is not constitutional and we cannot, in good faith, support this bill?"

</comment></comment></comment><comment><USER16> Reversing a decision only after costumers leave you in droves doesn't show your trust worthy. They either didn't understand the bill (in which case they shouldn't write a letter supporting it), or they are only changing now waiting for the bad PR to die down. If you have domains with them it is still worth switching to a company that will always publicly support freedom over oppressing peoples views to attempt to prevent some IP infringement. The rights to freedoms are more important than the rights to absolute control over corporations IP.

<comment><USER17> There is no way they didn't understand the bill. They fully understood the bill and probably were vying for a way to benefit from the bill. Everyone understands how bad this bill is for the Internet, unless someone has something to gain from it.

GoDaddy must have had something either legal or under the table that would benefit them immensely if they supported the bill.

</comment></comment><comment><USER18> Too little, too late. Fuck them.

Of course, I would have said that before they stopped supporting SOPA. They've always been a sleazy spammy company whose advertising is full of blatant sexism. We should not have been surprise by their support of SOPA. Sleaze will do as sleaze does.

<comment><USER19> I've never been on their website (most of us over here use gandi.net) and was curious what you meant by _blatant sexism_ and I just have to say wow. Just wow. It's so stupid it looks fake.

<comment><USER20> Be extremely thankful you don't have to actually _use_ their goddamn site for anything.

</comment></comment></comment><comment><USER21> > In changing its position, Go Daddy remains steadfast in its promise to > support security and stability of the Internet. In an effort to eliminate > any confusion about its reversal on SOPA though, Jones has removed blog > postings that had outlined areas of the bill Go Daddy did support.

Translation: Go Daddy removed all incriminating evidence of it's past.

</comment><comment><USER22> I can't believe all the hate going on. They publicly admitted they were wrong and changed their stance. I don't care if you are a gigantic corporation or not, that takes guts and I can at least respect that.

There's no doubt they did it to stop the bleeding, but they still did it. And that's what we want right? For SOPA to lose traction, and for it not to pass. Yet it seems like this has almost become a dump on godaddy festival. Please don't lose sight of the reasons as to why we as rational internet using human beings did this in the first place.

<comment><USER23> I don't think it takes guts. I think it takes your CFO making some financial projections and your PR lead screaming at you for screwing up.

This isn't a very "authentic" feeling turnaround. It feels like PR damage control, which is exactly what it is. Its pretty clear looking at their Twitter account that Godaddy doesn't really understand social media, and from this response they don't understand PR in 2011.

In regard to their Twitter responses: <http://news.ycombinator.com/item?id=3386961>

<comment><USER24> Damned if you do, damned if you don't.

</comment></comment></comment><comment><USER25> > "Go Daddy has always fought to preserve the intellectual property rights of > third parties, and will continue to do so in the future"

Maybe I'm being overly cynical, but this reads to me like: we still support SOPA, but we're going to pretend we don't, because we realise our customers are against it, but feel we can fool them by making a pro forma denunciation of SOPA.

I'm not a customer of Go Daddy, but if I was I would still transfer my domains. This declaration isn't good enough for me.

<comment><USER26> Agreed. They were totally for SOPA yesterday, and even went so far as to publicly antagonize people who disagreed with their position. Their general counsel was also an architect of the bill. Forgive me if I don't quite buy that they're going to stop pulling strings in SOPA's favor behind the scenes.

</comment></comment><comment><USER27> This is the right outcome, and they should be commended. I think SOPA is awful, and they were on the wrong side of the argument. Subsequently, they listened to customers and changed their position. (Yes, it's self-interest, just like you and I engage in.)

One should resist the urge to say "yeah but they're still awful people" unless one is willing to bring the same passion to everyone else on the list of supporters.

Again: correct outcome and for the right reasons.

<comment><USER28> I don't think they should be commended for backing away (only after huge public outrage) from a position that was despicable in the first place.

I'm happy to forget about them for a while longer.

<comment><USER27> And that's fine! They've turned you off as a customer, based on issues that are important to you.

I'm simply pointing out that (perhaps) outcomes matter a bit more than our indignant feelings.

<comment><USER22> I totally agree with you. The real story here is that a large player in the internet (self proclaimed "World's #1 Domain registrar") crossed the line--to the "good side", therein lending more power to the cause of stopping this thing.

<comment><USER28> No, the "good side" is opposing censorship and DNS filtering.

Read what they wrote:

 _Go Daddy is no longer supporting SOPA, the "Stop Online Piracy Act" currently working its way through U.S. Congress.

"Fighting online piracy is of the utmost importance, which is why Go Daddy has been working to help craft revisions to this legislation - but we can clearly do better," Warren Adelman, Go Daddy's newly appointed CEO, said. "It's very important that all Internet stakeholders work together on this. Getting it right is worth the wait. Go Daddy will support it when and if the Internet community supports it."_

They are explicitly just backing off on this specific bill with the intent to do it "better" in the future.

GoDaddy sounds to me like they're reaffirming their support of the principle of DNS-based censorship and the domain seizure practices they currently participate in.

</comment></comment></comment></comment></comment><comment><USER29> My lord - I'm reading the response - and it gets worse:

"Go Daddy and its General Counsel, Christine Jones, have worked with federal lawmakers for months to help craft revisions to legislation first introduced some three years ago. "

Go Daddy wasn't simply _supporting_ SOPA - they were involved in creating it. They used their expert knowledge of DNS and DNS systems to create a system, which, I'm sure, would have provided them some competitive advantages.

If anything, this makes them even less trustworthy as an registrar than they were previously.

</comment><comment><USER30> Realistically, the best way to stop systemically bad legislation like SOPA is just to keep delaying and delaying it until it loses momentum and peters out (at which time another systemically bad piece of legislation will arrive to take its place, starting the cycle over again).

<comment><USER31> With an effective enough response, we may be able to turn this into a proverbial "third rail" that no one is willing to touch.

Don't lose the momentum.

</comment></comment><comment><USER32> Does anyone know when Bob Parsons stepped down as CEO? I realize he's still the Executive Chairman, but the "About GoDaddy" section at the bottom of the page still refers to him as CEO. The article also refers to Warren Adelman as "Go Daddy's newly appointed CEO."

<comment><USER32> According to this article, just over a week. Talk about stepping in "it".

[http://techcrunch.com/2011/12/23/godaddy-ceo-there-has-to- be...](http://techcrunch.com/2011/12/23/godaddy-ceo-there-has-to-be-consensus- about-the-leadership-of-the-internet-community/)

</comment></comment><comment><USER33> Next step: GoDaddy's General Counsel, Christine Jones, who is an architect of SOPA, needs to resign.

</comment><comment><USER34> I am still going to transfer all of my domains anyhow. They should not have supported it from the start.

</comment><comment><AUTHOR> I've noticed they are directly tweeting to people like @aplusk and @photomatt, trying to get the word out. Obviously the community has made a dent in their bottom line.

<comment><USER28> Well not necessarily.

Bad publicity has an impact all its own at most companies. For example, they have a whole Marketing department trying to get their name out there in a positive light. When their phones light up with every member of the press wanting quotes (press contacts they've spent years working on their relationship with) the executives have to get together and talk about it and come up with a unified response that won't blow up on them like CarrierIQ.

It's a big big deal for a public-facing company. Bigger than, say, a small decrease in the rate of new $2 account customers.

</comment></comment><comment><USER35> I set up a Namecheap account and purchased a domain yesterday. No terrible upselling, pretty straightforward shopping cart (not a fan that it didn't take Discover, but no biggie). Overall, it was a pleasant experience.

I'm a longtime Go Daddy customer and have several domains with them.

I've thought about moving from GoDaddy, but never made it a priority. But I finally got motivated enough to see the process of switching might not be as painful as I thought. Now that I've seen what else is out there, it's go time. As my domains expire in the next few months, I'll switch them over to Namecheap.

At least for me, it's too little, too late this time for Go Daddy.

<comment><USER36> I wouldn't wait; the process takes some time and if you put it off until the last minute you will be forced to stay with godaddy. You are not able to transfer a domain if there is less than 7 days left until expiration. do it now and namecheap(or most registrars) will honor the remaining time on the contract and add the year that you buy onto it. really no reason to wait.

<comment><USER35> If that's true, then I'll go ahead and transfer them now. One of my concerns was losing money on transferring them way before they expire. Thanks!

<comment><USER37> No worries - additional time gained by the transfer is always appended to the current expiration date on the domain

</comment></comment></comment></comment><comment><USER38> I could've sworn I read a post from them yesterday saying they didn't care and it wasn't affecting business.

<comment><USER39> I could've sworn they said they would ignore negative customer feedback and spin off a company called "Qwikster".

</comment></comment><comment><USER40> GoDaddy has been under fire for years for various reasons. While the SOPA boycott was definitely worthwhile and effective, we should really understand the power that the community has to influence a company's practices, and maybe shouldn't wait until it gets as bad as SOPA support to do this again in the future?

<comment><USER6> You preclude the possibility that perhaps people will only act when it actually gets as bad as SOPA.

Just as a company is motivated proportionally by money, a person is motivated by proportionally by how much something affects them.

</comment></comment><comment><USER41> The power of reality and real feedback from technology leaders - and not just a suit in an office checking the [yes] box on a document.

Amazing discussions on Reddit and Hacker News - it'll be till Sept 2012 that this goes to vote again, let's make sure the SOPA discussion doesn't die during this time.

Nice job keeping the fire on this.

</comment><comment><USER26> Too late. Their petulant and dickish responses from the last few days show their true feelings on the issue.

<comment><USER42> Exactly, I'll still be transferring my 21 domains out of GoDaddy before the new year.

</comment></comment><comment><USER31> Crocodile tears

At this point, perhaps I'm biased and this is not the most productive response, by my personal opinion is still to "nuke 'em".

Far too little and way too late -- they were part of getting this monstrosity rolling, and their current action does little to stop it.

Put it in the entertainment industry's own lingo: The world needs an "example". And I think we'd have a hard time finding a better candidate (though there may be a some yet more deserving).

</comment><comment><USER43> Boycotting is one of the most effective strategies to use when dealing with a company whose actions or stance you don't like. I'd wish more people started doing this when dealing with insurance companies,ISPs, record labels, facebook, heck even the government. After all, they are nothing without their customers.

</comment><comment><USER44> Until GoDaddy makes an official public statement to Congress, the transfers are still on.

</comment><comment><USER45> This is great, and obviously from pressure. I suspect thought that it wasn't the hundreds of relatively unknown sites that turned it around. I'd bet it was Wikipedia. At some point even GoDaddy had to realize that this looks really, really bad.

Thanks Wikipedia. (and I hope they continue the switch anyway)

<http://twitter.com/#!/jimmy_wales/status/150287579642740736>

<http://news.ycombinator.com/item?id=3387071>

</comment><comment><USER46> I cannot trust a company who changes their philosophy based on how well it impacts their business.

<comment><USER47> They didn't change their philosophy.

For better or for worse all companies' philosophies are to make money, at least the public ones. They can be sued if they deviate.

</comment></comment><comment><USER48> Read their press release. They still basically support it, they're just temporarily pausing public support because we're all upset about it.

Action speaks louder than words. Let GoDaddy know they actually have to _do_ something that is in the interests of a free and open internet. Taking action that is harmful and then giving lip service to freedom and spewing platitudes is not enough. Let them know it:

Stephanie Bracken, PR Specialist 480.505.8800 ext.4451 email@example.com

</comment><comment><USER49> Someone posted this in a comment section and I had to say it, it's clever.

If neither side strongly supports or opposes something but lobbyists strongly support it then expect it to pass John Doe.

The best way to stop SOPA would ironically be the democrats strongly coming out in support of the bill, which would make the house suddenly refuse to even vote on SOPA, and would cause the bill to be filibustered in the senate. Why, because republicans have to oppose anything Obama/democrats are for.

Republicans strongly supporting SOPA would also likely kill it. The house would pass it, and Reid would refuse to even bring it to a vote in the Senate, or would bring it to a vote knowing that it'll lose just to show republicans that it can't pass the senate.

If you doubt me then look at the payroll taxcut fight going on right now. Republicans always support tax cuts, except when Obama & democrats support it, like the payroll tax cut being discussed.

The pharmacy lobbyists know this as well, there was part of Obama's healthcare law (I forget what part) that big pharma wanted removed from the bill that a lot of democrats had opposed when the healthcare law was written. Big pharma lobbyists told Republicans not to go on a public rampage demonizing that provision and blaming it on Obama, republicans demonized it and Obama for signing it into law anyway, and dozens of democrats who had previously voiced opposition to the provision voted against repealing the provision when the House voted on it months ago, and Reid refused to even hold a vote on it.

So the moral of the story? If we want to kill SOPA we just need to convince one political party to strongly support SOPA. The other party will reflexively strongly oppose SOPA and block it from ever becoming law.

</comment><comment><USER50> They look so desperate right now on their Twitter feed, furiously tweeting everybody to let them know they're once again a "cool kid".

I wouldn't put it past them to support SOPA once enough people transfer back/keep their business with them.

<comment><USER51> What will they gain by tweeting the _same exact thing_ over and over so many times?

</comment></comment><comment><USER41> Here's the Reddit discussion - [http://www.reddit.com/r/technology/comments/no6b1/go_daddy_n...](http://www.reddit.com/r/technology/comments/no6b1/go_daddy_no_longer_supports_sopa_latest_blog_post/)

<comment><USER52> Is cross-posting links an attempt at getting karma/upvotes?

<comment><USER41> Its an attempt to getting two smart groups of ppl talking about equal weighted topics....

Karma is a benefit...

carry on...

</comment></comment></comment><comment><USER53> I agree with a lot of people here. This is clearly a direct result of the harsh public backlash they've faced from the community. This statement can only be taken at face value until they do much more than post a public statement rescinding their support. We should continue pushing them and they should publicly speak against SOPA to its supporters and in Congress. They need to walk the walk not just talk the talk.

I am, however, a little confused.

Wasn't the goal of the campaign against GoDaddy to convince them to no longer support SOPA? Isn't this a small victory? If people in the community are not going to support them no matter what they do, where is their incentive to change behavior? I understand the cynicism but we need to also reward companies doing the right thing, even if they took some wrong turns along the way.

[edit: formatting]

</comment><comment><USER54> I read their statement, and it seems like lip service. The culture of a company/philosophy of the CEO doesn't turn on a dime.

</comment><comment><USER55> I've been reading over GoDaddy's blog posting from yesterday, and I just can't dismiss the feeling that GoDaddy's position as one of the largest domain registrars has given them a different view of American businesses facing difficulty with these so-called "foreign-based websites."

The blog posting emphasizes several times the importance and need to protect American businesses, which to me seems patriotic and sympathetic to promoting a good intention. I'm sure they didn't realize they would be "villanized" as a result of their actions.

Disclaimer: I don't support SOPA.

<comment><USER56> As a registrar that does business internationally, it may seem (to an American) that it is appropriate for them to be patriotic ... but it is certainly not a good way to continue appealing to international consumers. The Internet should be boundary-free.

</comment></comment><comment><USER57> While I applaud GoDaddy for having reversed their position on SOPA, I believe they did so not because it was the right thing to do but because they feared for their bottom line.

I still think people should stay away from GoDaddy. You should not do business with anyone whose first instinct is to support defective legislation when they so clearly should know better. GoDaddy have shown what their values are. It is going to take a lot more than a press release to convince me that they are deserving of my business in the future.

</comment><comment><USER58> I don't care what GoDaddy says to try and prevent a boycott.

They already did the damage, and they've showed many, many, many times over that they do not deserve to have anyone's business.

The boycott should remain.

</comment><comment><USER59> Why is everyone so scornful? I am not suggesting we forgive and forget, but shouldn't we be a little more understanding? What's with the "no flip-flop" culture we have nowadays?

<comment><USER60> I'm scornful because their "recanting" still explicitly names dns filtering as A Good Useful Thing that they are proud of helping refine. They explicitly say they are proud of and would love to support this legislation. They don't get it.

"Go Daddy will support it when and if the Internet community supports it."

</comment></comment><comment><USER61> GoDaddy previously invested time and money into supporting this legislation: "have worked with federal lawmakers for months to help craft revisions to legislation first introduced some three years ago."

Let's see them invest some time and money into stopping SOPA. Making a statement is one thing, but money is speech these days and they can afford better lobbyists than we can.

</comment><comment><USER62> The cynic in me is wondering whether this was a strategic move by SOPA supporters to remove a very easy source of negative press. I suspect the other pro-SOPA organisations are going to be a lot harder to boycott effectively.

The anti-SOPA movement is going to view this as a major win, which may distract from the bigger issue.

</comment><comment><USER63> Bunch of weasels.

</comment><comment><USER64> The question is now, if they do not "support" SOPA, willthey comply with any SOPA related domain takedowns should SOPA pass?

Sure, they don't overtly claim to support this law - but their actions after the fact shall really show whats going on inside.

Anyone recall when Earthlink was the only company to refuse to comply with allowing Carnivore boxes in its network?

Even though Earthlink, as a Scientologist founded provider, already had an internal policy of scanning all the traffic on their network to begin with.)

When the government shows up and wants something, very few companies refuse to comply. Even when they do not support the actions of the government.

We should be standing up to those companies as well - but we tend to forget quickly.

Nobody stood up to AT&T when they spied on EVERYONE for the crooks in DHS/NSA/CIA.

<comment><USER28> The lone whistle-blowing engineer, the EFF, Wired mag, and others stood up to AT&T. <http://www.wired.com/science/discoveries/news/2006/01/70126>

The reality is though that AT&T is far less of a public-facing company with a much more locked-in customer base. It's very easy to switch away from a company like GoDaddy and they know it.

</comment></comment><comment><USER65> It's too late GoDaddy! You're an evil company and have been so for years. Now the internet community has finally seen your true colors. Take your war- mongering, right-wing founder and go to hell for all I care. I hope everyone continues the backlash against you.

</comment><comment><USER66> I say still boycott godaddy, just for having supported SOPA in the first place. The problem is Godaddy still does support and only pulled out, since threats of boycotts were made by there customers. LEAVE GO DADDY

<comment><USER67> This can't be reiterated enough. A company that is so evil, that it could support SOPA in the first place, will not lose that evilness and rotten culture overnight.

</comment></comment><comment><USER68> Too late. The damage is done, in my opinion.

</comment><comment><USER69> "Go Daddy has always fought to preserve the intellectual property rights of third parties."

Doesn't that kind of imply that GoDaddy is less than concerned about the rights of domain owners? Guilty until proven innocent, I guess.

<comment><USER70> One could argue that if they fought to preserve the IP rights of third parties, they wouldn't be in the business of enabling the infringement of those rights by selling domain names and server space.

</comment></comment><comment><USER71> Christine Jones needs to encourage Congress not to pass this on behalf of Godaddy for this to be more than just a PR move. If they don't reverse their support in Congress, this is nothing more than a copout.

</comment><comment><USER48> To those of you who are able to vote in any of the Republican primaries: Ron Paul has always opposed SOPA.

[http://arstechnica.com/tech-policy/news/2011/11/strange- bedf...](http://arstechnica.com/tech-policy/news/2011/11/strange-bedfellows- nancy-pelosi-ron-paul-join-sopa-opposition.ars)

[http://www.techdirt.com/articles/20111115/09233216778/ron- pa...](http://www.techdirt.com/articles/20111115/09233216778/ron-paul-comes- out-against-sopa-joins-other-elected-officials-saying-no-to-great-firewall- america.shtml)

</comment><comment><USER72> The fact that GoDaddy recanted is significant because any other internet companies will think twice before supporting SOPA, atleast publicly but that matters a lot. Maybe if US citizens could get more aware of the situation, they can make a dent in Media moguls' purses as well.

PR matters a _lot_ to companies, if general population shows this kind of activism, SOPA can be defeated. Good luck US, the rest of the world is waiting for you to nip this censorship in the bud before it spreads like the virus in Resident Evil movies.

</comment><comment><USER73> This is good for multiple reasons. One, it shows people that their voices do matter. They can contact their vendors and express opposition and if there are plenty enough of them, they can exert influence. Two, it shows other companies that there are enough people out there who are against SOPA that a big vendor like GoDaddy has had to flipflop its support for it because it threatened their bottom line. It will at least force them to have another conversation about withdrawing SOPA support.

</comment><comment><USER74> But now the question is whether this is just damage control or if they really support anti-SOPA efforts now. Either way, they learned not to fuck with the Internet (their customers).

</comment><comment><USER75> I think the positive outcome here is that Go Daddy publicly responded to customer pressure over what was no doubt a lot of 'insider' pressure from the folks at the RIAA/MPAA etc.

Getting the public and Congress educated on the realities of information value is a painfully slow process. However, as the wave finally crests I think our grandchildren will look back on this and say "Wow, you all really thought some weird things." (of course they will likely think that anyway but still)

</comment><comment><USER76> I just tried to follow this link on my phone and it redirects to godaddymobile.com to show me some spam and no article. And they're in the Internet business...?

This company just reeks of clunkiness and tackiness. As keeps being mentioned, I can't believe tech-savvy, well-informed, well-educated people (e.g. YC founders) could go on godaddy.com, see their marketing material ("Go Daddy Girl (R)" ... what?!), their interface etc., and still go ahead and give them money.

</comment><comment><USER77> I think a lot of people here are missing the point. It's not about GoDaddy. It's about results. This is a very public about-face, and regardless of their actual intent shows that these types of campaigns can be successful.

May I suggest the next target? Comcast and the other cable providers. We should threaten to cancel our cable service unless they stop supporting SOPA. Obviously they will not do this, so we should actually cancel our cable subscriptions!

</comment><comment><USER78> Well that was a quick turn around.

</comment><comment><USER79> This has just proved that we need to redesign the society, we are living with an obsolete model pre-internet. Who need their interest represented by one individual when everyone can have his voice now!? It's really evident that SOPA is an example of antidemoCrazy.

I'm glad Go-Daddy changed his mind. Now, this was just one battle, the war is not over! Let's stop when SOPA is no more, let's stop when we can decide what's best for all of us!

</comment><comment><USER79> Go Daddy is knowing how it feels to be blocked, internet reaction against Go Daddy was a reflex of what SOPA want to do. How does that feels Daddy?

</comment><comment><USER80> I commend them for changing their stance, but I've already transferred my domains, and it's not like I'm going to transfer them back now.

</comment><comment><USER81> Fantastic. I guess now we only have shady business practices, misogyny, and animal cruelty as reasons to not do business with GoDaddy.

</comment><comment><USER82> I call BS. Sorry Parsons the boycott is still on.

</comment><comment><USER83> This is great! We should do this to every company on the list until there's no one willing to publicly support this nonsense.

</comment><comment><USER84> If they still support the Senate version (PROTECT-IP / PIPA) this means little. I'm ecstatic that the anti-SOPA crowd is advancing by leaps and bounds on an almost daily basis here, but in the next month we need to up the pressure on PIPA too - especially because it's farther along (full Senate set to discuss it January 24)

</comment><comment><USER85> Again, the people have won. I am truly looking to see someone productize the power of the people on internet, and urging us to vote for and against a company with our dollars. A place where we can see what each company is up to (socially, and in other ways), and encouraging or discouraging consumers to work with them.

</comment><comment><USER86> This doesn't mean it's okay to use them. Even if they're sincere in this turnaround (and I highly doubt they are), the fact that they lent support to this legislation at all shows that they are at best clueless, and at worst evil. In either case, they aren't going to be getting my business anymore.

</comment><comment><USER87> A lot of behind the scenes action was probably going on here. Lots of negative scenarios could have played out for GoDaddy. Bob will do as he pleases, but other executives and board members could have pushed back to save key relationships.

</comment><comment><USER88> > _Go Daddy and its General Counsel, Christine Jones, have worked with federal > lawmakers for months to help craft revisions to legislation_

Go Daddy wouldn't be my first choice for who I want representing the internet to the government.

</comment><comment><USER57> This line from techcrunch sums it up nicely:

"While it's nice that they changed their stance (publicly, at least), you've got to ask yourself: do you want to continue throwing money at a company blind enough to support SOPA in the first place?"

</comment><comment><USER32> This is great news. Now for the relevant question: How does it impact the passage of SOPA?

GoDaddy doesn't vote on legislation. I'm sending letters to my representatives right now pointing out the backlash and about face that GoDaddy has done.

</comment><comment><USER89> GD's response should lie in the positive feedback loop for the boycott. Press on.

</comment><comment><USER90> So, who's next on the list of SOPA supporters to boycott? Let's do it again until we actually make a difference.

It needs to be someone visible to whom we can send a very clear message, quite quickly.

</comment><comment><USER91> "Boycotts do not work."

Yeah right.

Maybe if we focusing on Congress.

Maybe if we stop focusing on SOPA supporters.

Maybe if we focus on the media industries that are pushing SOPA through.

Maybe if we boycott them and their entertainment products.

Maybe they will recoil, just like GoDaddy.

Maybe.

"Boycotts do not work."

</comment><comment><USER92> This isn't even close to enough. I want to see GoDaddy actively take a stand against SOPA, much like (other) tech companies have done.

If they do that, perhaps I'll consider staying with them.

</comment><comment><USER93> At this point the damage has been done.

Backing down from a position they had such strong convictions in only makes them look like more of a rat.

They have no honor and now they no longer have my business.

</comment><comment><USER94> Now can we focus on the United States Tennis Association next?

</comment><comment><USER95> I still want to move my domains away. Has anyone had any experience with gandi.net or namecheap.com any interesting experiences with either one?

</comment><comment><USER96> Ok everybody, transfer all your domains back... :-P

<comment><USER97> I know you were joking, but not a chance. The only effect this will have as far as I'm concerned is to move the transfer to the back burner for a bit (I'm on vacation at the moment, so I wasn't looking forward to dealing with the transfer hassle. Now I can enjoy a guilt-free holiday and do the transfer after I get back).

I was only on GoDaddy out of inertia/laziness anyway. At one time (quite a few years ago) they were...not good, exactly, but maybe the "least evil" of the available choices (a very similar situation to what you see with cell phone and cable TV providers). That hasn't been the case for quite some time, but I stuck with them just for the convenience of having all my stuff in one place. The constant upselling was annoying, but I rarely tinker with domain settings after the original config, so it was tolerable. This nonsense was the last nudge that was needed to push them over the cliff.

</comment></comment><comment><USER98> The power of Internet community. I hope we could use same force and enthusiasm to eliminate poverty from the world.

</comment><comment><USER99> Congratulations Reddit. Boycotts do work!

</comment><comment><USER100> I actually think the reversal shows a complete lack of spine and only steers me away from GoDaddy even further.

</comment><comment><USER101> "When you've got them by the balls, their hearts and minds will follow." \- All the President's Men (1976)

</comment><comment><USER102> I think they're lying and still support it just don't want to lose the money.

</comment><comment><USER103> Great, kid. Don't get cocky.

</comment><comment><USER104> Too late

</comment><comment><USER105> if they really cared about the internet community, they wouldn't have been defending this stuff tooth and nail...mocking people saying that their transfers don't matter to them.

</comment><comment><USER106> Does anyone actually trust GoDaddy's word? I didn't think so.

</comment><comment><USER107> Boing Boing is claiming this was just a PR stunt. Thoughts?

</comment><comment><USER108> I guess we can say that godaddy is eventually consistent.

</comment><comment><USER109> Next up: AT&T and Net Neutrality?!

</comment><comment><USER110> a little too late now, I guess

</comment><comment><USER111> Geeks of the world unite! :)

</comment><comment><USER112> I can only laugh at this...

</comment><comment><USER113> Too little, too late.

</comment><comment><USER114> Too little. Too late.

</comment><comment><USER115> Go Daddy does Netflix.

</comment><comment><USER116> More like "GoDaddy no longer publicly supports SOPA".

Just looking out for their bottom line, I'm sure.

<comment><USER117> That is the simple rule of life. If you ever wonder why someone/company is doing what they do, follow the money.

<comment><USER118> Why does Google work on self-driving cars and cancer diagnostics?

<comment><USER119> ...because nobody got rich off pharma, and the kind of AI tech on self driving cars has no real world applications.

<comment><USER118> Why aren't pharma companies developing internet advertising platforms, then?

If every company did every thing that everyone else ever did successfully... I can't even finish this sentence.

</comment></comment></comment></comment></comment><comment><USER120> Hah. I just reloaded HN and clicked the comments here -- I've had a few drinks -- I thought this was the same article along the lines of "Go Daddy Supports SOPA", until I read through the responses.

This just shows what a couple thousand mobilized, highly motivated geeks can do in six hours. HN is solely responsible for this. Imagine if the top-ten stories for the day on this board were about the conditions at Apple's factories in China. Or the massacres going on in Syria, for that matter. Something more important than whether that elephant-murdering bastard is a 99%, or a 100% asshole.

But, credit where it's due, this isn't the first time I've noticed a shift in public perception within 24-48 hours of a major HN freakout. I won't say how much money I've made buying or selling based on watching this phenomenon -- not a ton -- but it's recently been more than I make at my day job. It's a shame Godaddy's not publicly traded, or we could've all had some fun with it.

This _is_ the place where the people who man the engines spend their time. And when the engineers are pissed, shit breaks. Never mind that engineers are just as often wrong as everybody else, just think of HN articles as events that bubble, and figure out if they're going to be ignored or not by the larger program.

<comment><USER56> _HN is solely responsible for this_

I love HN. But that statement is myopic and over the top. I believe that Reddit started the discussion on a boycott. At the very least, much discussion took place there.

<comment><USER121> That is correct. I'd say Reddit is the one solely responsible for this.

<comment><USER122> You meant jointly.

<comment><USER123> Nono.. It means many different people are solely responsible. ;)

</comment></comment></comment></comment></comment><comment><USER124> I don't believe GoDaddy on this, and I certainly wouldn't trust them.

</comment><comment><USER125> too late, in fact will never use godaddy.</comment>


C as an Intermediate Language (2012) - <AUTHOR> http://yosefk.com/blog/c-as-an-intermediate-language.html <comment><USER2> Professional compiler engineer here, C is a mediocre intermediate language.

Let's start with an excellent quote from Wittgenstein. "The limits of my language mean the limits of my world."

Using C as your intermediate language means that your expressiveness is limited to valid C programs. This is workable but only if your language can be mapped to C in _useful_ ways.

For example, let's say your language has behavior similar to scheme's tail- call. How would you get this behavior from a C compiler? You will never be able to make this reliably across optimization levels, etc.

Guaranteed tail-calls are the tip of the iceberg, there are a lot more features which cannot be reasonably mapped onto C.

Real compiler IRs increase your expressivity beyond what the C language designers decided was important.

<comment><USER3> Exactly, and this is what most people who work on compilers discovered long ago. It's disappointing to see "just compile to C!" still so popular on HN.

I would cite GC as the most prominent example of a feature that is incompatible with compiling to C. It is impossible to write a competitive high performance tracing GC on top of C. Mandatory register spills at safe points and conservative scanning have huge downsides.

<comment><USER4> > It's disappointing to see "just compile to C!" still so popular on HN.

Posts on C get blindly upvoted on HN and proggit. I guarantee it. Me thinks it's like the history channel for programmers; learning about their forerunners and how they had to bang rocks together to make fire.

It's also how I've gotten all of my karma. Unfortunately, the abyss has also looked into me, as I now write C code for a living...

</comment></comment></comment><comment><USER5> As far as I can tell, on all the axes that LLVM excels as an intermediate language (ease of getting started, debugging support, many backends, optimization, flexibility), C is even better. C is easier to get started with, has easier debugging support, has more backends, better optimization, and more flexibility.

To take a simple example, I have here a 2428-line C program generated by compiling Linus Åkesson's Game of Life in BF ([http://www.linusakesson.net/programming/brainfuck/](http://www.linusakesson.net/programming/brainfuck/)) into C using Daniel B. Cristofani's dbf2c.b ([http://www.hevanet.com/cristofd/brainfuck/dbf2c.b](http://www.hevanet.com/cristofd/brainfuck/dbf2c.b)), which is a BF compiler written in BF. Compiling these 2428 lines of C to machine code using tcc 0.9.25 takes 20ms on my 1.6GHz Atom netbook. Most of this is about 16ms of tcc overhead (startup and shutdown time); the rest is compiling several hundred thousand lines of C per second with tcc. You should get several million lines of C per second with tcc on a modern machine.

This isn't optimized code, about equivalent to gcc -O0, typically about 3×–5× slower than optimized code. But that's enormously better than interpretation overhead.

(Using decent optimization levels with GCC makes it take several seconds to compile, because GCC's optimizer doesn't deal well with enormous functions.)

dbf2c.b, the C-generating BF compiler, is 892 bytes of BF code when stripped. Now, I'm not saying you should write your compilers in deliberately obfuscated programming languages in as few bytes as possible; I'm saying that the fact that this is even possible at all should give you really good feelings about how easy it is to compile things to C.

<comment><USER3> What? How does C have "better optimization" than LLVM? As far as I can tell, this seems clearly false: you can't do custom alias sets, for instance, in C, whereas you can in LLVM. None of your examples mention optimization at all (and BF is also totally unrepresentative of anything in the real world).

Also, C may have easier debugging support, but it's significantly worse than having exact control over the contents of your DWARF DIEs. Making it easy to have a bad debugging experience isn't a plus as I see it.

<comment><USER5> C has better optimization than LLVM because if you generate LLVM IR, you can't compile it with icc or Visual Studio. (Or GCC, but LLVM probably already equals or beats GCC at optimization already.)

You're probably right that LLVM also has better optimization than C because of things like the possibility of doing better aliasing.

I agree that BF is unrepresentative of anything in the real world. Thank goodness.

I can certainly see how debugging support could be better if you can go beyond the support C gives you.

</comment></comment></comment><comment><USER6> Indeed. C is brilliant as an intermediate language. One of the greatest things about it is that once you generate C code it's not too much of a stretch to also generate C++/Objective C specific code and take advantage of the libraries written in those languages.

Despite this, there are many people out there who view languages that compile to C as being inferior. I still don't understand it.

<comment><USER7> There are many things that are present in assembly but lacking in C. For example, how do you detect integer overflow in C without resorting to compiler extensions?

<comment><USER8> You stub out the few architecture specific routines you need and let someone write them for their architecture in asm if it doesn't exist already.

A minimal porting effort for the best of all worlds.

<comment><USER3> The best of all worlds, except that you lose your optimizations.

<comment><USER8> I would like to see the benchmarks before I agreed to that.

You might not get the best optimization possible if you have to leave it up to the C compiler with inline assember... But that mix worked well for C and C++.

And rust can still optimize things like deciding which integer optimizations need the overflow check, and only add it where static analysis failed.

<comment><USER3> No, it doesn't work well for C and C++ at all. Turn off InstCombine and see what performance you get in LLVM for an idea of what will happen if the compiler doesn't know about the semantics of + and -.

<comment><USER8> We are only talking about a subset of additions and subtractions to begin with.

How often will idiomatic rust code need overflow checks?

Also, if the UB operations are defined by target assembler (instead of in C++) then you may not even need extra overflow checks, depending on the assembler semantics. This would only be needed in the places where static analysis failed, of course.

One could also use the native compiler options, if available, to avoid the issue alltogether (like -fwrapv).

<comment><USER3> > We are only talking about a subset of additions and subtractions to begin > with.

No, you're talking about all signed addition.

> How often will idiomatic rust code need overflow checks?

You'd be surprised. Go look at the implementations of containers in the standard library.

> Also, if the UB operations are defined by target assembler (instead of in > C++) then you may not even need extra overflow checks, depending on the > assembler semantics. This would only be needed in the places where static > analysis failed, of course.

I don't know what this means exactly. If you're saying you should implement a static analysis to try to eliminate unneeded overflow checks, then this is a huge burden.

> One could also use the native compiler options, if available, to avoid the > issue alltogether (like -fwrapv).

If you're dependent on GCC/clang extensions to C, then you're not compiling to C. You're compiling to a front end to GIMPLE/LLVM. At that point there's no benefit over just compiling to GIMPLE or LLVM in the first place.

<comment><USER8> > No, you're talking about all signed addition.

No, I'm talking about the ones that won't overflow. Some can be statically shown to not need a runtime check.

> If you're dependent on GCC/clang extensions to C, then you're not compiling > to C.

I'm not saying that. I'm saying require either the target compiler (which the user is in control of) to provide a flag to give signed overflow the proper semantics (which would be useful if the user happens to be using clang or gcc), or fall back to requiring some asm for the target system which provides the needed semantics.

This would all be up to someone to configure for the target machine. Not a big deal once per architecture.

> At that point there's no benefit over just compiling to GIMPLE or LLVM in > the first place.

Well if GIMPLE or LLVM was available for all of the targets that C compilers are, then I'd agree.

But they aren't. So I don't.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> A few languages that generate C that are currently popular are:

* nim

* Vala (GObject backend)

* Purescript (technically it has a C++ backend, but it is worth mentioning here for the very clean C++ it produces!)

</comment><comment><USER10> It's also insanely easy to generate code for. In addition to this, you don't have to build an entire toolchain of LLVM stuff to get it to work on your system -- LLVM is a nightmare to setup on Windows.

</comment><comment><USER11> Here is a list of compilers that can generate C code for different languages:

[https://github.com/dbohdan/compilers- targeting-c](https://github.com/dbohdan/compilers-targeting-c)

</comment><comment><USER8> Portability and interoperability are key in industry.

I think all of the new languages are amazing these days. I am learning Rust, Clojure, Haskell, and many more.

Buy I can not use any of them at work. I'm in a position to influence teams of smart programmers, but the only language that I would be able to use would be one that fits in to the existing infrastructure, which is natively compiled shared libraries on esoteric unix platforms.

So no LLVM. No JVM. No Haskell. I could possibly get away with a lisp or scheme that compiled portable C if I wanted. But that doesn't excite me as much.

I would kill for a Rust to human-readable C++ transpiler. I think it could be used immediately by many.

I may have to write one.

<comment><USER12> I believe porting LLVM to esoteric Unix platforms would be easier than a C backend. Less fun though.

<comment><USER13> Porting nothing is better.

<comment><USER8> Sure. Port nothing and keep writing in suboptimal languages. It is what we do now.

But does it hurt to strive for better? I don't think it does.

<comment><USER13> Yes it is.

For me, C as an intermediate vs LLVM language is a "worse is better" or "good enough" issue.

LLVM is far more powerful but more complex. C is simpler and already works everywhere.

</comment></comment></comment></comment></comment><comment><USER14> This begs the question of what would be better - to compile your favorite language to C and use something like Emscripten to make JS, or to compile your code directly to JS?

So far as my experiments went, a 3000 native score Dhrystone test compiles to C at 1300, and that C compiles to 850 worth of JS. Which suggests that a direct-to-JS compiler might be worth the efforts...

<comment><USER15> You can play around with Nim for getting some numbers on this - since it can compile to C, C++ or js.

</comment></comment><comment><USER16> really wish this was more common, as language choices on embedded platforms are often VERY limited. ie, C.

Though on embedded systems you'd also want more constraints for the backend, like do not use dynamic memory, perhaps being able to specify the output code is MISRA compliant.

</comment><comment><USER17> If you guys are interested in languages that compile to C, the best programming language I know of compiles to C and it is called Nim.

<comment><USER10> EDIT0: It appears I was wrong, for some reason I was under the impression DMD produced C code. Ignore this comment! :)

Another language that is widely used by hobbyists and in production is D which, as far as I know, produces C code too.

EDIT: I should say there are a few D compilers, DMD, LDC, and some other one by GNU(?).

I think that DMD is the main compiler, but I could be wrong. LDC generates LLVM code.

<comment><USER18> There are three compilers for D (DMD, GDC, LDC), but none of them uses C as an intermediary language.

</comment></comment></comment><comment><USER13> If the target compilers are GCC and clang, C++ is even a better intermediate language.</comment>


Show HN: Lockdown dates overlaid onto Covid-19 charts - <AUTHOR> https://david-wu.github.io <comment><AUTHOR> Hi HN,

Committing to lockdowns is a powerful way to fight covid-19. I wanted to show its (encouraging) effects so I overlaid the lockdown dates onto different growth charts.

I used the time series data from here: [https://coronadatascraper.com](https://coronadatascraper.com) And the lockdown data here: [https://auravision.ai/covid19-lockdown- tracker](https://auravision.ai/covid19-lockdown-tracker).</comment>


Ask HN: Is there any interest in a full stack web framework written in Python? - <AUTHOR> Something like Meteor: https://www.meteor.com
This would be using something like Brython on the client-side: http://brython.info
The idea is that you would have a full stack web framework that shared as much code as possible between the client and server. The client-side Python would then be compiled into JavaScript using Brython or similar. Include first-class support for web sockets. I would also like an API similar in feel to something like PySide/PyQT.
Is there already a web framework using Python on the client-side? If so, I haven't found it yet. Thinking of starting a project like this and want to gauge interest. <comment><USER2> Brython's too slow. It's not reasonable to push an entire Python-to-JavaScript compiler to your clients on every page load!

<comment><AUTHOR> Brython's performance doesn't seem that bad: [https://brythonista.wordpress.com/2015/03/28/comparing- the-s...](https://brythonista.wordpress.com/2015/03/28/comparing-the-speed-of- cpython-brython-skulpt-and-pypy-js/)

And Brython supports dynamic loading of modules, so you don't need the entire ~2MB stdlib at load. Where Brython falls short for me is CLI tooling. I would like to be able to just point a CLI tool at my source directory and have it compiled into JS with all the stdlib modules used included. Brython supports pre-compilation, so the only thing missing is the CLI tools.</comment></comment>