Tenn. law bans posting images that "cause emotional distress" - <AUTHOR> http://arstechnica.com/tech-policy/news/2011/06/tenn-law-bans-posting-images-that-cause-emotional-distress.ars <comment><USER2> I seriously wonder how they planned to enforce this, how long it will take the supreme court to throw it out, and whether this is really just a stalking horse for the EFF.

<comment><USER3> I wonder how many hospitals Tennessee could have built with the oncoming legal fees.

</comment></comment><comment><USER4> As someone who strongly values my First Amendment rights, an image of this statue would certainly cause me emotional distress.

<comment><USER5> *statute

<comment><USER4> Utterly unintentional and somewhat hilarious misspelling on my part, especially since I used to work for a startup that made a statute search engine.

</comment></comment></comment><comment><USER6> Don't be so insensitive. Your rights end where my feelings begin.

</comment><comment><USER7> I expect that an argument could be made that this applies to videos as well - they're just moving images, after all. So Tennessee has (accidentally?) banned the distribution of horror movies via the internet.

</comment><comment><USER8> Did they seriously just try to ban trolling? Is this a jab at 4chan?

<comment><USER9> the intention was prolly a good one.

i hate people tagging me in pictures on facebook. i'm pretty sure facebook keeps the tags in its database even if you untag them.

</comment></comment><comment><USER10> It will be interesting to see what happens if someone posts a picture of a clown and someone with Coulrophobia sees it and makes a complaint.

</comment><comment><USER11> Yes, this will stand up in court (extreme sarcasm).

</comment><comment><USER12> Does anyone else want to send the most offensive things they can find to the TN legislature and governor? I have a lot of ideas...

<comment><USER13> an image of the phrase God does not exist..</comment></comment>


Ask HN: Are you working on an iPad application? - <AUTHOR>

Are you either working on a new iPad application or working on an iPad version of your existing app?<p>Anyone here actually have an app included in the iPad launch? <comment><USER2> <http://news.ycombinator.com/newpoll>

No, I'm not working on anything for iPad.</comment>


Ask HN: Cloud hosting that doesn't suck? - <AUTHOR>

I'm working for a small startup which is experiencing some growing pains with regard to application hosting.
We have been using Amazon EC2 for a while to host our systems. We use them for everything -- production servers, staging servers, monitoring systems, backups. We're not happy and have never been.
The main issue with Amazon is flaky performance, especially with regard to IO. Our Rails apps run at a crawl. Even their best configs have pretty slow per-core performance. We could buy a bunch of physical servers and colocate them for a fraction of the price Amazon costs us per year, and enjoy a tenfold performance increase.
The second issue is the pricing structure, which does not allow for fine-grained resource allocation; the configurations Amazon offer are rarely ever "just right", and it's not possible to tweak them to save money when we can make do with something small and simple. Scaling horizontally to work around the resource granularity issue is not really an option as it would be too costly.
There are some other technical issues that are tiresome to deal with, such as Amazon's dependency on a weird NAT structure that require ugly workarounds in our management systems (eg., Puppet).
We have migrated a few hosts off Amazon over to Cloud Sigma, which we immediately perceived as having better CPU performance, and a _much_ nicer pricing structure where you essentially pay by by the gigahertz (CPU) and megabyte (RAM) in 5-minute intervals. However, we quickly met a wall with regard to IO, which is even worse than Amazon despite the fact that they use Linux KVM with local disks.
I would like to hear about other people's experiences with other cloud hosting services. We need something that "just works" and provides performance comparable to non-virtual hosting. Colocated hosting is fine, too -- probably better, in fact -- as long as adding or removing hosts can be done quickly and painlessly through a web app. At this point we are even considering admitting defeat and just colocating everything.
Any help would be appreciated. Note that we are in Europe, so any recommendations will need to take our location into consideration. Thanks! <comment><USER2> As you have found out, IO _is_ the hard part about clouds. It is very expensive to address it.

You probably should not be in clouds if IO is such a big deal.

Either that, or redesign to take the IO intensive part away from cloud and onto physical servers.

<comment><AUTHOR> If all else fails, I would happily consider recommendations for colocated dedicated server vendors in Europe, assuming they fit the requirements: Reasonably priced, flexible range of hardware configs, ability to set up or remove hosts through a web GUI. Oh, and the ability to run Ubuntu.</comment></comment>


Ask HN: Review my startup, Snapherd.com - <AUTHOR>

So I've just launched Snapherd, a mobile photo game. Basically, every 48 hours a new catchword or catchphrase is given, and the goal is to take a picture of what you think best represents the subject matter.<p>The idea is simple, but I'd love to hear what the Hacker News community thinks! <comment><USER2> I like it too. Nice design. Nice concept. I think you need to convince 10 friends to snap lots of pictures to get things rolling, because right now it looks pretty empty, and nobody likes an empty community site.

<comment><AUTHOR> It should start filling up quite a bit more today...the word had just rolled over last night (from "debate" to "absurd") and my friends have not submitted new images quite yet. I do very much appreciate the input, though!

</comment></comment><comment><USER3> <http://www.snapherd.com>

For convenience.

</comment><comment><USER4> Why 48 hours? Would cycling catchwords in shorter increments do a better job of keeping people engaged with the site? What's the smallest period of time you can find that still yields decent photos?

</comment><comment><USER5> Really good idea and I like the site. You probably know, but when I tried to find it with a search engine there was nothing there. You should probably do something about that

</comment><comment><USER6> We tried to do this last year when the "Safari SDK" was released, but the side project died... I still think it's a great idea and you've executed it nicely. There's another iPhone application that does something similar called Scavenge built by the hosting company A Small Orange, however they currently do not have the website component as far as I can tell.

<http://www.apptism.com/apps/scavenge>

</comment><comment><USER7> did I see a sign for your site during last night's debate? Or was that something else?

<comment><AUTHOR> That was my sign during last night's pre- and post-debate, on MSNBC. It got me a few new users, but not quite as many as I'd have hoped.

</comment></comment><comment><USER8> I like it - design is nice. What is the incentive for winning (other than community)? I think this is a prime opportunity to purchase (or get one donated) an iPhone or the T-Mobile G1 and give one away.

</comment><comment><USER9> nice idea.

maybe you could try to tie the word of the day to current affairs in some way?

as for building traffic, maybe you could find a way for people to vote (or even submit) w/o needing to login. you might need to bring the login back ultimately, once it's popular - but do you need it now?

final thought - the home page runs off the bottom of the screen (at 1280 x 1024) by a good few hundred pixels. And the bottom is where all the real content is. Maybe reshuffle and/or shrink?

cheers

tom saffell

</comment><comment><USER10> I wish I didn't have to register to vote for a picture... i was about to vote for deep fried candy bars on "absurd"

</comment><comment><USER11> Simple, but appealing idea, nicely done. I'll keep an eye on it. How many users do you have already?

</comment><comment><USER12> I enjoyed the HL reference. I reckon all it needs now is some users and some content. Well done.

</comment><comment><USER13> where.com did this a couple years back... It got some response but you definitely need to find a way to get buzzzz

</comment><comment><USER14> Today's word is "mesothelioma"

</comment><comment><USER15> openid support would be nice, but I love the idea.

</comment><comment><USER16> business model? grow traffic and sell ads?

<comment><USER5> Offer prizes/incentives to people who manage to incorporate a second "sponsor" type word.

</comment></comment><comment><USER17> cute design. kind of an addicting concept. should make this into an iphone app. need to seed more, i only see two pics/words.

<comment><USER18> Wow... and iPhone (or Android) app could be great for this! Start the app, snap a pic and send it in with details about location and everything. It would certainly put the site in front of a lot more people as well.</comment></comment>


Foodies embrace 3D-printed cuisine - <AUTHOR> http://www.nature.com/news/foodies-embrace-3d-printed-cuisine-1.17358

<comment><USER2> Unrelated to the article, but liked the fallback scrolling gallery element when Javascript is disabled. Most sites either have broken paginated slides or expand all images down the page.</comment>


My divorce from Google - One year later - <AUTHOR> http://www.itworld.com/software/350485/my-divorce-google-one-year-later <comment><USER2> So you've traded one big company for a bunch of other big companies? I trust google with my data more than I trust Facebook or LinkedIn or Microsoft.

Google runs their own ad network (and it's generally an honest and upstanding ad network, unlike some others). All that data they collect on you is for their own internal consumption. If they ever sell their data, they are giving their competitive advantage to their competitors - not going to happen. Other companies are also logging and collecting every scrap of data that they can, but they aren't consumers of that data. It just gets sold to the highest bidder. I'd much rather have google tracking me and know where that data is going, than have somebody else tracking me and never knowing where that data is going to end up.

<comment><USER3> _generally an honest and upstanding ad network_

Unless you happen to be a small guy and fall on the wrong side of their political beliefs: <https://news.ycombinator.com/item?id=5438797>

<comment><USER2> That's not their political beliefs, that's their lawyers making a risk vs reward decision. Why is everybody so quick to attribute things to malice when they can be explained by simple pragmatism?

<comment><USER3> s/politics/<reason_of_the_day>/

To me the point is that when you start arbitrarily enforcing rules against some people (small guys) and not others (big guys) it smacks of hypocrisy. Maybe you can explain how it was just blind process -- it still stinks.

</comment></comment></comment></comment><comment><USER4> Reading his service-by-service comments paints a much less favorable picture of his Google "divorce":

Search: Push (possible win with DuckDuckGo booleans, possible loss with Craigslist search)

Mail: Push (mainly using own server, Yahoo vs Gmail not an issue).

Maps: Acceptable, but significant loss. ("Mapquest is ok. Yahoo! Maps are my go-to" and "Yahoo! Maps UI isn't very good, but the maps are quite usable").

Music and Videos: Loss. Spotify covers music, Vimeo and DuckDuckGo search covers some (most?) videos, but the overall process described is pretty painful. Many alternative video sites are likely tracking him as well (despite attempted countermeasures).

Images: Push. Happy using private Flickr and Shutterfly, no noted advantages.

Social Networking: Push. Facebook/LinkedIn/Twitter (occasional) cover most things. No indication of whether or not he reasonably matched his 3000 Google+ relationships.

GPS: Not used.

Google Translation: Loss. "Babelfish is ok. Others do well, too. None are as good as I would like."

Apps: Not used / push.

So... depending on whether you break out Music and Videos and whether you count Apps, that's three clear losses out of 7-9 services, with no obvious win (other than the divorce itself). To me that doesn't look very good.

<comment><USER5> I find Here.com to be better than Google Maps FWIW. Outlook.com to be better than Gmail.

It's weird because product-for-product, Google has great web services but their issue is that so much of the UI is dedicated to advertising that it makes the overall experience worse. Here.com is owned by Nokia but there is no indication of that apart from a tiny copyright notice in the bottom left of the page.

<comment><USER6> I've love to try Here.com, however their home page isn't even rendering properly right now. They are serving a completely unstyled page that has totally broken their maps component. I can't even see a map on the page.. There is no style, and apparently no behavior attached to a white page with black text.

Is the internet trying to teach us a timely lesson with this broken site? :p (semi-tongue-in-cheek)

<comment><USER5> Hilarious, I was just using it before my previous post, continuous deployment fail?

<comment><USER6> looks to be back up :)

</comment></comment></comment></comment></comment><comment><USER7> Seems pointless. Trading one hosted service with another doesn't really give your privacy back. You might be able to split your profile in different silos but what's the guarantee that the personal information won't be shared between the different service providers ?

What we need is a way to be able to sell server "apps" in a way where they can be monetized. Right now it's really hard to sell the application without providing the service as well because they're too hard to install.

</comment><comment><USER8> I find the number of Google "so-what" apologists rather striking in this thread. Not saying the OP did it right or did the right thing, but as a life experiment, it seems honorable. Personally, I find Google's omni-presence a bit scary as well. I never adopted gmail (except as a throw-away address to sign up with HN and other websites :-). The other service OP didn't mention is Google Analytics: so I tell Google everything about my site, then I expect it to broker ads for me honestly?

In addition to the personal tracking, I really agree with the following quote from the OP:

"I find that Google and SEO and tracking have soiled the web in unbelievable ways. Google has imposed a constraint on content through its ad business that I can't get away from, because content is trying to adapt to Google so it can be found, but especially because content becomes monetized in doing so-- to the detriment of us all."

</comment><comment><USER9> I don't really see the benefit of jumping from Google just to submit your privacy to the tender mercies of Facebook, Amazon, et. al, other than to say you did it.

And punting on GPS with a simple "Oh, I prefer paper maps" is a trifle disingenuous.

</comment><comment><USER10> It's hard for me to take "Google divorce" seriously from someone who still uses Facebook.

<comment><USER11> It sounds like it was a "google divorce" and not necessarily a "facebook divorce." Are you advocating for a more broad "social networking divorce"?

<comment><USER12> I'm thinking that leaving Google due to privacy concerns, while keeping Facebook seems... odd.

<comment><USER13> I suspect the author may not have read the Facebook terms of service

</comment></comment></comment></comment><comment><USER6> Don't really see many items in the "Observations and Lessons Learned" categories, as he titles them, it seems mostly focused on how quitting Google makes him feel..

</comment><comment><USER14> My additional recommendations:

Gmail -> business hushmail

Google Maps -> Bing Maps

GPS -> Use an actual GPS device or one of the iOS/Android maps that download to your phone.

GChat -> This one is tricky due to being subject to network effects. Without getting into hyper nerdy jabber or private IRC nonsense, I'd say just use OTR and be done with it if the point is privacy.

Google+ -> meet people for lunch

Docs -> Zoho/Microsoft Office/Open Office.org/LibreOffice

Google Drive -> Dropbox, add encryption if you want. There are libre alternatives if you want to set up your own fileserver with automagic sync. I'm trying not to get too far out into left-field on this list.

<comment><USER15> I'd replace gmail and gchat with fastmail.fm (owned by Opera, although if Facebook ever buys Opera...). You can run XMPP through fastmail's servers, which lets you IM all of your gchat friends (for now at least). As has been pointed out elsewhere, GChat's OTR is not the OTR protocol, so I wouldn't count on it giving you any extra privacy.

And it should go without saying that you get your own domain name for the accounts so that you can switch providers easily.

<comment><USER16> Is there any indication that FB plans to buy Opera in the (near) future?

<comment><USER5> There were rumors last year that never materialized, I assume that's what the parent is referring to.

</comment></comment></comment></comment><comment><USER17> And just in that webpage Ghostery blocked 16 scripts...

</comment><comment><USER18> Thinking about how reliant I am on Google's services and how difficult it would be to find comparable alternatives makes me very nervous. Gmail, maps, drive, translate, search, youtube are all daily activities for me.

Sure I could replace drive with Dropbox but it is twice as expensive. I could replace GMail with Outlook or Yahoo but so many of my colleagues, contacts and friends get in touch with me through google talk. Plus none really compare to GMail in terms of ease of use (although I've really started to dislike the new compose feature).

The point is the individual pieces are probably replaceable, but no one even comes close to having such a cohesive, integrated set of products. At this point the best I can do is make sure I have an offline copy of as much as possible and hope for the best.

</comment><comment><USER19> Personally, I just don't like to use Google because I think they are gaining way too much power to circumvent fair competition in the market, and even too much power over the lives of individuals. When I see google hardware devices running google operating systems with google web browsers and an increasing majority of people using them to almost exclusively access google web services and run google software... I'm sorry, but it's just bad news.

No matter how ahead-of-the-curve google innovation can be, I just don't think it's worth it to sell our souls to one company for the sake of convenience.

</comment><comment><USER20> I've been pleasantly surprised with Fastmail.fm's new webmail interface, and am currently in the process of switching away from Google. The one thing I can't seem to find is a good replacement for Google Contacts or Google Calendar. I'm currently set up with an account at fruux.com, which does hosted carddav + caldav, but finding good clients for Linux has been more challenging than I expected.

<comment><USER12>
      | finding good clients for Linux has been
      | more challenging than I expected

What are you looking for a potential client to do? Like a Linux version of Apple's iCal.app / AddressBook.app (i.e. standalone, more or less single- purpose apps)?

<comment><USER20> More or less. It looks like my only options are Evolution or Thunderbird with a pair of extensions (Lightning + SOGo Connector).

</comment></comment></comment><comment><USER21> Given his reference to downloading apps from the Play store and Amazon store... it sure sounds like he's still using an Android device.

<comment><USER22> So what?

<comment><USER23> Play is a Google service. It kind of smacks of something beginning with "h" and ending with "ypocrisy" when you still use a Google service after going through the requisite self-flagellation to go out of your way to _not_ use them, and then write a tone-deaf article on how awesome it is to do so.

It doesn't make much sense that someone would go through all this effort to ditch a company and still use one of their flagship products. That would be like me swearing off Apple and still carrying an iPhone.

<comment><USER22> Android and Play aren't synonymous. You can use Android without any trace of Google on your system; and, since Android is open source, it can be verified none of your information is being leaked.

</comment></comment></comment></comment><comment><USER24> I don't understand why everyone is so big on switching away from Google these days. Some of my coworkers have been doing this as well.

Instead of giving away your personal information to one place, why not give it away to 10 or 20 places?

I think it makes sense to use the best tool for the job. At least when it comes to email, maps, and search I would argue that Gmail, Google Maps, and Google are the best services by a long shot.

Not to knock Duck Duck Go, but it would drive me crazy to have to do multiple searches or go through more results just to find something I could find on Google in the first half of the first page of results.

Sure I would get used to it eventually, but it's not worth losing my own time/productivity over.

</comment><comment><USER25> I thought he switched to self hosted, open source alternatives. What a silly article.

<comment><USER26> There is more kinds of crazy than RMS. Also mail server seems self hosted.

<comment><USER13> RMS may seem crazy but there's a method to the madness. No one accuses him of hypocrisy or internal inconsistency. The author, on the other hand, is hilariously inconsistent (esp given his comfort with Facebook and the "settlement" copout)

</comment></comment></comment><comment><USER27> Honestly, if they are going to get your information, who cares. Out of millions and billions of the information they get, why would they be interested about specifically _yours_. That's a big problem I have when people bring up privacy issues. There are certain lines, but Google's not crossing them. Sifting through your email to give you relevant advertising is harmless - in fact, some of it is how they get information for a very powerful Google Now.

</comment><comment><USER28> For moving away from Gmail, I'd be interested in solutions that help you data- mine ahead of time how many mailing lists/services/etc you have linked to your address.

It might be easy to just "switch" one day away from Gmail, but it could easily be weeks and months of manually unsubscribing/notifying/etc providers of the new address to use.

<comment><USER15> Vacation autoresponder and automatic forwarding are godsends for that. Gmail also has the sense to not autorespond to mailing lists.

</comment></comment><comment><USER29> So the other services handle your data better ? Or is the just your resolution?

</comment><comment><USER30> Ironically he is able to compare products/services......

</comment><comment><USER31> I'm more curious what the author uses for his self-hosted email. None of the IMAP servers I've seen so far are particularly stellar.

<comment> X-Istence Third comment, but it bears repeating. Dovecot.

I use it with Postfix, using Dovecot's virtual domain support to host various domains/mailboxes. Dovecot with sieve sorts mail server side. It's fast and works incredibly well.

<comment><USER31> I like sieve. A lot.

</comment></comment></comment><comment><USER32> Interesting how he did not list any Bing services as possible substitutes even for things like images, email and translation.

<comment><USER33> I am not sure, but I think babelfish uses bing translation.

</comment></comment><comment><USER34> Email, Google search, I understand but Youtube, seriously? what can be so bad about it? Google knowing that you're one of the 5 million ppl that viewed psy video clip? Suggestions to what to watch next based on whay you've seen recently?, yes that can be so annoying, I like to browse the entire video library watching 500 videos I don't want to watch to find the right one. IMHO That is just being too paranoid ...

</comment><comment><USER35> I love Google. Its services are quite influential in my life and improve it in many ways.

</comment><comment><USER36> What this person is trying to get away from requires not using the internet in any way.

<comment><USER34> Agree, choose another profession dude.

</comment></comment><comment><USER37> That post is devoid of insight and full of inaccuracies such that it could easily be mistaken for shameless attention seeking or just astroturf.

</comment><comment><USER38> I got sick of seeing everything Google all the time, so for a change of scenery I went everything Microsoft. I even switched from Dropbox to SkyDrive because of it's tight integration with the new Microsoft Office web suite, OneNote and outlook.com.

Admittedly, I'm only changing one taskmaster for another, but overall the change has been good, like an upgrade.

</comment><comment><USER39> Maybe he can stop using computers and go back to stone age.

<comment><USER40> Maybe you don't agree with his motivations, but explain to me how using DuckDuckGo (a startup with a fresh approach to search that only hired its first employee in 2011) as opposed to Google (which has been around since the previous millennium) is analogous to giving up one's computer and going back to the stone age?</comment></comment>


Ask HN: How much do you spend on rent? - <AUTHOR> How much (in terms of $ or % of your income) do you spend on rent/mortgage and utilities? <comment><USER2> I think a simple rule is to spend as little as you can for as long as you can. If you're young and can live with your parents...do it. Save your money. If you are single and don't spend a lot of time at home anyway, rent a cheap room. Save your money. When you can afford it, buy a small condo.

On the flip side, if you're older and require more room/privacy/quiet it's worth it to spend more on your place. You'll probably be there more often, and you probably won't be alone. You don't want to be needlessly extravagant, but you shouldn't be a cheapskate either. A nice place is worth it at a certain point in your life. And hopefully you can now afford it because you saved money earlier.

<comment><AUTHOR> how about the one third of your salary "rule"?

</comment></comment><comment><USER3> I spend $650, splitting a 700 sqft 1 bedroom in center city Philadelphia. I spent exactly twice that for a similar setup in NYC, and I spent $2500 for a 200 sqft studio in SF (basically a walk-in closet).

What about you?

<comment><AUTHOR> I'm looking for my 1st rent and thinking about how much I should throw at it

</comment></comment><comment><USER4> It's not just on rent/mortgage and utilities. It's also the local buying power. Rent/mortgage and utilities can be a significant difference all over the world.</comment>


Show HN: Eminently – Headhunters: manage, track, and get paid for your referrals - <AUTHOR> <comment><AUTHOR> Eminently is the first platform for headhunters and businessmen that helps you manage your job and business referrals, track it, and get paid when a deal is made. In fact, you surely have introduced people for job or business opportunities, but how often were you kept informed, paid, or rewarded for it? Also, Eminently records digital proofs on a BitcoinCash blockchain to value your contribution to the network in the future. Check it out while it's hot!

<comment><AUTHOR> For the past year, we have been working on a new project eminent.ly to improve the way we hire and do business today.

I have been searching for the missing link that would allow modern job and business platforms to be more effective.

In my previous companies, most of our best talents were coming from our own personal networks. So it was obvious to me that the missing link is: us!

In fact, today's platforms rely on data that do not describe who we are as co- workers, mentors, mentees, bosses or friends accurately.

There's something far more valuable in the link that unites two people than keywords or hashtags.

Experiencing various situations together allows us to know more about each other which in turn creates a special and valuable bond, a shared experience that cannot be condensed and stored in a database.

Yes people matter!

More and more companies are starting to understand that point and investing in employee referral programs. Those programs are proven to bring the best profiles, who stay longer, and are a better fit for the company.

This is because employees know within their own network who can be a good fit for the company and the open position. But those programs are usually hidden within the company platform and only available to employees, assuming they even know this system exists.

Also, using traditional headhunting agencies and private business networks come with a high cost in commissions.

Furthermore, some of us are frequently making referrals and hoping for feedback about how it went or for people to return the favor someday… unfortunately, we are often disappointed.

To tackle these challenges, we are launching eminent.ly, a platform that brings a new way of introducing people for a job or business opportunity by relying solely on your valuable network and knowledge, not on an incomplete and inaccurate database.

With our platform, you are now able to manage your referrals, track how people are doing, and get paid for it when a deal is made.

Thanks for your attention and hope you will be a part of this journey.

Eminently yours,

Romain Pellerin, Founder.</comment></comment>


See IT: Kids in China wear wide hats to practice social distancing - <AUTHOR> https://www.nydailynews.com/news/world/ny-kids-china-big-hats-social-distancing-20200427-ef23h3lronhoxkd2yo7kgrvbim-story.html <comment><USER2> That's pretty neat although knowing my kids I'm not sure social distancing be very effective considering all the possible chances to violate it, common surfaces, just kids low compliance rate with instructions.</comment>


Google Go: A New Programming Language That's Python Meets C++ - <AUTHOR> http://golang.org/ <comment><USER2> My word, a whole bunch of what I'm reading is exactly what I have/had intended to implement in _my_ toy language, prism. Bit-specified integer (and real) types, increment/decrement operators as statements (prefix only!), hell, even using "var <X> ..." for variable declarations. The guiding principles are divergent though. And the bit about deducted type relations (<http://golang.org/doc/go_lang_faq.html#inheritance>) leaves me with mixed feelings.

I'm actually happy! It means my stupid little language has some validity :P

For those who wish to deride it: <http://code.google.com/p/prism/>

<comment><USER2> Well, in the interests of actually furthering discussion:

I feel as if string and map simply could have been part of the standard library. My solution to the this for prism was to have a section of the standard library (which doesn't exist yet) marked as "integral", to effectively have an implicit "import string, map from std.__integral__" at the top of every translation unit.

The absence of overloading operators seems to contradict their claims of improving the visual "flow" and feel of programming. There are cases where savvy operator overloading works wonders: vectors/matrices/quaternions, strings, complex numbers, etc. To be able to write my_string + my_other_string is far more elegant than strcat(my_string, my_otherstring). Consider what happens when you have four of five strings you'd like to concatenate!

The choice of CSP reflects Google's mentality: Their problems lend themselves very well to CSP. Other domains (in my opinion) work better with a STM model. But that's clearly a design choice, and I think it's fine!

<comment><USER3> Operator overloading has good points and bad points: we're erring on the side of simplicity for now.

However, you can write "abc" + "def" in Go and it does what you expect.

<comment><USER4> => "egi"?

<comment><USER5> I'm sorry if this is a stupid question, but where'd you get that? I don't get it. :(

<comment><USER6> "abc" + "def"

a + d = e (1 + 4 = 5 = e) b + e = g (2 + 5 = 7 = g) c + f = i (3 + 6 = 9 = i)

I think he was making a joke about how + with strings doesn't necessarily mean string concatenation.

<comment><USER7> I think the point is even better than a joke: there is a _danger_ in allowing things like, e.g., operator overloading (or redefining methods in the standard library), because programmers have different feelings about what the code "obviously" means.

If in your language, + means string concatenation by convention, then + darn well means string concatenation. If in your language + means "contextually appropriate depending on what arguments you pass to it", then

"abc" + "def" => "egi"

doesn't strike me as obviously wrong.

More broadly, consider a language in which we teach initiates that "Plus adds things in the way you'd expect!"

map = {}

map2 = map + {"key" => "contents"}

What are the contents of map and map2 now? Uh oh. More worrisome:

map = MemcachedWrapper.new

map2 = map + {"key" => "contents"}

What just happened?

<comment><USER8> This whole line of reasoning reminds me of the Java3D API. Java, of course, takes the approach that only the designers of the langauge were smart enough to know when to abuse operator overloading (e.g. with strings), so for the Java3D math API, they couldn't have nice syntax for vector arithmetic. Instead of having nice operators for addition (+) and accumulation (+=), they just have english, and they want it to be terse, so the accumulation method is .add, and there is no addition method for vectors. It's not terribly confusing, but seeing vec1.add(vec2) rather than vec1 += vec2 is ugly and you still have to read the documentation to know what the .add method does.

Avoiding operator overload doesn't avoid poorly named methods, nor does it avoid the need for documentation. All that it does is force programmers to do ugly things when dealing with math, and there is a lot of math-based programming out there.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I'd have to disagree with the title "Python meets C++". There's very few features that have been brought over from either of those languages.

It looks like C with some very carefully chosen additions: memory safety, concurrency and maps.

<comment><USER10> I agree. From the FAQ:

 _"Go is mostly in the C family (basic syntax), with significant input from the Pascal/Modula/Oberon family (declarations, packages), plus some ideas from languages inspired by Tony Hoare's CSP, such as Newsqueak and Limbo (concurrency). However, it is a new language across the board."_

Two of the designers were Rob Pike and Ken Thompson, both instrumental developers of Unix/C and Plan9/Inferno. Thompson created the B programming language that C was based on.

<comment><USER11> Don't forget Russ Cox, who I believe stuck with Plan 9 longer than either Rob or Ken.

I'm excited to see CSP in Go. I've been advocating its use for concurrency since I learned about Plan 9's channels, but most people paid no attention.

<comment><USER12> Russ still maintains 9vx and Plan 9 from User Space.

</comment></comment></comment></comment><comment><USER13> I had a friend who was worried about the overhead of interfaces (are methods called by hash lookup on name or by something like a vtbl?), so I compiled a simple example program to test how dynamic dispatch works: <http://scott.wolchok.org/vtbl.go>

The binary is at <http://scott.wolchok.org/6.out> . If you search for deadbeef, you'll find a sequence of instructions ending in an indirect jump, so it is decidedly not some kind of string comparison.

The function in the compiler that generates calls through interfaces seems to be cgen_callinter in go/src/{6,8}g/ggen.c, but I can't decipher the terse code therein. Would be interested to learn more about Go method dispatch, especially as regards to dynamic linking -- does Go have it? What if I create a new interface that encompasses objects in a library built before I created that interface? Do I have to rebuild the library?

</comment><comment><USER14> I was ready to be dismissive until I read who was behind it. This is part of the Bell Labs legacy. Kickass.

<comment><USER15> How come who was behind it is important but who says what on HN is not?

One could have extra information right beside each submitter/commenter's name (e.g., ... founder, Google employee, PhD in ..., etc.).

<comment><USER16> There are some usernames I will recognise, and their comments do mater more to me. Also, if someone does say something interesting, you can often learn more about them from their profile page should you wish to.*

And, yes, it would amuse me for a couple of days if everyone with/working on a PhD were encouraged to append their thesis titles after their usernames.

* though yes, for people I don't recognise who are not posting particularly interesting comments, it does not matter who posted them. Such as this comment I assume, anyone could write it.

<comment><USER15> Imagine someone commenting on Google but you don't take his/her comment seriously and post a reply indicating that this person is mistaken.

You later find out from his/her profile that this person is a Google employee and is in a position to know what he/she commented about. It might be too late by then to take back what you wrote.

<comment><USER17> Too late for what? This is the Internet. You're allowed to make an ass out of yourself sometimes.

I remember when I came on here and criticized Delicious and got in an argument with joshu because I didn't know who he was. If anything, I'd like _more_ anonymity, because the people I _do_ know I sometimes tiptoe around.

</comment></comment></comment></comment></comment><comment><USER18> Doubt it will be successful, no beards: <http://www.youtube.com/watch?v=rKnDgT73v8s>

<comment><USER3> Ken, iant and I have beards thank you :) Rob, gri, Russ and Kai are sadly lacking.

<comment><USER19> Any chance you could please ditch the brace requirement?

You're already marking up the code for humans using indentation, don't repeat yourself by having the compiler use a different parsing mechanism (and make developers mark up seperately for their colleagues and the compiler).

<comment><USER20> Let's please not ditch the brace requirement.

<comment><USER19> Could you provide either some supporting arguments or a response to the parent post?

<comment><USER20> Sure. The 'indentation is enough' argument ignores that braces offer redundancy and are unambiguous.

They're like guard rails on the highway, they make totally explicit what is going on.

The 'but you're writing for other humans to read' argument imho is not 100% the truth, you're writing for both the computer and other humans to read.

Humans like the indentation, the braces make it explicit.

The computer doesn't care about the indentation, it _just_ looks at the brackets.

Drop a bracket and you get an error, drop a couple of spaces and your program will happily continue to work, only not in the way you intended.

it's funny how even in languages that don't use 'begin/end' markers (such as python) there are extraneous characters, such as the () pair when calling a function (surely there are ways to do without that ?), or when making a list or a dictionary.

Some things come in pairs, and the beginnings and endings of blocks are such things.

In Pascal it was BEGIN and END, which seemed overly verbose, in C it was { and }, which seems about as minimal as you can go before you become invisible, and when you get invisible you lose something.

Try cutting and pasting some python examples from online fora and see how well it works without.

And try figuring out from a python program that has been created on a box with alternate tab settings what it's intended function was (yes, I know there are tools for that situation).

Begin and end block have meaning, they are 'there', and even if you don't strictly speaking need them they cost next to nothing and make me feel a lot more like things are spelled out to mean exactly what I'm reading.

I should probably start collecting python examples in the wild on the web where the indentation is clearly messed up so the code no longer works the way it is intended, this is a lot more common than you'd want. It is also very frustrating when learning a language.

So, please keep those braces.

<comment><USER19> Redundancy is an argument _against_ braces, not in favor.

'They're like guard rails on the highway, they make totally explicit what is going on.'

Using this logic, perhaps you should add some ASCII art to your source to denote blocks a third time? This is also a common practice. Do you feel the same about duck typing?

'The 'but you're writing for other humans to read' argument imho is not 100% the truth, you're writing for both the computer and other humans to read.'

Yes, that's true the computer also parses the code. You still haven't provided an argument why using seperate blocking formats is required.

'they cost next to nothing and make me feel a lot more like things are spelled out to mean exactly what I'm reading.'

The cost is evident: there are many cases of indentation not matching braces and vice versa, and the inconsistency between these causing confusion between the language and the humans trying to debug issues.

Tell me you've never looked for an unmatched brace in code you can otherwise parse?

<comment><USER21> _Redundancy is an argument against braces, not in favor._

I disagree. I know that the word "redundant" sometimes carries a negative connotation, but the truth is that it is a mere property whose value depends upon the context and associated tradeoffs.

Spacecraft have redundant systems, but those systems are far from superfluous.

Human languages have built in redundancies. Generally they are there for ensuring communication still happens in a noisy environment.

My music CDs have redundancy in the encoding, and thankfully at that: after years of accumulating scratches I could still rip them without loss of quality. Redundancy was a positive here too.

Redundancy is a tradeoff, not an automatic downside.

<comment><USER19> Agreed about context, but let's be clear: spacecraft and music CDs have redundancy to _prevent loss_.

What loss are you preventing by requiring blocks be delimited twice?

Have you considered that inconsistencies due to repetition are frequently themselves cites as a cause of data loss?

Ever had code that looks good to you but doesn't parse because a machine is expecting an extra bracket?

<comment><USER21> I'm no rocket scientist, but I'm pretty sure that not all redundancy in spacecraft is aimed at preventing data loss. If you look closer you'll see redundant gyros for attitude control, redundant sources of power (solar panels, fuel cells) and probably numerous redundancies in environmental subsystems on the ISS (air, water, waste), and even redundant explosive bolts for stage separation.

I think jacquesm already mentioned the value of the redundancy above: you will never have a situation where a change in indentation leaves you with a runnable, but semantically-different program when you pasted code from a forum or from a machine with different tab settings. Note how the missing-bracket case in your last question is superior to this: a missing bracket offers fail- fast detection of the problem. If you indent a line wrong your program may still run, but differently: indent the last line of a block at the wrong level and it may happen after a loop rather than inside a loop.

The indentation is for the person. The braces are for the compiler. I like this, personally. I understand how some may prefer the python way (it has a superficial elegance, after all). But I personally don't like the downsides that jacquesm mentioned.

<comment><USER19> 'you will never have a situation where a change in indentation leaves you with a runnable, but semantically-different program when you pasted code from a forum or from a machine with different tab settings.'

In that situation, with any computer language, you'll have an unreadable program. In Python, you'll need to fix the readability before the program will execute - which is a win to me.

<comment><USER21> I'll admit I don't know what magic the Python interpreter is capable of. I was imagining cases where an indentation change does not break readability:

        for foo in bar:
            foo.fizzle()
        baz.wibble()

...versus...

        for foo in bar:
            foo.fizzle()
            baz.wibble()

...how would it know that I wanted to wibble the baz every time I fizzle a foo, as opposed to wibbling the baz only after all foo have been fizzled?

<comment><USER19> Because you've told it to by making your data look correct.

Python executes your data the same way you yourself parse it: by how it appears. Brace requiring languages execute your data using different rules than you use to parse it.

Redundancy of logic is universally known to be a poor engineering practice.

<comment><USER21> _Tortoise:_ I'd like a bicycle helmet, please.

 _Achilles:_ Why do you want to wear a helmet?

 _Tortoise:_ So that I won't hurt my head if I bump it.

 _Achilles:_ You won't bump it.

 _Tortoise:_ Suppose I do.

 _Achilles:_ You won't bump your head.

 _Tortoise:_ But suppose, hypothetically, that I fall off my bike and bump my head. What would protect it from injury?

 _Achilles:_ Your head is not injured, because you didn't bump it.

 _Tortoise:_ But that's the very basis of my hypothesis!

 _Achilles:_ Yeah, I'm going to just ignore you said that, and tell you again that you won't bump your head.

 _Tortoise:_ How do you know?

 _Achilles:_ Because you made sure that it didn't come into contact with anything.

 _Tortoise:_ Good night, dear Achilles. May you encounter others like you.

<comment><USER19> Sorry poor Tortoise, you're putting words into Achilles mouth.

Fortunately, Python gives you:

* A helmet. It won't parse unblocked code like any other language.

I'm not sure why you think blocking a second time with brackets would improve things or avoid this risk. But hey, if you want to wear a second helmet, that's cool. May you encounter others like you. :^)

* A mirror where things are as large as they appear (the blocking looks like it executes), unlike other languages where these can get out of sync and cause problems. If you enjoy this risk, that's awesome. High five.

* A handy warning light should you accidentally stray too far to the wall (Python will telling you that your readability is broken at the same time it tells you your blocking is - and you only need one fix). If you'd prefer not to be told about this, two places to fix things, and enjoy receiving badly written code, that's your prerogative and who am I to say anything other than that it's not mine.

Achilles: Nice bike and helmet.

Tortoise: No!

Achilles: Er, ok. Could you explain?

Tortoise: I need to get a helmet!

Achilles: You're already wearing one.

Tortoise: But what if I fall?

Achilles: You're wearing a helmet, which will protect you.

Tortoise: But I need to get a helmet.

Achilles: No you don't, you're wearing one. Oh and by the way, you need to be visible at night. The helmet's reflective, so you probably don't want to cover it with another ...

Tortoise: You're not listening to me!

Achilles: I am listening, but I'm also disagreeing. Are you listening to my disagreement?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> <http://golang.org/doc/go_faq.html#Concurrent_programming> "Do not communicate by sharing memory. Instead, share memory by communicating."

</comment><comment><USER23> Chrome. Closure. Go.

It says great things about Google that these all clearly started as projects that they assumed _nobody would ever have to Google._ (Although <http://www.google.com/chrome> is now #1 for [chrome]).

<comment><USER24> Is there a reason why so many languages are nearly impossible to search for? (C, C++, Go, etc.) I mean, surely someone must have figured out that this is not the best naming trend quite a while ago.

<comment><USER25> Really? <http://tinyurl.com/y8zjorj>

<comment><USER26> Hem... at one point you will need to search for more specific things.

"package management for go programming language" or "XML parser go programming language" probably won't be so useful, and it is sure cumbersome to type.

</comment></comment></comment></comment><comment><USER27> Ok, a language for engineers not for people that want to be truly expressive with the code they write. This is my impression when looking at the examples, they have something odd in the way the code looks like.

Now from the technical point of view, there are a few interesting points like the threading approach, but in general the language does not appear to provide great new ideas, nor to be a language where consolidated ideas are put together very elegantly.

It seems like that for system programming the "better C" that one could need is different than this, while for general programming what is really missing is something like Ruby and Python but made as fast as C and with low memory usage by mean of doing the right sacrifices to the language, but still retain most of the abstraction level.

Go is not as powerful as C++, not as high level as Java, not as raw as C for low level stuff. I don't like it.

<comment><USER28> Neither C++ nor Java implement Hoare's CSP, or have any primitives fundamental enough to implement them in terms of.

Go is _exactly_ what you're asking for in your third paragraph -- it seems you were blinded by the curly braces...

<comment><USER27> Yes CSP is a good abstraction that Go implements, but programming languages are not just a matter of features like call-cc, tail-calls, closures and so on. This are _very_ important things, but it's not enough.

</comment></comment></comment><comment><USER28>
      hg log --rev 0:4 --template '{date|isodate}\t{author}\n\t\t\t\t{desc|firstline}\n\n'
      1972-07-18 19:05 -0500	Brian Kernighan <bwk>
      				hello, world

      1974-01-20 01:02 -0400	Brian Kernighan <bwk>
      				convert to C

      1988-04-01 02:02 -0500	Brian Kernighan <research!bwk>
      				convert to Draft-Proposed ANSI C

      1988-04-01 02:03 -0500	Brian Kernighan <firstname.lastname@example.com>
      				last-minute fix: convert to ANSI C

      2008-03-02 20:47 -0800	Robert Griesemer <email@example.com>
      				Go spec starting point.

</comment><comment><USER29> AT FIRST GLANCE:

Annoyances: braces; variable declarations more verbose than in C

Flaws: no discriminated unions; no generics or parametric polymorphism

Doubts: no exceptions; no macros (as far as I can tell)

        Edit: I take back the verbosity claim. := does inference
        Edit2: interfaces replace generics, but are
            type-checked at runtime, apparently:
            http://golang.org/doc/go_for_cpp_programmers.html#Interfaces

<comment><USER30> Yeah. Languages with no control flow other than "call" and "return" were ok for the 80s... but we know better now. Just add continuations and you get functions, coroutines, exceptions, loop exits ("last", "next", etc.), and so on for free.

I am not sure why I'd use this language with no libraries when I could use a better-designed language with no libraries instead.

<comment><USER31> There are other control flow options available. For example they offer the following simple example of what they call _goroutines_ :

        ch := make(chan int);
        go sum(hugeArray, ch);
        // ... do something else for a while
        result := <-ch;  // wait for, and retrieve, result

You can actually set up any complex mess you want of functions talking to other functions through channels. This gives you coroutines, threading, etc. Looking through the spec, it looks like they have anonymous functions and closures as well.

While I agree that they need to add exceptions, they do have some interesting things in there already.

</comment></comment></comment><comment><USER28> "Go has its own model of process/threads/light-weight processes/coroutines, so to avoid notational confusion we call concurrently executing computations in Go _goroutines_."

I like this not just because it's CSP reborn -- new languages should be introduced with their own delightful disambiguating nomenclature.

<comment><USER19> I like it because it rhymes.

</comment></comment><comment><USER32> Garbage collection, type inference, built-in maps and arrays, immutable strings, concurrency support. Very nice!

Best of all, no header files!

<comment><USER33> As a random aside: it's possible to build C++ projects without header files, and get your source files to automatically work out their own dependencies and all that good stuff.

I did it with a horrible C++ preprocessor hack. It was fun.

<comment><USER34> And for C, see makeheaders <http://www.hwaci.com/sw/mkhdr/>

</comment></comment></comment><comment><USER35> Ars Technica on Go

[http://arstechnica.com/open-source/news/2009/11/go-new- open-...](http://arstechnica.com/open-source/news/2009/11/go-new-open-source- programming-language-from-google.ars)

<comment><USER32> Nice article, but calling Go not innovative because it has a C-like syntax is a bit naive.

<comment><USER36> Journalists journalist, coders code.

<comment><USER19> There's a shitload of coders who write well.

* Kathy Sierra

* JWZ

* ESR (okay he's a bad coder, but still)

* Zed

* _Why

* The MIT Introduction to Algorithms instructors who clearly spend time making their lectures entertaining as well as informative.

* And yeah, most of the staff at Ars:

DRY dictates not having seperate markup for the compiler and your colleagues - so yes, in that respect, the unnecessary braces in Go are not innovative.

</comment></comment></comment></comment><comment><USER37> You have to love a project where the designers are sitting on irc fixing build bugs as they come in. (No, this isn't unique for opensource projects, but it's always great to see.)

Thanks for giving me something to do with all my free time for the next couple of weeks.

</comment><comment><USER38> For my doctorate I did everything in CSP and Occam, so it's wonderful to see the channel communication methods defined for this language.

<http://golang.org/doc/go_mem.html>

If you do things via synchronized channel communication then it eliminates (mostly) the need to spend all your time with mutexes and the like because the channel sync does that work for you. At the beginning it'll probably take people time to get there heads around it, but my recollection was that it was a game changer once you understood how the synchronization worked.

</comment><comment><USER39> I use C when I have a program with tight timing and/or memory requirements. I see that this is a GC language, so am I right in assuming that it's not suitable for soft or hard realtime systems?

<comment><USER40> Most of Google infrastructure is soft realtime so GC delays have definitely been a concern. The memory footprint for a simple hello.go on arm using 5g is currently ~70k with the optimizer not yet enabled. I'm planning to do some work on a AT91SAM7 with 256kb of flash and it should fit OK. You might be able to squeeze it into a smaller space if you drop some of the runtime.

<comment><USER39> Assuming the OS threads/preemptive multitasking are playing nice (i.e. letting me devour timeslices at my leisure), how well do you think the GC would work when I need to land events in a 15 microsecond window at 40hz on a normal desktop PC? I'd be crunching a decent amount of math and discarding/creating objects between events, but total memory utilization would not be going up or down.

Sorry if that's kind of specific, it's some of the limitations in one of the current problems I'm working on :)

<comment><USER40> Given the realtime GC is not done nobody really knows. However, the design goal is to have the GC interrupt time to be linear to the stack of your go- routine (with small constants). Thus you should have at least some control over event latencies through program structure.

Like I said earlier, there is significant interest inside Google to make it possible to write really low latency services in Go. I personally think 15 usec is reasonable to ask for.

<comment><USER39> That's very very cool, thanks for the info

</comment></comment></comment></comment></comment><comment><USER41> I wonder if Go is what will "replace" Python internally at Google? ( w.r.t. <http://news.ycombinator.com/item?id=933493> )

</comment><comment><USER42> I can't find any sort of reference to a Google sponsorship. Am I missing something?

<comment><USER3> We (the Go team) all work at Google :) See also <http://www.youtube.com/watch?v=rKnDgT73v8s>

<comment><USER43> Thanks Adam.

</comment></comment></comment><comment><USER44> It's a very promising language, and the tutorial's not bad.

The main quirk I see right now is that the syntax feels more like a shuffling of characters, rather than actually simplifying anything. For instance, they save parentheses in for loops (great idea!), yet suddenly I need a useless "func" before every function. It also seems like there needs to be a default type for arguments, either "int" or "string", for it to feel truly simplified.

A feature I would really, really like to see in a language is the notion of automatically printing lone strings, or automatically printf()-ing lone string format lists. It's a little irritating after all this time that one must "echo" or "print" or System.out.println() or fmf.Printf() everything (much less import standard libraries to do it), when it is _such_ a common task.

</comment><comment><USER25> wow... first impression is this is my dream language... Can't wait to start messing with this...goroutines yay...I could be wrong but this looks really nice.

</comment><comment><USER45> After reading "The Case for D" a little bit back, what these leaves me wondering is not, "Why this over C or C++?" but "How does this compare to D?"

After a quick glance, D piqued my interest more. D seems to fall a bit nearer to the C++ side of the fence than Java, but also boasts C++-level performance and relative safety.

<http://www.ddj.com/hpc-high-performance-computing/217801225>

Neither of them will replace C or C++ in the near-term simply because those languages are so entrenched, but if I were looking for a language just to play around in for potential future use from these families, at this point it'd be D.

</comment><comment><USER46> The home page touts "safety" as a feature the language but all it takes to crash the program is concurrent access to the builtin map: "uncontrolled map access can crash the program", according the faq.

Interesting so far besides some syntax ugliness and lack of macros, but not yet good enough for many system programming projects, especially given the state of the garbage collector. GC is the hardest thing to implement large- scale, concurrent, memory intensive applications (e.g, database servers). Java spent 18 years to perfect its GC to be the current state of the art, which still sucks for these applications.

I hope they can come up with a concurrent garbage collector that can work on > 16 GBs of RAM with sub ms max latency :)

<comment><USER28> It is intended to be absolutely safe: dereferencing an invalid pointer doesn't result in "undefined behavior" -- it results in your program halting every time. You can't accidentally succeed or allow for buffer overflows, which is all that's important (especially since Go doesn't have exceptions).

Hopefully they can rip off the design of GHC's amazing parallel garbage collector (it runs in its own pthread), and ditch the current mark-and-sweep.

</comment></comment><comment><USER47> Looking good. I always thought something like this would be LLVM based, this is surprising.

<comment><USER48> They said in the FAQ that they "felt" LLVM was "too large" and "too slow". I would have liked to see this statement backed up with data.

<comment><USER49> link to Ken Thompson's previous c-compiler paper <http://doc.cat-v.org/plan_9/4th_edition/papers/compiler> search for 'Performance'

</comment></comment></comment><comment><USER32> Looks interesting! I feel that an improved C is what's mostly lacking in the programming language landscape nowadays.

So now Google's got its own OS (two actually), browser, and now its own programming language. Anything missing yet? Their own editor / IDE?

<comment><USER50> Bram Moolenaar (vim) is a Googler.

<comment><USER10> ...and has his own experimental C language replacement: <http://www.zimbu.org/>

</comment></comment></comment><comment><USER51> A lot of this looks very nice. One very simple thing I noticed was missing was a binary integer literal syntax. With a systems programming language, it would be nice to be able to write bit sets without shifts sometimes. Just use the obvious '0b10100101' syntax.

Also, I think the zero-prefix convention for octal literals is very confusing and possibly error-prone, but it seems to be used even in modern programming languages. Is there a good reason to keep using '0765' instead of something '0o765'?

</comment><comment><USER52> "However, in Go, any type which provides the methods named in the interface may be treated as an implementation of the interface"

I've been wanting this in C# for a while now. Maybe one day...

<comment><USER53> Yeah, I'd kill for Duck Typing in C#.

<comment><USER52> I never knew what duck typing referred to. Thanks.

<comment><USER54> (possibly redundant)

It's based upon the phrase: if it looks like a duck and quacks like a duck, it's a duck.

In this case, if the object has the methods of the duck interface, treat it like a duck object.

</comment></comment></comment></comment><comment><USER55> Some of the style reminds me of Alef from Plan 9; in particular the communication channels, but also a fair chunk of the syntax.

<comment><USER36> That will be because that's what it's based on.

</comment></comment><comment><USER56> It does certainly smack of "Not-Invented-Here Syndrome," but compared to the Dilbert like project management culture of my job I rather admire it.

I've just been getting in to generic programming with C++ (Stepanov's new book, awesome). So the fact that they don't have templates or operator overloading (the two critical pieces to STL style) was a bit of a downer. That being said the interfaces concept reminded me of generic functions (in CLOS). Sounds pathetic but I probably will give it a try just because it's from Google -- but I'm quite skeptical. With the really interesting work going on with Haskell, Clojure, Fortress, etc. it seems a shame to stay so close to C.

<comment><USER20> Have a look at some of the names behind it and see if you stick to your 'Not Invented Here'.

<comment><USER56> I don't think you understand what "Not invented here syndrome" means. See: <http://en.wikipedia.org/wiki/Not_Invented_Here>

What I mean is that Google always has to do things the Google way whether that's an improvement or not. Whether this turns out to be a valuable contribution to the field will play out over the next few years. We'll see. But a company that makes their own DB, their own phone, their own programming languages, etc. is pretty much a prototypical "not invented here" company.

<comment><USER20> I was familiar with the term, but thank you for your attempt at educating me.

Google has some unique problems, they also have a unique position in that they probably have pooled the largest number of IT talent world wide.

That gives them clout enough to do these things, just like Erlang came out of a phone company (why, couldn't they have used some existing language ?) and Apple made their own phone (I'm sure they could have afforded a Nokia or two) google can and does have the budget to branch out in other fields.

That's not 'NIH', NIH is doing something even though better alternatives exist, for instance, writing your own bookkeeping software when you're a mid- sized company and you should be spending your time on serving your customers instead of writing bookkeeping software.

Google even makes their own servers, at their levels of scale a lot of things that do not make sense for smaller companies actually improve the bottom line.

Google suffers from many defects, bad customer support would be the top of my list, but NIH isn't one of them, at least not in this case.

That's almost like accusing Xerox in their heyday of having NIH, and I'd hate to think what the world of software would look like today if it hadn't been for that.

</comment></comment></comment></comment><comment><USER57> So how long before we start seeing craigslist ads that ask for 5 years of Go experience?

<comment><USER58> 2 weeks, tops.

</comment></comment><comment><USER59> I am curious if someone could explain how a project in Go would compare to a project in Python or Ruby + a fancy array of custom C modules? This implies that it is possible to implement the nicer features of Go (for example concurrency support) in the modules supporting these languages. Or instead making kickarse fast compilers for higher level languages?

Is it too simplistic to say that at one end you have expressive languages designed for humans and at the other you have low level languages designed for speed?

edit: not meaning to insult humans who like fast languages.

</comment><comment><USER60> I am not so interested in Go as an implementation platform, so much as I am in the idea of a bridge for web programmers to real C.

<comment><USER32> I like C, maybe it is Good Enough, but don't you think C has some real flaws that could be fixed in a newer language?

<comment><USER60> I think there's ~30 years of C code that isn't going away and that is going to remain the bottom layer of most programming stacks, and it's good for devs to be able to drop into it.

<comment><USER32> There will always be a need for a bottom layer language, but 20 years from now, will it still be C? I hope at some point the world will migrate to a newer language.

<comment><USER20> Why would you hope that if the old language is doing just fine for the purpose ?

<comment><USER61> 'Just fine' is relative. The state of California still does all its financial transactions on a mainframe running COBOL; the cost of maintenance rises every year, but thanks to our budget deficit nobody wants to write the check for the cost of replacement.

</comment></comment></comment></comment></comment></comment><comment><USER62> I would like to see Google "eat their own dogfood" before I invest in Go. Or do they already use Go in production?

<comment><USER12> goglang.org runs Go.

<comment><USER62> I meant real business like GMail or similar.

<comment><USER63> Do you want your email server to use a language that even the developers admit isn't yet ready for production?

<comment><USER62> No, I did not write that, but since there is no serious Go-application inside Google, their management could very easily "pull the plug" and no longer support this experiment.

I would probably fear that, if I would invest time in learning Go.

I don't understand why the team did release Go to the public at this early stage of development, what they expect from the developer community.

</comment></comment></comment></comment></comment><comment><USER13> Apparently, Go style is to use tabs (see go-mode.el). This is not Pythonic.

<comment><USER28> There's also gofmt, which automatically applies the full house style using tabs.

If anyone can bring about a tab reniassance, it's bwk, ken, rob, rsc, and gri. These titans wrote your operating systems and your programming languages. They all wrote their own editors (not sure about gri) -- hell, the Go tests use _ed_!

Tabs have been lost in the wilderness for too long, it is about time they are reborn!

</comment></comment><comment><USER64> I am just wondering how same link got posted twice ... <http://news.ycombinator.com/item?id=934140> ....Both point to <http://golang.org> ..

</comment><comment><USER49> might be influenced from this <http://www.vitanuova.com/inferno/papers/limbo.html>

</comment><comment><USER65> import "fmt"

what advantages this have over

import fmt

that a new language is choosing this sytax?

<comment><USER66> It keeps the grammar simple, for one.

<comment><USER65> IMO, Thats no reason to make me type two extra chars each time I import.

<comment><USER13> You're a programmer, right? So you type 70-100 WPM, right? That's 5-8 chars per second, so we're asking you for 0.4 to 0.25 seconds per imported module, or maybe 5-10 seconds per program.

I do see the reason to design a language efficiently, but I emphatically disagree with optimizing away small numbers of characters. Typing is a basic skill for the job, and the overhead is dwarfed by the text of the program (not to mention that we're making everyone type braces and semicolons).

<comment><USER65> If its a conscious tradeoff decision, doesn't it need to have a positive however small, to counter that negative, however small? now That positive might be "close to c++ syntax", but I am wondering if there is any other.

</comment></comment></comment></comment></comment><comment><USER67> The main selling point is compile time.

Sweet...

</comment><comment><USER68> And finally C 2.0 sponsored by Google. Good move against Apple.

It (go + native client) might become a next major platform. Just think about low-level (and easier to code than C[++]) Javascript alternative.

</comment><comment><USER69> What the hell??? Didn't they come out with programming language last week already or some such? I don't see the point exactly. I mean I can learn it, but then what? It's not going to be installed anywhere where I can do work, it's not going to have any third party libraries, it's not going be be supported by any decent editor for a while (I use vi, throw your rocks).

Google: what is the point? First it's browser plugins, then browsers, then two OS's, now programming languages? How about a nice new processor architecture a la PowerPC? It's better and faster you know. Maybe they'll also invent new people to be their user base. I can imagine that intro video: "Welcome to GPeople - the new Google interaction experience. When you interact with a GPerson you don't need to talk. They already know what you are thinking and will insert relevant advertisement into their conversation with you. The advertisement will be unobtrusive and will target your innermost fears..."

<comment><USER34> They already support your editor: [http://code.google.com/p/go/source/browse/?r=release#hg/misc...](http://code.google.com/p/go/source/browse/?r=release#hg/misc/vim) :-)

</comment></comment><comment><USER70> Can someone give me some examples of where this might be used (and to do what)?

</comment><comment><USER71> This new programming language from Google is quite a buzz on the web now. To be honest, I always got excited about tools that promised to speed-up and simplify development. But most of the time, those trendy tools are just even more time wasters. One language I find to be [almost] ideal is Scala. I believe that Scala will replace Java. Also, writing code for JVM gives you a huge advantage - you can create OSGi bundles. IMO, OSGi framework is the most mature module system. So I think that there's nothing good about this language except that it's created by Google.

</comment><comment><USER72> I am not interested in really learning another programming language, and from the looks of it, the productivity claim is questionable. Not only can many of the examples they show be done in fewer lines of code in other languages, but you also do not need to re-learn the languages you already know. Many programming languages offer many of the features they are mentioning as useful so why learn yet another programming language unless it truly has something useful to offer that does not already exist. As one person stated, it has braces. I like braces for the purpose of organization, but I dislike variable declarations because it only serves to clutter the code and sometimes decreases productivity. The programming language needs to become more productivity oriented, and I do not think Go accomplishes this goal. Developers want to be creative with their code, but they would probably rather be more creative with their projects instead.

<comment><USER20> This is hacker news, learning new programming languages and learning about them or thinking about them is part of what hacking is all about (at least for me it is).

If you think that programming languages are a 'done deal' then try to ignore the last 15 years or so and see what you're left with.

Sure, we're not much closer to the holy grail of programming in absolute terms, but new languages (erlang, clojure, ruby, python to name a few) have definitely incrementally changed the perspective we have of programming, and have opened up more fruitful ways of building certain classes of applications.

<comment><USER72> When I stated "I am not interested in really learning another programming language", I should have worded it more clearly. "I am not interested in learning this particular programming language because it does not seem to be a step above existing languages. It seems outdated before it has even been released. Simply because something has big names behind it does not mean the product is automatically superior to others. I intend to learn other languages, of course, but I do not intend to waste my time.</comment></comment></comment>


'Wolf-like' creature shot on Montana ranch puzzles experts - <AUTHOR> http://www.bbc.com/news/world-us-canada-44243644 <comment><USER2> Bears and wolves mating: [http://www.macroevolution.net/bear-dog- hybrids.html](http://www.macroevolution.net/bear-dog-hybrids.html)

<comment><USER3> That link quickly led to this, which is hilarious:

[http://www.macroevolution.net/dog-cow- hybrids.html](http://www.macroevolution.net/dog-cow-hybrids.html)

</comment></comment><comment><USER4> Canids are pretty much a superspecies anyways.

Consider brown bears and polar bears. We consider them 2 species yet they can successfully interbreed. The main reason they don't is that their ranges haven't historically overlapped. Geography, not biology, was the separator. You could view them as one species with a bivariate distribution, in the late stages of diverging into two.

Canids likewise viewed as one species with significant ecological clustering, but divided this time by behavior.

</comment><comment><USER5> The long nails (I wouldn't call them claws) look like a dog that doesn't get outside much. If a dog is outside, walking around, digging etc the nails get ground down and would be much shorter. If this were a wild animal, those nails would definitely be shorter.

I would say this was a house pet in the very recent past (whether a dog, or some wolf-dog type animal).

</comment><comment><USER6> Looks to me like it has coyote blood in it. My guess is it's a coywolf. Let's wait and see if I'm right.

<comment><USER7> Agreed that this seems likely. There's the Eastern coyote which is a hybrid of Western coyote with Eastern wolf and some dog thrown in the mix. Those paws definitely look doglike to me.

</comment></comment><comment><USER8> It _does_ look kind of bear like, since the article mentions it...

</comment><comment><USER3> > It's too far north to be the legendary Chupacabra

Perhaps some gente moved to Montana and took their pet Chupacabra with them.

</comment><comment><USER2> Looks like a bear mated with a wolf. They are both from the Caniformia suborder.

Could be an extinct Hemicyoninae, meaning "dog-bear".

</comment><comment><USER9> Could the Chupacabra actually just be a large shaggy wolf?

</comment><comment><USER10> There hasn't been Direwolves south of the wall for more than two centuries.

</comment><comment><USER11> This was way cooler when I read it as "worf-like"

<comment><USER12> At least it was an honorable death.

<comment><USER13> I'm not sure if animals go to Sto-Vo-Kor, though.

</comment></comment></comment><comment><USER14> It's a... man bear pig.

</comment><comment><USER15> wolfdog?</comment>


The Ethereum-Dogecoin Decentralized Bridge Protocol Is Coming Soon - <AUTHOR> https://cryptoslate.com/the-ethereum-dogecoin-transactional-bridge-protocol-is-coming-soon/ <comment><USER2> "No more will the world have to look in two different places for squirrels and provolone cheese."

<comment><USER3> TBF provolone enthusiasts ∩ squirrel watchers ≠ ∅</comment></comment>


Artists who survived brain injuries but found a new craft - <AUTHOR> http://www.bbc.co.uk/news/disability-38102932 <comment><USER2> I'm a brain injury survivor, I was hit by a driver running a red at >40mph. It's so important to have stories like this out there. It's a condition that is complex, individual and often hard to explain to the people in your life. Beyond the physical tells, my resulting mood disorder became intertwined with concentration problems that seriously inhibited my path to recovery.

I developed a cannabis addiction and when my lawsuit settled virtually everyone I knew, including members of my family, became so jealous of my windfall that my support network disappeared. My depression only deepened. I studied psychology part time in university and slowly recovered. Not working for 5 years though completely turned my group of friends, who also come from a blue collar background, against me. My efforts to wear a smile and share my wealth only tainted things further as they became convinced I was just a lazy lottery winner. People most willing to spend time with me and smoke my weed became the most eager to shame me among others.

I now medicate with the help of a doctor and his drugs work much better. I'm in a supportive relationship and although many people from those days still fail to understand my condition, I've mostly cut them from my life.

I also make art as therapy, I purchased a couple analog synthesizers and get great benefits out of a session of designing and recording sound. It's really a great art form for geeks looking for something outside visual art. You can create very complex signal paths when feeling ambitious or just experiment with some knob twisting and random plugging. Both methods have about the same success rate as far as interesting sound creation goes. Former cannabis users will get great satisfaction as they overcome the problem of music feeling dull outside of intoxication.

<comment><USER3> Holly, shit, that sounds like my life. After my accident I also started to abuse drugs. Stopped, recovered. Finished a tough education. Make now good money. Friends are also kinda oissy (except the poorest one) (stopped looong ago now like twenty years now) but i wonder if there is some kind of correlation between brain injuries and drug abuse?

<comment><USER2> Oh yeah, drug abuse is a common thing to come across in TBI support groups. Executive functioning and self regulation issues, frontal lobe stuff and impulse control. It's where the TBI people go Venn diagram with the ADD/ADHD people.

<comment><USER3> You think add/adhd existed before the tbi and the accident made it worse and the drug abuse is a way you try to control it?

<comment><USER2> Definitely a possibility. Without testing from before an accident its a bit of a guessing game with anecdotal evidence from family members.

But yeah, based off my experience I can totally see how a smart kid with ADD that floated through the system would find a tbi suddenly making previous obstacles into show stoppers. Same with depression. When your executive functioning takes a hit you are now operating without the full feature set.

These things do tend to play off each other and it's easy to start pilling disorders up once you've got a few biggies. My doctors generally tried to pull me away from playing a labeling game. Studying psychology during my recovery had me basically diagnosing myself with new stuff every term. Instead we worked towards pragmatic goals of reestablishing my concentration, healthy sleeping and impulse regulation.

It occurs to me now that living in Canada perhaps made the process of arranging specialists easier.

</comment></comment></comment></comment></comment><comment><USER4> There's a great documentary about Frank Frazetta called Painting with Fire. Later in life he suffered a stroke that paralyzed his right hand. He taught himself to paint and draw again with his left.

</comment><comment><USER5> This sounds like an ad from the radio in GTA V for lobotomies as a way of removing any existential angst you may be suffering from.

</comment><comment><USER6> The headline chosen by the BBC does not sit well with me. "Take my brain out" feels very click bait-y, and maybe even slightly exploitative. "I take my brain out and recharge it" is the snippet of that quote in context.</comment>


Rensselaer to Require All Engineering Students to Study Abroad - <AUTHOR> http://www.spectrum.ieee.org/print/6149 <comment><USER2> I'm an RPI grad and I think this is very cool. After hearing about great experiences from other students who studied abroad, I really wish I had minored in French and taken a year in France. English wasn't a required subject, much less foreign languages (they only offered French and German), so I concentrated on computer art classes. In hindsight, I chose poorly.

And let's face it, the weather in Troy is pretty horrible and it's not exactly dripping with culture. Studying abroad could help overcome this, especially if it was part of your tuition.</comment>


Urgent: Pre-Revenue B2B Sales Forecasting - <AUTHOR> Hi, I need to create a pre-revenue sales forecast for a b2b ad tech product. Can someone guide me or post relevant links on how to go about it please?<p>-Lylah<p>PS: you can also email me on email@example.com <comment><USER2> Since you are pre-revenue, you are guessing. It (hopefully) is educated guessing, but in the end you are making a best-case projection. So you need to be able to back up whatever assumptions you can use. For example, some reports have mobile ad revenue growth up between 70-100% y/y. So, I'm guessing your main revenue drivers are going to be the price points, market penetration, and the amount of repeat users/churn (depending on if it's a SaaS revenue model or not).

It's hard to give you much more without some more information, but in essence figure out how much of the market you can capture per month, how much you charge for those, and how many people reuse/stick around each month. And then do a low/high case as well. It's unlikely any of these will be close to the eventual truth, but you'll at least understand the drivers.

If you are asking what the numbers should be...well, that's your job as the guy with the product. :)</comment>