We have to dig through 30TB of images -- so the performance benefits we got from gccgo were worth the trivial effort it took to implement.
1,665 karma · joined August 6, 2011
We have to dig through 30TB of images -- so the performance benefits we got from gccgo were worth the trivial effort it took to implement.
Additionally, in most benchmarks, Go does fairly well and is young and constantly improving: http://www.techempower.com/benchmarks/
You will also find Nimrod / Jester in those benchmarks, and can compare the performance for yourself.
I meant it in good humor, but over the last 15 years, I have had the joy (and pain) of getting to ship production systems in a lot of less popular stacks including: Erlang (multiple), Eiffel, Haskell, and OCaml.
Hiring and training for these less popular stacks has been a goddamn nightmare in "win" conditions. You have the benefit of the better signal to noise ratio in resumes, absolutely. But, you pay for that in rarity, salary and job demands, which is fine as long as you go in eyes wide open and plan to have a small team (under 10).
Rapid team growth (from money injection, or simply success and need) is really, really hard when you don't have a large pool of qualified candidates to pull from... and training, I honestly can't fathom trying to train PHP developers in Haskell. If you company has done this successfully, please setup a newsletter, I would subscribe.
They spent a lot of the post-DOJ years trying to find a way to bully the hardware vendors without getting kicked in the teeth and never found a way. This is why "signature" failed, this is why touch screens failed, this you could even argue is why early tablets failed (way early, 6+ years ago).
MS seems to have learned this, and started building their own hardware. The Surface 2 Pro is a remarkably nice to use device (and I didn't even reinstall the OS, I am using stock... gasp), it is my primary mobile platform replacing a 2013 Macbook Air. Being able to swap it between a (very heavy, but usable) tablet, and a decent laptop is a nice combo for me... and I doodle and write notes on it in meeting, the pen is wonderful and pressure sensitive.
Of course, like Ben Rich's "quotes" it was given only to me, mere days before he died, and never repeated to anyone else, and I never brought it up to another living soul for years... I was waiting for a bad history channel show to reveal it, but I guess this will do.
Because I need 4x hangouts (1 per company I work with, contracting, my own business, personal, etc) and many of the other apps either won't work with other clients, or have crippled features or usefulness, I end up running 10 "chat" clients.
grumpy old man voice Back in my day, we used to be able to setup all our text based messaging in one pidgin client, or a bitlbee instance! Damned kids.
I hope that Github is reactive enough to get permissions setup in a failsafe manner so I can give this a spin.
I suspect Fang Digital has pushed this terrible notion on their clients for years and now look like idiots, so they are doubling down.
FYI: The marketers I work with have near universally dismissed FB as anything but "brand building for when you have more marketing budget than sense"... well before this video (or the 2012 BBC one) put it into the commons.
> Calling Facebook and its advertising “a fraud” because you choose to run a “like campaign” in a part of the world that is known for fraudulent clicks
He ran it in US, CA, AU, UK targeting cat lovers (see: http://youtu.be/oVfHeWTKjag @ 6:00) -- additionally, this is a full on admittance that fraudulent clicks are a huge issue.
> astute among us know that measurements such as “Likes” do not constitute anything
Then maybe facebook shouldn't be selling them as the metric?
(redacted probably irrelevant comment)
EDIT: Part of the reason for this confusion may well be cultural. I am a US developer, and have heard similar "I get no respect" type rants from Canadian developers... often shocked by the pay and respect they can demand just a bit south.
My various tablets are now nearly permanently attached to my computers. I need them for writing / testing software, but that is mostly all they do these days, don't carry them around the house much, never carry them out of the house.
What was Java adoption in 1998? What was Scala adoption in 2006? What was Python adoption in 1996.
Unless the trend lines shift, Go is a IMHO something of a phenomenon. It seems to hit a lot of sweet spots in deployment, tooling and simplicity that is making a lot of groups happy. It is already being used to build tools people depend on (docker [just raised 15M], packer, nsq, juju, heka, coreOS), it is fast (http://www.techempower.com/benchmarks/) ... additionally, it seems to have decent penetration on both ends of the spectrum, large enterprises and tiny start-ups are choosing it (http://code.google.com/p/go-wiki/wiki/GoUsers), DevOps and Software Engineers are living together in rare harmony due to painless deploys and handoffs.
If you want to use GitHub as a barometer of language popularity ... http://adambard.com/blog/top-github-languages-for-2013-so-fa... --- Go is tracking darn close to Scala, despite being 8 years younger.
An emergency MUMPS project is still my highest billing project (per hour) ever.
RE: "No True Scotsman" -- you missed the point a bit. The point is that it is a shell game. "No hackers news reader would EVER do X" ... I link to a hackers news reader doing EXACTLY X ... "Well, no REAL hackers news reader" -- it is a informal fallacy about goal moving basically. You can't add "no REAL abc" to excuse counterpoints, because it means that ANYTHING I say / prove / point out, you will always claim "no TRUE hacker news reader would do that", making the argument pointless.
Re: Appeal to tradition. The point is that tradition has no inherent value, and doesn't relate to correctness. If my mother thought 2+2=17... and she taught that to me, and I taught that to my children, that would be a tradition in our family. The point is that just cause something is traditional doesn't mean it is correct.
Blocking is a feature. Blocking lets you reason easily, and as Go, Erlang, etc... have proven can be done at breathtaking speed and use all your cores... rather than wrapping your world view around async, use a system that allows you to keep your logic blocking and uses microprocesses to distribute work across a pool of threads. It is freeing to be able to just kick up 300k microprocesses if you need them.
Additionally, the node ecosystem tends to be quantity over quality... many of the available modules are simply more trouble than they are worth... while NPM makes getting them easy, it doesn't make deciding if something is worth using any easier.
When personal cameras first came on the scene -- the newspapers tried to inflame hysteria -- ANYONE COULD TAKE PICTURES OF ANYONE! There were pushes for regulation, banning, and people where ATTACKED for using cameras in public. Google for "Kodak Fiends" and "The Camerist and the Squaw" -- these were the old version of "Glassholes".
Society creates social norms to deal with this stuff. See again camera phones... a lesser for of "Kodak Fiends" trended in the press, then we adapted, and now no one even worries about it. It will happens for Google Glass over time, history tells the tale.
I think many people put too little value on communal norms, they have substantial value and are worth the adaption time. When in Windows C++ -- follow the conventions, when in Linux C -- again, follow the conventions -- and when in Go -- do that same. Fighting the dominant style for established platforms and languages is a mostly pointless, exhausting and sometimes debilitating task generally only done by those too inexperienced to realize how ridiculous it is. Team leads more experienced tend to just choose whatever is the dominate style / layout (preferably per-written up) for that platform/language realizing the benefits for getting ease of reading, consistency, hiring, firing, flexible labor (consultants) and most importantly not having absolutely worthless debates about style and layout.
I am curious about specifically where you got bound up -- and how we managed to via ignorance or blind luck avoid these rough patches. Additionally, I am not 100% sure I understand why you refactor cycle is so brutal. That generally is one of the things I enjoy about Go, lightspeed refactor / dev / test cycles.
Good thing no one is asking you to use Go, Haskell is always around (and Elixir, I guess... I am too used to Erlang syntax, Elixir feels like an ill fitting glove) and we need lots of great languages -- and they SHOULD feel different and some shouldn't be a great fit for you.
It isn't the most elegant, not even close. It isn't the most succinct, not even in the running. It isn't the most flexible -- people would mock you for claiming it is. It isn't interesting in the least, remarkably unremarkable as they say.
But when it comes to just simply getting shit done, and quickly understanding and being able to work in other peoples code, it is second to none. It just doesn't get in your way, and out of the box it gives you simple syntax, great tools and easy deploys.
If you really have an issue with some of the very opinionated ideas that come to a large degree bundled with Go, that is fair. That is great even! It probably isn't a good fit for you. Which is fine, there are hundreds of other programming languages that work for you, most are the wild west.
For certain people (like myself) the sanity of Go is striking -- each decision is made for unremarkable and straightforward defensible reasons... a lot of them are community driven over personal preference... it is better for the herd (think: herd immunity) if everyone uses one style and everyone uses one layout... etc. It isn't about being "right" or "needed" by every person, it is about being consistent so you can move from project to project and focus on learning the code, not layout or style, just what the code does.
Go was designed from inside Google, with large teams in mind with many projects.
The idea that all languages have to cater to all people is silly. Generics are ALWAYS a trade-off. None is hard for developers, C++ style is terrible for compile (tons of code-gen, macro crap, duplication, de-duplication stages), and Java style (box-box-box-box) is slow at runtime.
The misunderstanding that generics are free and there lack of inclusion was an oversight rather than a choice is misguided. The Go team aren't fresh faced neophytes, they move with purpose.
Additionally -- if you want lots of features, there are LOTS of ways great languages for you! Leave the small, crazy cadre of people who don't mind C, think Lua is awesome and think Go is great to their (own) devices, we will be OK.