Namecheap's "Move Your Domains Day" With $1 Donation to EFF on Transfers - <AUTHOR> http://www.elliotsblog.com/namecheap-to-donate-1-to-eff-for-every-domain-transfer-on-december-29-3744 <comment><USER2> Gandi will also do it until Jan 15th: <http://news.ycombinator.com/item?id=3404854>

</comment><comment><USER3> [https://webcache.googleusercontent.com/search?hl=en&gbv=...](https://webcache.googleusercontent.com/search?hl=en&gbv=1&sei=J5b8TtK- ItfJsAbShIm0Dg&q=cache:KmKEPW8sMCAJ:http://www.elliotsblog.com/namecheap-to- donate-1-to-eff-for-every-domain-transfer-on- december-29-3744+http%3A//www.elliotsblog.com/namecheap-to-donate-1-to-eff- for-every-domain-transfer-on-december-29-3744&ct=clnk)

looks like a spam blog to me

<comment><USER4> You're not very good at recognizing 'spam blogs', it seems. I suppose you're saying that because this blog has advertising.

<comment><USER3> No, because the user is spamming his site and the linked post is just a press release and yaddayadda.

<comment><USER5> that's really more of a spam _bot_ thing.

<comment><USER3> Rather a spam person and by that the intent is spamming and the site a spam site.

</comment></comment></comment></comment></comment><comment><USER6> I've got:

      Error 102 (net::ERR_CONNECTION_REFUSED): The server refused the connection.

Am I missing something?

<comment><USER7> A connection

</comment></comment><comment><USER8> They are donating based on transfers and not coupon code used. BYEBYEGD does the same as SOPASUCKS

<comment><USER5> Yep, my understanding is that the important part is "Dec 29."

</comment></comment><comment><USER9> It's a shame, they don't seem to support .ws domains. Any suggestions on a place that does?

</comment><comment><USER10> Just moved all my domains today.</comment>


Notarize: The notary app that's legal in all 50 states - <AUTHOR> http://www.notarize.com <comment><USER2> Your local UPS store probably has a notary and will charge you $15.

</comment><comment><AUTHOR> I find this pretty interesting (from the FAQ):

"What type of electronic certificate is attached to my document?

In accordance with the governing Virginia statutes, Notarize attaches a X509 PKI security certificate to each notarized document. This certificate is unique to each agent, enabling any recipient of a Notarize document to confirm the validity of the document and verify the authority of the notary agent."</comment>


How Many Values Does a Boolean Have? - <AUTHOR> https://danilafe.com/blog/boolean_values/ <comment><USER2> The point of this sort of question is to check that the candidate knows the basics, but also to see if they can take a hint and think.

In software undefined values are a thing and they can cause a lot of grief, so if the candidate's reply includes that a boolean might have an undefined value in some languages (even if they don't know which ones or if it's even the case), and/or that some languages don't have an actual boolean type and/or have rules on how to evaluate something as 'true' and 'false' I would be very satisfied.

No-one can be expected to know all the languages out there but in the context of such a question they should be able to come up with potential pitfalls that should be investigated as the case may be, that's the level of reasoning I would expect.

My personal experience of technical interviews is that saying that I don't know the specifics but off the top of my head I would want to check x, y, and z is usually well received (unless, of course the question is about something I am expected to know the specifics about because of my experience) because that is key to an engineer's job.</comment>


The Coding Zone - <AUTHOR> http://paulstamatiou.com/coding-zone <comment><USER2> "I must have a seemingly endless block of time at my disposal."

For me this is the most critical part. It's not enough just not to be interrupted. I have to feel like I _couldn't be_ interrupted.

That's the great thing about programming at night. If everyone else is asleep (except other people who don't want to be interrupted) they won't even think of interrupting you.

<comment><USER3> For some reason, I always find Friday afternoons the most productive "office hours" time; I suspect because people are too busy thinking about their weekends, too busy wrapping things up, or some other reason I'm not aware of.

Sometimes, I wind up working late on those days because I lose track of time and I actually don't mind. I find zone time related to my personal happiness, if I don't get into the zone, I become short fused and frustrated.

<comment><USER4> My most productive time is after midnight. The streets are quite, the house is asleep. Besides me, only my dog is awake, and she's only half awake, doing her job watching me.

Lucky for me, I'm one of the principals of the company. So I can work till 4am and stroll into the office at noon.

By the way, the music I zone out too is classical. I have playlist of symphonies and after each one I stretch out. when Strauss' "Also sprach Zarathustra, Tod und Verklärung" are (is) over I know it's time to stand up.

<comment><USER5> Why don't you make that policy for the rest of your company?

Or look at your workspace and figure out why the fuck people need to stay up until 4am to be productive, rather than being able to, you know, work, at work?

<comment><USER4> I'm a night person. Always have been.

As for the 2 programmers who work for me (the rest of the staff have to be there 9 to 5) they can work anywhere anytime. I care about results; meet your schedule- you can work from the beach if you want (I live in South Florida).

</comment></comment></comment></comment></comment><comment><USER6> Almost any programmer can be super-productive under such ideal conditions as "no chance of interruption". The challenging thing is to be productive under less optimal conditions. For example, how would you get programming done if you actually get to the point of having paying customers, and you can't just tell them "leave me alone, I'm in the zone, call me back in 8 hours or maybe tomorrow, and we can talk about that bug that's keeping you from logging on"?

<comment><USER5> I can see both sides of this.

Yes, the superstars are productive _despite_ interruptions.

Most programmers, however, aren't superstars, or are vastly more productive superstars when they can work without interruption than even those who can tolerate a highly non-optimal environment.

Some level of task-switching is necessary, but as the other respondent said: this is what a PM or support triage role is for -- figuring out how to schedule stuff for your limited attention without breaking the conditions that contribute to your productivity.

The research behind uninterrupted periods of work is hardly new or novel: The Mythical Man Month, The Psychology of Computer Programming, Peopleware, Flow, and other books span a few decades.

</comment></comment><comment><USER7> I always felt in the zone with a beer, late at night. Bit of Justice or something on Spotify (or otherwise set to some sort of chilled out dubstep playlist), lights dimmed, and off I go.

Now being actually employed, I don't often do much at home (and don't even have a desk any more). There's not much concept of a zone there and I've become more collaborative and less engorged by my work. So it's more about throwing ideas out there, engaging in discussions, and talking through benefits and implications.

So in that sense my coding zone is less about blanking out the rest of the world and getting shit done like it used to be. It's mainly about being on top form with new ideas and creativity.

Aside from all that, I don't understand the caffeine thing. It's almost a stereotype. A good cup of tea or glass of water does me better.

<comment><USER8>
      > I don't understand the caffeine thing

      > A good cup of tea [...] does me better.

But tea has caffeine in it. Did you mean decaf tea or herbal tea (aka an infusion, since there are no tea tree leaves)?

<comment><USER7> My wording was bad but I meant that I don't drink stuff _just_ for a caffeine boost. Espresso and Rocket Fuel and Red Bull/Relentless don't even register when it comes to needing a good drink.

If anything, I feel the come-down more than the pick-up.

</comment></comment></comment><comment><USER9> I'm one of those weird people that finds music distracting.

He didn't mention his computer set up very much, even though he has a pretty good one. Personally I'm going to be 100% more productive if I have a second monitor so I can code in monitor 1 and have documentation opened in the other.

<comment><USER10> I'm the same way. I never listen to music "casually" or in the background. All music is either something I'm really into, in which case I listen very actively, or something I don't care for, in which case I'd rather not be listening to it.

One potential exception that I've experimented with is classical music, but the high dynamic range (which is awesome) makes it difficult to listen to on headphones because parts are too loud and parts are too quiet.

<comment><USER2> I can listen to music when I'm doing easy work, but not hard work. I can listen to it while tracking down a bug (most bugs, anyway) but not while making something new.

<comment><USER11> I'm kind of the same way, but it depends if there is someone singing in the music. I find vocals distracting when I need to concentrate. Also, listening to my favorite music is distracting. To concentrate when working on something difficult, it helps if I choose music according to these criteria: 1) no singing in the music, just instruments 2) listen to music I don't love, but moderately like, such as jazz, classical, or trance. (I love vocal trance, but if I want to stay in the zone, I listen to instrumental trance).

</comment></comment></comment></comment><comment><USER12> As far as coffee goes one of the things that works well for me is what I call "rocket fuel", get a quad shot of espresso and dump honey in to taste.

<comment><USER13> I find green tea or oolong. Basically the only prep is adding hot water so it is easy to refill and keeps me in the zone (and with a warm drink) longer.

<comment><USER2> You raise an interesting point. I drink tea too, and I discovered surprisingly recently how much of the work is done by the heat rather than the tea. Sometimes now I just drink hot water.

</comment></comment></comment><comment><USER14> No mention of the chair? Heresy. I'd say it was easily the most important thing I bought (after the laptop). I can live with cheap headphones.

<comment><USER15> Very true, my PC and my chair are really expensive in comparison to everything else in my room.

</comment></comment><comment><USER16> I find it easier to get into the zone after morning exercise.

<comment><USER5> Doesn't have to be after exercise, but if I haven't gotten sweaty in a day or two, productivity lags.

</comment></comment><comment><USER17> As far as what my coding zone looks like, ours are very similar.

I have found working at night is the best for me.

When I'm coding I find that interruptions don't bother me, because I usually become hyper focused and I block out everything around me.

Strangely enough, I like to watch movies while coding. Preferably ones that motivate me like Limitless, or V for Vendetta, or the Social Network.

Turns out, if I have music or tv playing in the background that works just as well.

I try to eat health and, I don't drink pop or coffee (they make me crash hard once I break out of the zone.)

Finally, once I start coding I must finish what I sat down to start. That way each time I code, when I'm done I feel like I have accomplished something. Which in turn makes me want to do it again.

</comment><comment><USER18> I think headphones might be the single most important business purchase you can make. I splurged and bought the Bose QC15s, and no matter where I am, I can put them on and simply zone out the rest of the world. Sometimes I'll put them on, and when I come up for air the entire place will be full of people that I didn't even notice sit down next to me!

Also, like he said, have some "work music." I have 80s radio on Pandora that I've fine tuned with many a thumbs-down. I can be lethargic and unmotivated but once I sit down, put on the headphones, and play some Pandora, I can get into work zone quickly.

</comment><comment><USER19> I'm wondering what chair people suggest, I use a rather generic chair from Office Depot, that was only about 100 bucks. It's ok, but not great, also getting a bit old. Mind you this is while working at home.

<comment><USER20> Our whole team got the insanely expensive Aeron Embody chair (which are on bi- yearly sale in November for $1050.) At first I sat in it with guilt and thinking it wasn't worth it.

Now I am about to buy one for my home office. The posture becomes comfortable and provides a wonderful break from standing at our new GeekDesk 2.0.

<comment><USER21> Do you mean Herman Miller Embody? Or Herman Miller Aeron? They're separate products I believe.

</comment></comment></comment><comment><USER22> "Music"

You need a company Anthem, even if the company is just you. That one song that makes you feel like TODAY IS WHEN I KNEW I WAS GOING TO MAKE IT. When you are ready to start working, blast it before any other song.

</comment><comment><USER23> Perhaps obvious but for Spotify usage, just discovered today that you can change the track to next one without actually going to Spotify by just pressing the >> key (F9) on a Mac.

</comment><comment><USER24> My UsesThis:

        Club Mate
        Aeron
        MacBook Pro with an SSD (you never know how much time you wait for seeks until one day you don't)
        Dell U3011 @ 2560x1600
        Divvy
        F.lux
        Vim
        M-Audio FastTrak Pro
        AIAIAI TMA-1
        Apple corded keyboard
        A mouse with extra buttons mapped to switch desktops in Lion

I like to keep things simple.

</comment><comment><USER25> I like the coffee mug and more importantly the glass of water: always keep hydrated during coding runs!

</comment><comment><USER26> Can anyone suggest particular USB DACs? Preferrably ones that work on Linux.

<comment><USER27> any usb dac should work on linux; they appear as standard audio devices (and this doesn't depend on the make much - there are bunch of standard chips that everyone uses as usb interfaces). certainly the musical fidelity v-dac does, but that doesn't include a headphone socket (they make a separate headphone amp). if you just want something simple, i'd suggest a nu-force icon. if you want something obscure and boutique, have a look at audio-gd... if you want the latest technology check whether it supports "asynchronous mode" (audio-gd don't, generally; music fidelity v-dac ii (just released) does; icon doesn't; you can also buy "digital interfaces" that do async-to-digital, like the mf v-link) - they are supposed to reduce jitter (timing errors).

i am not guaranteeing you will hear any difference between any of the above ;o) i own the v-dac (i), which i feel improved the sound of my logitech duet (less abrasive), but that is feeding an amp and speakers, not headphones.

also, on music while programming:

\- i find that if i need to concentrate, the music just disappears into the background. it's not like i need to switch it off, it just becomes irrelevant.

\- i wrote some code that uses last-fm data to construct playlists of related music. if you have a lot of mp3s and want to listen to "random but related" music, this works great. it's not packaged nicely, but if you're used to hacking python you should be able to get it working - <http://code.google.com/p/uykfe/> (as well as generating standalone playlists it talks directly to logitech's squeezecenter to dynamically select music).

\- i may be showing my age, but fleetwood mac's rumors or nirvana's nevermind are my go-to albums for difficult bugs.

<comment><USER28> If you're interested I knocked up this to make some playlists to listen to ... pretty crude but works. <http://fmix.heroku.com> Enter artist or artist & track name.

</comment></comment></comment><comment><USER29> music is definitely key. I find sometimes I need something with a good beat to act like a metronome. the beatles is a good one these days.

</comment><comment><USER30> +1 on Trance Around the World!

</comment><comment><USER31> Surprised to find no mention of Caffeine !!

<comment><USER32> "Honorable mentions: A depth charge or cappuccino on my desk"?</comment></comment>


Monkey patching the Linux kernel with SystemTap to make CTRL-Z work - <AUTHOR> https://blog.cloudflare.com/how-to-monkey-patch-the-linux-kernel/?a <comment><USER2> I should definitely try that for replacing Insert with something else (probably delete)</comment>


Go Daddy lost 21,054 domains yesterday in wake of SOPA PR disaster - <AUTHOR> http://thenextweb.com/insider/2011/12/24/go-daddy-lost-21054-domains-yesterday-in-wake-of-sopa-pr-disaster/?utm_source=HackerNews&utm_medium=share%2Bbutton&utm_content=Go%20Daddy%20lost%2021%2C054%20domains%20yesterday%20in%20wake%20of%20SOPA%20PR%20disaster&utm_campaign=social%2Bmedia

<comment><USER2> Go straight to the source[1], this post has made several convenient omissions.

According to The Domains, _yes_ GoDaddy lost about 21,000 domains but they also _gained_ roughly the same number of domains from other registrars on that day (and that trend held for other days this week where they "lost"). In other words, they don't have any significantly fewer customers today than they did a few days ago.

[1] [http://www.thedomains.com/2011/12/24/2-days-loss-from- transf...](http://www.thedomains.com/2011/12/24/2-days-loss-from-transfers- out-of-godaddy-com-37000/)

</comment><comment><USER3> This is a terrible article. The number of people moving away are people moving away from GoDaddy's DNS servers, which does not necessarily have anything to do with the number of people using them as a registrar.

</comment><comment><USER4> Convenient omissions from the article indeed. The reporter appears to have been in haste to be the first to make a timely report of the 'success' of the GoDaddy boycott.

You will need to be patient to get any real numbers. The domain registration transfer process can take 3-5 days to complete, so it's improbable to actually know anything right now! Real facts on the success or failure of the boycott campaign will be seen in the upcoming weeks.

Also for better tracking of how many domain registrations may or may not have lost keep an eye on webhostinginfo's charts. Specifically the market share percentage: <http://www.webhosting.info/registrars/reports/GODADDY.COM>

</comment><comment><USER5> New Domains (32,437)

Transferred In (20,034)

Transferred Out (21,054)

Deleted Domains (31,047)</comment>


Drop Table Companies Ltd - <AUTHOR> https://beta.companieshouse.gov.uk/company/10542519 <comment><USER2> Achievement unlocked.

Next level - name your company:

      X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

</comment><comment><USER3> I very nearly did this a couple of years ago, but chickened out after the registrar I picked displayed a blank screen when I tried it.

</comment><comment> frant-hartm Shame the companies house runs on MongoDB :-D ...

[https://www.mongodb.com/press/companies-house-opens-its- data...](https://www.mongodb.com/press/companies-house-opens-its-data-mongodb- powered-api)

<comment><USER4> You can still do sql injection like attacks with Mongo.

</comment></comment><comment><USER5> "Nature of business (SIC)

62020 - Information technology consultancy activities"

Awesome great marketing work, love it.

</comment><comment><USER6> That's not going to work. Did the beginning single quote get stripped out?

<comment><USER7> There was no beginning single quote in the original filing forming the company:

[https://beta.companieshouse.gov.uk/company/10542519/filing-h...](https://beta.companieshouse.gov.uk/company/10542519/filing- history/MzE2NTQ4NjQyN2FkaXF6a2N4/document?format=pdf&download=0)

But that document appears to be generated using Companies House tools, so it is possible that there was a single quote originally that was stripped out at an earlier stage.

<comment><USER8> Nah - brokenness is intentional. I'm sure Companies House application is secure, but I don't know if all the applications scraping it/using its feeds are, so I couldn't be /too/ real.

</comment></comment></comment><comment><USER9> Was this supposed to kill companies house or scrapers?

<comment><USER10> you could ask the maker, [https://news.ycombinator.com/user?id=pizzeys](https://news.ycombinator.com/user?id=pizzeys)

</comment></comment><comment><USER11> DROP TABLE CONSULTANTS; LTD - is from 2013 [https://beta.companieshouse.gov.uk/company/08768324](https://beta.companieshouse.gov.uk/company/08768324)

</comment><comment><USER12> The author probably tried to break the software of the company registrar and wherever that name gets saved.

I guess it didn't work :) But good try.

</comment><comment><USER13> I would try

aaa'; drop table companies; --

</comment><comment><USER14> [https://xkcd.com/327/](https://xkcd.com/327/)

<comment><USER15> When hippie nerds name their kids, buy a former nuclear missile silo and watch the fuck out because we'll be accidentally thrown back into the days trying to start a fire with an iPhone and wishing for an Samsung Galaxy Note 7 airlines announced were banned at the beginning of every flight.

</comment></comment><comment><USER16> Funny idea. Good luck with the logo design, though... ;-)

</comment><comment><USER17> ha ha, brilliant!

</comment><comment><USER18> Guys.... This is obviously NOT an attempt to SQL inject. This is a full fledged company incorporation. A marketing move if you will.

Although a risky one. If that had worked that guy would end up in court.

<comment><USER8> :)

Not that risky though - it looks more like an SQL injection than it actually is. I actually didn't think it would get this much attention - I went to bed!

<comment><USER19> Watch out for those computer generated marketing letters being sent to the registered address.

</comment></comment></comment><comment><USER20> Reminds me of the xckd comic Bobby drop tables [https://xkcd.com/327/](https://xkcd.com/327/)</comment>


Instagram Founder's Girlfriend Learns How To Code For V-Day, Builds Lovestagram - <AUTHOR> http://techcrunch.com/2012/02/09/awwwwwwwwwwwwwwwwww/ <comment><USER2> Dear Everybody:

The most wonderful thing you can ever give somebody is your time.

No matter who you are, no matter how much money you make, most people have roughly the same amount of _time_. In this sense we're all equal.

So yes, some of us could off and spend enormous amounts of money on each other for gifts...but if I spend a week building something, and Bill Gates spends a week building something, the gift is the same temporal size.

It's like saying "Yes, I could do anything at all with this week of time, but I decided that that week of time would be best spent building something that will make you happy."

There's something that I find profoundly beautiful about that.

This is an absolutely fantastic gift. She should be really proud of herself for learning that quickly, and I'm sure he's over the moon about this as a gift.

</comment><comment><USER3> According to the article, she started in December from basically scratch. She used Zed Shaw's Learn Python the Hard Way and learned enough Python to then figure out Django and deploy to Heroku herself.

More importantly, she learned enough to gain this insight:

 _"Learning to program isn't the hard part. The biggest challenge is figuring out how all the moving parts of a web application fit together. There's no book for that," she said."_

<comment><USER4> As someone who recently started learning to code, I would agree with that statement wholeheartedly. Learning how the pieces fit together is the most difficult part, by far.

<comment><USER5> The skill of learning how pieces fit together in a project you've never touched is one of the most valuable skills in a programmer. Everyone can learn it, it just takes a lot of practice reading code. It also helps if you're strongly familiar the libraries/framework the code was built on as well.

</comment></comment></comment><comment><USER6> Kaitlyn spent the last 2-3 months learning Python just to build this, with no prior programming experience.

What's your excuse, Mr. Non-technical Person? :P

<comment><USER7> More importantly, what's your excuse Mr/Ms Technical Person who can't seem to get your project released.

</comment></comment><comment><USER8> There seems to be this recurring theme in tech media that "gee, wiz! anybody can be 'coder'!". I call bullshit - this article smells like a PR gimmick. While I have no doubt that she picked up the rudiments of programming within this time, I think it's fairly clear that she had "spilled the beans" in order to take this project to the extent that it is available today.

</comment><comment><USER9> I think the biggest part of this is the effort that she put in to have something in common with her partner. I think that it's a good reminder to everyone with a partner/spouse that putting in the effort to get your hands dirty in something they're interested is a great gift.

<comment><USER10> My wife's father is a retired mainframe programmer. As a child, she thought it was sad that her mother couldn't follow (and didn't even try) what it was that he did all day.

Just before we were to be married, my wife had dabbled in both programming and graphic design and was facing the choice of which to specialize in. She chose to go the programmer route as that would give us more common ground.

And yet, I have no interest in learning how to knit. Maybe I should try.

<comment><USER11> Knitting, like programming, runs the gamut from boringly easy to beyond human mental capacity.

<comment><USER12> It's like real life spaghetti code.

</comment></comment></comment></comment><comment><USER13> On one hand, awwwww. On the other hand, this makes me feel terrible. I've been learning to code for about a year, I have a job which involves plenty of coding, I have a PhD, and I'm pretty sure that I couldn't build and deploy a web app right now. Very well done to her!

<comment><USER14> Same. I've been jumping between C, C++ and python for god knows how long, and I still can't make something as awesome as she did. Kudos to her.

</comment></comment><comment><USER15> As someone currently sitting in class being lectured on a strictly theoretical view of computer science, I cannot agree enough that actually working on something tangible and interesting is the best application and way to learn.

In my free time I'm currently developing an app, and whilst the theory is extremely useful for understanding, it only comes into its own when I'm working my way through the everyday problems that projects provide. Kudos to Kaitlyn, more people should dive in at the deep end!

</comment><comment><USER16> This is cool, and a great advertising story for instagram (which is almost more of a present!)

I think my valentine gift will be "why didn't you make the reservation earlier?! Where are my roses???"

<comment><USER17> I think it's an even better advertisement for Learn Python The Hard Way.

</comment></comment><comment><USER18> Wow, we should all be so lucky.

</comment><comment><USER19> The URL slug says it all: awwwwwwwww

</comment><comment><USER20> Man, this is so awesome. So _soooooo_ awesome.

I ranted about abstractions below, but this woman _shipped code._ Dedicated to her boyfriend, no less! I'd be incredibly flattered if I were him, and kudos to her for launching something.

</comment><comment><USER21> Love the URL for the story :)

</comment><comment><USER22> Is this related? there's even a link to how to make a heart.. but I feel like it's too recent: [http://www.reddit.com/r/learnprogramming/comments/phimd/lear...](http://www.reddit.com/r/learnprogramming/comments/phimd/learning_python_as_a_surprise_for_my_programmer/)

</comment><comment><USER23> Am I the only one who doesn't believe this? It's way too strange...

<comment><USER24> No, it is true. People learn to code from absolutely nothing all the time with my books. Depending on their motivation they then go on to make all kinds of stuff.

<comment><USER25> Do you have a collection of links to things people have made? I'd love to see them!

<comment><USER26> They're not public, but I used LPTHW and went on to work on a few Django apps dealing with GIS and criminal intelligence analysis. Aside from the web front end, the projects involved a lot of analytical code, and LPTHW was great for getting me thinking in the Python way _.

_ I'm not a language zealot, Python just had the robust GIS, math, and other libs I needed.

</comment></comment></comment></comment><comment><USER27> this was lovely, until you get the the last part, which just completely ruined the story.

Trigger suggests creating classes specifically for women who want to code as a possible solution to this particular digital divide, the trick is to not be intimidated ,"[Code] is something that nobody should be afraid of. "

<comment><USER28> Why do you see this as a bad thing? It's been discussed on HN hundreds of times that it's hard for women to know where to start, how to jump in and find out if they even enjoy coding. I'm a complete outlier in my field as a woman in technology, as an actual developer I rarely engage with other women on my level. I was recently at a dev conference and there was another woman there - it was really nice to feel that the space was opening up (and to find out she'd been in the industry longer than me made me even happier).

</comment></comment><comment><USER29> This is news ?

<comment><USER30> Seriously.

</comment></comment><comment><USER31> Please don't take this the wrong way, but does this really belong on the front page of Hacker News? This is like celebrity news for nerds. I care about what Angelina got Brad for Valentines as much as I care about this.

<comment><USER32> It's more like one of their kids starting a successful startup, helping people out, and making money while doing it.

Ignore the fact that it's an e-lebrity's significant other; celebrate the fact that someone went from zero to fully functional app with no prior experience in less than three months.</comment></comment>


Losses of soil carbon under global warming might equal U.S. emissions - <AUTHOR> http://news.yale.edu/2016/11/30/losses-soil-carbon-under-global-warming-might-equal-us-emissions <comment><USER2> People have been trying to examine this from several directions, including remote sensing to quantify how much CO2 is being generated as these stocks warm ([http://above.nasa.gov/about.html?#about](http://above.nasa.gov/about.html?#about)). The overview article in _Nature_ that this press release refers to is:

[http://www.nature.com/nature/journal/v540/n7631/full/540047a...](http://www.nature.com/nature/journal/v540/n7631/full/540047a.html)

and the technical article by Crowther et al. is:

[http://www.nature.com/nature/journal/v540/n7631/full/nature2...](http://www.nature.com/nature/journal/v540/n7631/full/nature20150.html)

<comment><USER3> Thanks for the links

</comment></comment><comment><USER4> Obviously the landscape is going to be drastically affected, would the melting permafrost not allow for more tree growth which might squash some of the increase in C02 release (albeit a tiny fraction)?

<comment><USER5> Correct me if I'm wrong, but I think it's a common misconception that trees store a really large amount of carbon, usually it is dwarved by the carbon associated with the soil where the trees grows. Over generations, in particular in a rainforest, enormous amounts of carbon are put into the soil, and burning down the forest doesn't just release the carbon from the trees, but many times that number from the soil. Regrow the trees, and you only recapture a fraction of what is released. I imagine you're going to get a similar effect from permafrost melting.

<comment><USER2> This is correct, even for Arctic regions.

According to [1], net production of carbon in Alaskan Arctic regions is about 0.14 kg / meter-squared, per year. But soil content is about 14 kg / meter- squared. Crudely, that means 100 years of net carbon production would be sequestered in soil carbon.

[1] [http://www.biogeosciences.net/11/4271/2014/](http://www.biogeosciences.net/11/4271/2014/)

<comment><USER5> Thanks for the link, very interesting.

</comment></comment></comment></comment><comment><USER6> I wonder if the losses of soil carbon are not solely caused by global warming. Poor land management via grazing methods, biodiversity loss and desertification, deforestation, and ocean life die offs could all release co2 into the atmosphere independent of fossil fuels. Can we measure these?

</comment><comment><USER7> So... self-sustaining feedback loop? :(

</comment><comment><USER8> Let us be a bit more honest here. Current numbers are near four hundred ppm and not even most exaggerated places them past eight hundred. Commercial greenhouses can hit 1k and even that isn't hazardous exposure levels. Man made levels are dropping but in the end, we are actually very close the lowest levels in our planet's history and may be too low.

Plants prefer higher numbers and being below 500 is actually been shown to be bad for them while double that is beneficial to greenery.

So there are issues with the climate we will face but CO2 levels are probably the least of them

<comment><USER9> I just wanted to point out the downvote button isn't a "disagree" button. One can make the case that arguing over climate science is flamebait, so if you want to downvote on those grounds then go ahead. But people shouldn't be punished for making specious arguments.

Unless someone is deliberately trolling, it's better to engage with them than to negate them by downvoting. Such engagement is what makes hackernews more highbrow and interesting than, say, reddit.

<comment><USER10> Huh? IMO, the parent's comment is a perfect example of something deserving of downvotes: "Why are you arguing something that has absolutely nothing to do with the article, or really even global warming in general, and displays a complete lack of understanding about what the discussion is even about."

In other words, I can't imagine that engaging with someone whose argument is basically "CO2 isn't a problem because plants love CO2" is going to lead to any sort of insightful discussion.

<comment><USER9> I don't think it will lead to particularly insightful discussion either. But my point is that on the assumption the OP is acting in good faith, it's better to try to persuade them than to silence them. You don't convert people by taking away their voice.</comment></comment></comment></comment>


How did Facebook grow so big suddenly? - <AUTHOR>

<comment><USER2> ' _... How did Facebook grow so big suddenly? ...'_

It didn't. It's been bubbling along for a long time ( _Facebook launched in February of 2004_ ~ <http://www.facebook.com/press.php> ) Facebook is also doing a lot of things right, namely _Connect, Connnect, Connect_. The mantra of the new, post multi-tasking adoption of the always connected. For example:

\- choosing a demographic (gen z) that values communication as an opportunity

\- attaching themselves to organisations that are already wired and communicating (schools & universities)

\- choice of technology (open) ~ <http://developers.facebook.com/opensource.php>

\- continuous innovation ~ <http://blog.facebook.com/blog.php?post=2207522130>

\- enabling ~ <http://www.cit.cornell.edu/policy/memos/facebook.html>

\- and finally, making something that people want and the _best tool_ to do this at the same time!

Of course the story on Facebook is still being written. Zuckerberg is really taking the long term view for Fb with a $USD12M dollar funding (and the service shows this money well spent with lots of details covered, api, reliability, etc ~ <http://tinyurl.com/2ug3p8> ) When the market cools and users wane (a'la _Friendster_ ) will the reported $USD1B offered by Yahoo! and rejected, be seen in hindsight as a good idea?

</comment><comment><USER3> What Facebook did was smart. They initially marketed it to the 'older' and 'more mature' group, meaning those who just entered college and older. They made us feel as if Facebook was a way of establishing ourselves in a new and more sophisticated community, a 'community where we weren't pestered by annoying high schoolers like on Myspace.'

Then when the time was right, they opened it to all.

</comment><comment><USER4> Facebook is inherently viral. They are clever about this and don't get in people's way. Also they make it really easy to find friends through other friends, which I don't think the other companies does.

<comment><AUTHOR> hi5 is inherently viral too. heck, i receive lots of invites through this

</comment></comment><comment><USER5> i guess the key is a combination of various factors,one probably is the no- nonsense design and features, it really is what they claim as social utility,next gud move was opening up to genral public..and then the media attention they've been receiving..

</comment><comment><AUTHOR> I remember at one point of time they were smaller than bebo, hi5 etc. Suddenly, they obliterate these people</comment>


Show HN: Titanoboa lets you prototype Java in browser, shows results as you type - <AUTHOR> https://titanoboa.io/blog-java-support-repl.html <comment><AUTHOR> This a major functionality addition so I hope it qualifies for Show HN :)</comment>


Facebook's 1st-Quarter Profit Falls 12% - <AUTHOR> http://dealbook.nytimes.com/2012/04/23/facebooks-1st-quarter-profit-falls-12/?nl=business&emc=edit_dlbkpm_20120423

<comment><USER2> Assuming earnings of $205M per quarter and a valuation of $100B, that would put Facebook's P/E ratio at 122. Today, Apple is at 16.3, Google at 18.1, Netflix at 24.4, and Microsoft at 11.7. Now, it's completely possible that Facebook's _earnings_ growth will outstrip those more established companies. However, it does show that one has to think Facebook will grow its earnings at a considerably faster rate than those companies to be a good value at a $100B valuation.

Myself, I don't see Facebook necessarily going the way of AOL and MySpace. Facebook's engineering chops are a lot better. Sure, there's an amount of social lock-in that they shared with AOL and MySpace, but that isn't the only thing keeping Facebook on top right now. Facebook has made sure that their site runs well - a minimum of errors, predictable and decently speedy response, and a willingness to address technological challenges that keep the site humming. While we might lambaste Facebook a bit from a social perspective, they've open sourced some genuinely good tools and seem to be sticking to their technological guns. Unlike MySpace, AOL, and Yahoo, Facebook isn't morphing into a company where "media" types run the show. While the social aspect is very important for Facebook, I think there's a more engineering-centric or engineering-friendly culture that will persist there like it has at Google. I don't see the higher-ups at Facebook thinking "oh, I get the cool stuff the kids today are hip to and I just need some peon programmer to translate my awesomeness into computer speak. All programmers are interchangeable cogs, right?" I think that does speak to Facebook's longevity. In technology, you need to be able to improve your product, not just keep the lights on.

However, Facebook relies on non-technological factors more than Google or Apple. Facebook needs to remain the place people sign up when they join a social network. It isn't too hard to imagine Facebook becoming the place known as the hangout for people's parents. As someone in my twenties, I'll probably have teenagers in 15-25 years (a decent number of my friends will in 15 years). Will they want to be on the social network that I'm on - the social network of my generation? It's already weird to me when old people sign up for Facebook. I don't want to "friend" my actual friends' parents. Frankly, I'm a (slightly) different person when I'm talking to my friends and when I'm talking to my friends' parents. Likewise, Facebook is treading a thin line on sharing. In the early days, Facebook was very closed and putting something on Facebook felt more private. Facebook has been slowly changing that to the point that I wonder whether I should just edit myself a bit more and publish publicly rather than on FB in a more formal way (ie. a blog). Finally, people could just get tired of it. I'm finding less interesting things in my newsfeed as time goes on. I find that I don't feel like posting as much.

For me, Facebook's valuation at $100B seems high given its earnings. It's PE ratio is above 100 and so one has to assume much more growth than other very good companies. It might happen. However, I think Facebook faces a decent amount of uncertainty in its future. It's well-engineered and well-run compared to those who have failed that we might point to as Facebook's future, but with a social product there's more than just having good service and any number of things could hurt Facebook from privacy concerns to becoming the network of the people who went to college from 2000-2015 while younger folk find a different place to digitally hang out. I wouldn't compare them to AOL, Yahoo, or MySpace, but I'd still say Facebook's valuation is quite high.

<comment><USER3> Facebook's valuation is based on _potential_ , as opposed to any real metrics. It has a staggering number of active users and frightening amounts of data about them. The bet is that they find a way to capitalize on it.

I'm not bullish on facebook by any stretch of the imagination, and their P/E is ridiculous, but it's also the wrong metric to be looking at when deciding whether it's a good investment.

<comment><USER4> > It has a staggering number of active users and frightening amounts of data > about them

The financial value of those users must grow super-linearly. The most recent figures I can find put them at having 901 million active users, which means they're valued at $111 per active user. Crazy stuff.

<comment><USER5> If they can sell a $3 CPM, and each user loads 40,000 impressions lifetime, then they've monetized each user at $120 over that time period. That's a lot of impressions per user, but people click a lot on facebook. Plenty of room for them to grow.

<comment><USER6> That's a ridiculously high CPM for social media. The page views are very low value, even with all the targeting. Considering their revenue now and their traffic figures (over 1 trillion page views a month), their average is currently very low. $1B / 3T page views = $.33 RPM. They get a decent chunk of revenue through things other than advertising (namely their payments system) and that's a low-ball on the traffic, their traffic is very low value. Further growth is likely to come from international markets that are also very tough to monetize. To get that RPM up 10-20x would be astonishing.

<comment><USER3> I still don't see their endgame being traditional display advertising. It just can't provide the kind of cash they need. I think we'll see the engineers at facebook find ways to directly exploit the value of their network, but I only have vague notions of how they might do that.

</comment></comment></comment></comment></comment></comment><comment><USER7> I am predicting that eventually Facebook is going to go the way of MySpace and AOL, but I don't think that this quarter is indicative of the trend. Both the number of daily and monthly active users jumped by more than 100 million, and Facebook also increased their marketing and S&D expenditures by more than 100 million.

If someone were to suggest that Facebook will eventually fall, the raw data from this quarter will not provide a sufficient argument. My argument would come from the idea that Facebook is currently acting like a very greedy company, with aggressive publishing of advertisements and aggressive policies that may eventually scare away the user base.

Especially with the internet becoming increasingly aware of the lack of privacy vs. the usefulness of privacy, it would be easy for Facebook to end up on the list of "bad guys" if they don't tread carefully. My prediction is that they will eventually overstep their bounds in greed, but it's too early to be comfortable with that prediction.

<comment><USER8> I completely agree. Facebook is providing a platform in a market that has always been extremely volatile, and are using their position to make questionable decisions. It will back-fire eventually.

Personally, I can't honestly see facebook being nearly as central in 5 years time, if it exists at all. Some hot new thing _will_ come along and do sharing better and everyone will jump all at once.

</comment></comment><comment><USER9> Its profit, its going to be volatile. Honestly some folks will want to say the sky is falling but a lot of folks will point out that any profit at all for a company growing like Facebook is a waste of perfectly good cash.

<comment><USER10> Please explain why it is bad for a growing company to turn a profit?

<comment><USER11> I assume one could say the spare money could be spent on growing the company, making more money in the longer run.

(disclaimer: I have no idea what I'm talking about)

<comment><USER12> Right.

Good corporate governance points toward the maximization of long-term shareholder value, as measured by the present value of payments to shareholders (dividends, buybacks, etc.) <http://en.wikipedia.org/wiki/Net_present_value>

Silicon Valley has a somewhat bizarre culture of viewing dividend payments as "defeat", as in, "We can't find anything better to do with the cash because we aren't innovative, so we're giving it back to our investors". This is where the (strange) logic of profit=evil comes from in these conversations.

</comment></comment></comment></comment><comment><USER13> That's compared to the previous quarter, not the same time last year. Web usage is cyclical.

<comment><USER14> No - net income in the 3 months ending Mar 2012 declined to $205m from $233m in the 3 months ending Mar 2011. A big surprise, probably some big investment in datacenters or something. Net income can be rather bumpy, revenue growth was more solid at 45% year-over-year, but even that can't justify the massive valuation. The valuation is really a bet that FB future monetization will be amazing.

</comment></comment><comment><USER15> As much as I like to see people talking about profit rather than revenue, revenue is really important as long as you are profitable. It is only when you are losing large amounts of money every month that revenue is less impressive.

Facebook had over 1 billion dollars revenue in the quarter and they were profitable. Why is it so bad that they decided to spend most of that revenue to grow the business further rather than keep it as profit.

If revenue is decreasing, thats another story, but profit being down for one quarter is a result of how much they are reinvesting their money.

</comment><comment><USER16> They still had 1 bill in revenue not so shabby. Without Facebook half the internet would appear not to function correctly be it SSO or analytics. Guess they are here forever and ever and ever

<comment><USER17> Don't fall into that trap: it's dangerous. Twelve years ago AOL was doing just as well ($1-2 billion each quarter, $300-400 million in earnings), and was the largest portal/ISP around. Blackberry and Nokia were kings of the mobile mountain five years ago.

You are only as good as your current product: Facebook's commodity is people, and people are not as loyal as you might think.

Facebook could very well be around a long time, but 'forever and ever and ever'? Smart people have lost a lot of money thinking like that. I certainly wouldn't gamble on it.

<comment><USER18> Facebook also owns your social graph and that is what they exclaim proudly about the most as well. If any other service wants access to it they have to ask Facebook and they can't just take it. And if there is no Facebook integration, then theres an additional level of friction in getting new users. It's definitely a tough market to breakthrough in because of Facebook (Ask google).

<comment><USER19> > Facebook also owns your social graph

Any email provider also has your social graph. The only problem with email is that it is seen as "old" compared to the "new" of Facebook and Twitter. Something else will come along and be the new "new" and that will be the end of Facebook.

<comment><USER20> > Any email provider also has your social graph.

They really don't. Not the way Facebook does; not for the post-Millennials. People email bosses and professors and acquaintances; they use Facebook for friends.

</comment></comment></comment></comment></comment><comment><USER21> Halloween should be a good time to think about buying into Facebook.</comment>


Java Generics Are Turing Complete - <AUTHOR> http://arxiv.org/abs/1605.05274 <comment><USER3> In practice in means if you write stuff like this:

       interface Z {}
       interface N<x> {}
       interface L<x> {}
       interface Qlr<x> {}
       interface Qrl<x> {}
       interface E<x> extends
         Qlr<N<?super Qr<?super E<?super E<?super x>>>>>,
         Qrl<N<?super Ql<?super E<?super E<?super x>>>>> {}
       interface Ql<x> extends
         L<N<?super Ql<?super L<?super N<?super x>>>>>,
         E<Qlr<?super N<?super x>>> {}
       interface Qr<x> extends
         L<N<?super Qr<?super L<?super N<?super x>>>>>,
         E<Qrl<?super N<?super x>>> {}
       class Main {
           L<?super N<?super
           L<?super N<?super
           L<?super N<?super
           E<?super E<?super Z>>>>>>>>
         doit(
           Qr<? super E<? super E<? super Z>>> v
       ){
       return v;
       } }

You can make your compiler:

1\. Bark out an odd error. (Loop for a while and then stop due to an internal stack overflow.)

2\. Compile something that gives a runtime type error.

</comment><comment><USER4> DING! This is what always happens. If you want to get useful manipulations done to code you'll eventually creep up to a Turing complete system. Now you have a type system where you could calculate any program transformation, albeit in really really convoluted, slow and ugly way.

It would have been SO much better to give the language proper macros to begin with. I mean, a library that's actually meant for doing AST manipulations, and a way to tell the compiler "apply this transformation to that code before doing anything else with it", instead of another compiler-only interpreted language inside the original language. People would not have to learn 2 different syntaxes, and compilation would probably be faster (well I'm thinking more of heavily templating dependant C++ libraries here).

<comment><USER5> Yo dawg, do you need a programming language inside your programming language?

<comment><USER6> Yes. Otherwise you'll end up with an ugly Python or Perl script that generates code, coupled with ugly build system hacks to make it work. This will happen sooner or later.

<comment><USER7> The Java culture fetishizes code generation. It's like somebody decreed "We want to take over the world, and one measure of that is lines of code. So there should be a hell of a lot more Java code: start writing Java code that generates more Java code!"

<comment><USER8> Go culture, too, for that matter.

</comment></comment></comment></comment></comment><comment><USER9> An GWT engineer and former Scala guy, Lex Spoon, proved a similar theorem several years ago when we were upgrading generics for GWT-RPC. The GWT RPC code generator has to reason about return types of methods and which classes could possibly be deserialized say if you return a List of Foo.

Lex showed how to construct the peano arithmetic in Java generics and how to formulate problems such that solving the question of what types could be returned from An Rpc call with List would amount to deciding these small theorems or problems and therefore the GWT SerializationTypeOracleBuilder class would have to solve the halting theorem.

That's probably a wrong paraphrasing and maybe lex will see this and chime in but I think the original discussion was lost forever ironically when Wave, which was built with GWT, was shut down.

</comment><comment><USER10> btw, here is the URL for a Java-Generics-Program from the paper: [https://gist.github.com/rgrig/b4cdaed3ed9a70dbdb6f158f14b572...](https://gist.github.com/rgrig/b4cdaed3ed9a70dbdb6f158f14b57263)

comment from the source:

      // Encodes a Turing machine that counts in binary, and then halts.
      // Gives stack overflow by default.
      // If you increase the stack size (javac -J-Xss100M Main.java),
      // then it type-checks, but it takes a lot of time.

</comment><comment><USER11> Now the waiting is for the first compiler that compiles to Java Generics.

</comment><comment><USER12> So is XSLT: [http://www.unidex.com/turing/utm.htm](http://www.unidex.com/turing/utm.htm)

</comment><comment><USER13> What does this mean in practice? That I can compute an arbitrary algorithm with Java generics? How?

<comment><USER14> What it means in practice is that any Java typechecker is either (a) incomplete - it will disallow some programs that should typecheck; (b) unsound - it will allow some programs that shouldn't typecheck; or (c) non-total - <USER2> will fail to terminate on some programs. (Or some combination of these three.)

<comment><USER15> No, that's in theory. In practice not much: any practical sufficiently complex type system quickly gets extended to become Turing complete; from time to time the compiler might get yell at you when you hit the maximum allowed type recursion limit, but usually everything just work.

I believe that type checking in unextended Hindley-Milner type systems is exponential, so, even if the algo is guaranteed to terminate in theory it might not do so before the heat death of the universe. Again, in practice outside of test cases demonstrating this 'feature' it doesn't matter.

<comment><USER16> "the compiler might get yell at you when you hit the maximum allowed type recursion limit" is an example of the compiler failing to compile something which is valid in the type system.

<comment><USER15> Sure, the point is that it happens rarely with real world code and you can always bump the compiler limit.

<comment><USER16> Right, but that's precisely how Turing completeness works. It's possible to write a program that can figure out whether most real world code terminates. All Turing completeness tells you is that no matter how clever that program gets, there will be some programs (not necessarily 'real world programs') which it won't be able to process. The fact that the Java programming language is Turing complete doesn't prevent us being able to write programs in it (indeed it means we _can_ write interesting programs in it!). It is just a result that tells us there are some things we can't say about ALL Java programs.

This is a similar result. The fact that the Java type system is turing complete doesn't stop us expressing things with it. It just tells us there are some things we can't say about ALL Java type declarations.

</comment></comment></comment></comment></comment></comment><comment><USER17> Is there a link to the paper?

Preferably one that you don't have to be at a university to read?

<comment><USER18> [http://arxiv.org/pdf/1605.05274v1.pdf](http://arxiv.org/pdf/1605.05274v1.pdf) in the upper right corner of the page

</comment></comment><comment><USER19> The title sounds like a bad news to my ears.

<comment><USER20> Eh, turing complete is a really low bar to clear. In practice it just means the compiler can't be proved to halt on valid code.

Avoiding turing completeness requires either very very careful design OR (trivially) a hard limit on size/iterations the compiler is allowed to make (a sufficiently small limit, obviously we call many things turing complete colloquially that have very low limits anyway like 8-bit cpus with ~kb of memory)

<comment><USER21> Turing complete is by now means a 'low bar'.. Turing complete means that a language, system can compute anything. Anything that can be computed, can be computed with java generics. Thats what it says. Its quite a important term.

<comment><USER20> Basically all you need for turing completeness is the ability to jump/branch/ignore-some-bits on some criteria see SUBLEQ or cyclical tag systems or XY combinators.

it's actually very hard to avoid in a system that is supposed to do some sort of computation.

</comment></comment></comment></comment><comment><USER22> Too bad they are still pretty much useless in many cases because of type erasure, and many type constraints cannot be expressed (eg. constructor constraints)...

Still way better than no generics at all, but if you are used to better implementations these random limitations can be really painful..

<comment><USER23> Don't know why this is being downvoted. I've been on a Java project for the last ~6 months after ~8 years of doing C#/.NET development. My brain hurts from seeing all the stupid workarounds in Java because it doesn't have real generics.

<comment><USER24> I guess it's one thing to claim Java generics have problems and another to claim they are "useless".

They are a big improvement over not having generics and, in my experience, one seldom sees those workarounds you mentioned. Sure, when they are necessary they are ugly... but how often _are_ they needed in standard application code?

<comment><USER22> Last week wanted to use GSON in a generic method to deserialize to a type which is generic type parameter, in a method of the abstract base class. Unfortunately it could not be done without the implementations passing up their .class via super constructor.

IMHO deserializing JSON is quite a common application code.

If you are really interrested I'd create example code, but (as being lazy, and the mentioned code not being my property) I'd hope to take my word for granted :)

edit: I wrote useless in many cases!

<comment><USER25> There are ways to resolve generics declared on base classes:

[https://github.com/jhalterman/typetools](https://github.com/jhalterman/typetools)

...but proper support of reified generics certainly would have been better.

</comment></comment></comment></comment></comment><comment><USER26> whine whine whine. go make a language of your own then, that way it's going to be perfect and have no flaws. oh wait, you wouldn't even know where to start.

<comment><USER27> You don't need to be a good chef to know a meal is awful. A lot of people use the language (me included) and make it work, doesn't mean it's without fault.</comment></comment>


The truth about Scala - <AUTHOR> http://www.cakesolutions.net/teamblogs/2012/03/01/truth-about-scala/ <comment><USER2> Scala has been on my mind this week, so it was interesting to see this article pop up. I've started to dive into an existing code-base, and I honestly just can't grok what Scala is trying to be.

I think my biggest issue is that the language is so syntactically flexible (verbose?) that I simply have no idea what is a language construct and what isn't.

For instance the code is littered with stuff that looks like:

val something = some_obj open_!;

Is open_! just a method (literally some_obj.open_!) or is "_!" some sort of language construct, because underscores are special sometimes, like with unary_ for instance (or not.. it really just depends).

At first glance the 'almost any method can behave like an operator' stuff is really cool, although as I learned about alarm bells where ringing all over the place. In the hands of even an actually competent programmer it's going to be abused well beyond the utility you get out of it.

It took 30 seconds of looking at existing code to find obvious examples of it. Why is it so evil to clearly denote a method as being an actual method?

Then there is the whole "is this functional or not" madness. It reminds of PERL in that respect. You can accomplish the same tasks in a bunch of different ways.

I guess I'm not terribly impressed. It actually makes me long for the simplicity of C. If you want static typing Scala (and readability adverse type inference system) seems like a really bad choice. At least at the point I'm at about a week into this stuff.

At the end of the day give me the beauty of C, the explicitness of Python, or a much more complete functional language like Clojure. I don't want a hybrid of all of those that seems to create a whole new set of weaknesses and big- time issues. It really seems like the language designer merely looked at Java and tried to create an interoperable language that was as "un-java-like" as possible.

<comment><USER3> I think I've figured Scala out. It's a statically typed JVM language meant to be more powerful and at the same time easier to use than Java. It's a functional language. Though, it's also imperative. And object-oriented. It favors immutability, except that mutability is just as easy (or hard). It has adopted the actor model. But it has also adopted all of Java's concurrency constructs. It was designed as a very practical language. And it's also a research language with some experimental features. Oh, I almost forgot: it is meant to be a high-performance language. But it's also designed to build DSLs. It's a very opinionated language in the sense that it's opinion is that all opinions are valid.

So I must say that any difficulty you may have understanding what Scala is trying to be is due to no fault of Scala itself. It's very simple, really (well, to be precise, there are different tiers of simplicity in Scala, but I can assure you that each tier is quite simple once you've mastered all the design decisions, and category theory, that fully, consistently and self- sufficiently define the simplicity of the respective tier).

<comment><USER4> I explain why I think Scala will be giant to people by saying it is Java's C++. It's as painful or nice as you want it, one company's use looks nothing like another's and it is building on years of pain points to solve problems in a different way while still using the current ecosystem(s).

<comment><USER5> _Java's C++_

I would sell it that way to non-technical executives but not to anyone else.

I worked with someone who's a personal friend of Odersky and he's confident that Scala _won't_ turn into C++. He described him as "way more scrupulous than Stroustrup".

<comment><USER6> It is too late for that.

<comment><USER7> I have this sneaking suspicion that Scala has blown past C++ and is taking aim on Perl.

</comment></comment></comment></comment></comment></comment><comment><USER8> this mirrors my experience with scala, except we had about 100+ maven dependencies and build times were closer to 10 minutes.

<comment><USER4> This has been the opposite from my experience with Scala. Rather than build a single system with a large codebase, it allows us to build small, compartmentalized systems and compose them together. Then again, we don't use maven, instead using ant for building and git submodules to handle dependencies.

</comment></comment><comment><USER9> Reading through these comments I would like to point out this is an Aprils fools day post. Its funny because if you didn't read to the end you might very well believe it.

<comment><USER10> > Reading through these comments I would like to point out this is an Aprils > fools day post. Its funny because if you didn't read to the end you might > very well believe it.

You know that Scala has gone off the deep end when somebody makes a parody post of how complex it is and several people comment and say "Yup, that totally matches my experience with Scala".

</comment></comment><comment><USER11> 90 seconds is a build time issue? Kids these days don't know how good they have it. It used to be time to go and grab a smoke to just _login_ to a box with X-Windows. If our project always compiled in less than 300 seconds, we were _golden_!

And yes, sounds like I'm imitating a hackneyed SNL skit, but everything here is factual. I am indeed getting that old.

</comment><comment><USER12> On a serious note, is anything true from the post - if so, what parts? I find the post funny but, I've started to learn Scala (I think it has some pretty awesome features!) but if some of it is true, I might cancel my Scala-learning mission.. :p

<comment><USER13> Scala is awesome–you should definitely learn it.

Scala does provide you with enough rope to hang yourself with. What's the solution to this? A. Don't hang yourself. New Scala shops should definitely abide by the style guide that is provided at scala-lang.org to help with this.

Also, use implicits and multiple inheritance very judiciously. One thing that is quite true from the OP, is that the "cake pattern" is indeed "the bakery of doom". If you have to use dependency injection, use something sane, like Guice. Or just ol' constructor injection.

My only big gripe with Scala is that OO syntax is a blight on the world. They should have provided multi-methods instead, so everything could be done with functional syntax.

<comment><USER14> > _My only big gripe with Scala is that OO syntax is a blight on the world. > They should have provided multi-methods instead, so everything could be done > with functional syntax._

I actually disagree. Functional syntax means that you need to start using qualified names or polluting your namespace (think of module/import usage in Python, _but without OOP dot-notation_ ). I like being able to say:

        val herp: Option[Derp] = hurr()
        herp.getOrElse(Darpity)

Leaving aside the awful metasyntactic variables, the `getOrElse` method could exist on any number of classes (stuff like `map` sure does!), but I never have to use a qualified name to get the right one. I use dot-notation on the object itself to qualify the method name.

<comment><USER15> Do you find that's a problem with CLOS or Clojure multimethods? Because I never noticed much of what you seem to be talking about.

<comment><USER14> As I said above, think about a method like map.

        map :: [a] -> (a -> b) -> [b]

Well, actually, _any_ functor has a map method, by definition! So we'd have to write a type-class:

        class Functor f where
          fmap :: f a -> (a -> b) -> f b

Now how would we represent this as a generic function?

        method fmap<a,b>(as: Functor<a>,f: a -> b): Functor<b>

And then implement specialized methods for each actual functor?

        override fmap<a,b>(as: List<a>,f: a -> b): List<b>

Now everything involving functors performs a dynamic dispatch and might lose type information at its call-site, _and_ we now have to deal with Functor<a> being some kind of superclass, a superclass without data slots of its own just to accommodate our need for this "interface".

In Scala, rather than doing that, we would just define Functor[A] as a trait:

        trait Functor[A] self => {
          def map[B](f: A => B): self[A]
        }

And now every time I call the map method on a Scala object, it statically dispatches via dot-notation. So my compiler knows that calling map on a List[A] gives me back a List[B], _and_ that calling map on an Option[A] gives me back an Option[B], _and_ I didn't need any implicits to get it done.

<comment><USER13> I do not see why your worries cannot be addressed. In fact, IIRC (it's been a while), the programming language Cecil does just that.

[http://www.cs.washington.edu/research/projects/cecil/www/cec...](http://www.cs.washington.edu/research/projects/cecil/www/cecil.html)

<comment><USER14> Well, let me take a deeper look at the material. I've based most of my own language work on multimethod systems like those of Cecil, but there's a few things I immediately see on the page:

* Cecil divides its type system from its object-inheritance-overriding system. Huh?

* Cecil is dynamically typed with static sprinkles on top. So we have dynamic vtables, and also F-bounded polymorphism.

* Methods are referred to as being attached to objects, even though they are multimethods. This appears to imply _asymmetric_ multimethods. Again, _huh_? What a strange design decision to make!

* Cecil offers nothing for dealing with ad-hoc polymorphism (ie: operator overloading). Admittedly, when Cecil was published, type-classes didn't even exist yet.

<comment><USER13> _Methods are referred to as being attached to objects, even though they are multimethods. This appears to imply asymmetric multimethods. Again, huh? What a strange design decision to make!_

Method dispatching is done _symmetrically_ on the arguments in Cecil.

<comment><USER14> OK, I've read their doc now. And what I can say is, they don't solve the problem I've mentioned at all. Their dot-notation is _just_ syntactic sugar for an "ordinary" multimethod call. It does nothing for module selection.

This means you've got to either use qualified module names, make sure never to import two modules that export an identically-named method, or (if the methods have similar signatures) resort to a type-class.

<comment><USER13> So??? This is how things work in Clojure. And that's just fine.

I guess I just don't understand where you are coming from. It's been pointed out to you that Clojure hackers don't mind importing the generic functions. You replied that then your worry is that it would be hard to preserve type information in a statically typed language that works like Clojure. I mentioned that Cecil is statically typed and preserves type information, with a multi-method system that is somewhat similar to Clojure's. At least as I understand it.

If your entire worry is that you have to import every generic function you want to use, then I guess you and I just don't worry about the same things at all. To me, importing the functions that you use is a _feature_ , not a bug! In fact, when I program in Python, I generally program a lot more with functions than with classes, and yes, in every module I explicitly import every single externally defined function that that module needs. Again, I consider this a feature, not a bug.

What I _would_ object to is having to explicitly import all the method _definitions_ that implement the generic functions used in a multi-method system. That would be insanity, but that's a moot point, as that is never required, as far as I am aware.

Also, common generic functions, however, such as map(), could clearly be automatically imported by the language. E.g., in Predef in Scala, or in built- ins in Python. In fact, in Python, map() is in built-ins, and you don't have to import it. Though, in Python's case, map() doesn't preserve the original container type

<comment><USER14> I'm not talking about importing the generic functions themselves at all. I'm talking about importing the modules that export those generic functions, so that I'll have the modules in my namespace to be able to name the generic functions.

Again: dot-notation lets me write:

        import scala.collection.immutable.List

        def addn(n: Int) = (list: List[Int]) => list.map(_ + n)

Instead of:

        import scala.collection.immutable.List

        def addn(n: Int) = (list: List[Int]) => List.map(list,_ + n)

See the difference? And then, remember that map() is not a multimethod. It doesn't actually do dynamic dispatch on its first argument, or on any other argument. It's a type-class method; it does _static_ dispatch on the functor type List[].

 _You cannot define map() as a generic function_ , at least not in the sense that Common Lisp and Clojure use the term "generic function".

It can be conveniently expressed as a type-class method of a class 'Functor f :: * -> * ' or a trait method for a Functor[A]. _Not_ a generic function.

<comment><USER13> > _I'm not talking about importing the generic functions themselves at all.

> I'm talking about importing the modules that export those generic functions,

> so that I'll have the modules in my namespace to be able to name

> the generic functions._

I don't see how this is either here or there. I can import modules and then qualify functions within the modules, or I can import functions directly from the modules, renaming then if I want to. There's no difference, between these options, other than a minor difference in what name I use to refer to the function once its been imported.

> Again: dot-notation lets me write:

> import scala.collection.immutable.List

> def addn(n: Int) = (list: List[Int]) => list.map(_ + n)

> Instead of:

> import scala.collection.immutable.List

> def addn(n: Int) = (list: List[Int]) => List.map(list,_ + n)

It isn't dot notation that lets you do that; it's the semantics of how functions are located that lets you do that. Many languages support statically overloaded functions using functional notation. It's also quite easy to imagine a language which uses the syntax f(a) to mean what a.f() means in Scala.

Also, why is this to be considered so desirable? For the performance gain that comes from eliminating dynamic dispatch? In that case, it is certainly possible for a language that supports multiple dispatch to dispatch statically when it can infer that it is safe to do.

> See the difference?

Yes, I quite understand the concept, but it has nothing intrinsically to do with dot notation.

> And then, remember that map() is not a multimethod.

> It doesn't actually do dynamic dispatch on its first argument,

> or on any other argument. It's a type-class method; it does static dispatch

> on the functor type List[].

In Scala? I don't believe that this is correct. As far as I understand, there's a single implementation of map for the entire collection library in TraversableLike, which uses virtual functions provided by the concrete class (and a builder object which gets passed in implicitly) to construct the new container, loop over the old container, and add elements to the new container.

This is similar to how map() works in Python and Clojure, where there is a single implementation of map() which uses dynamic dispatch to loop over the elements of the container. The downside to the way that Python and Clojure doing things is that you get iterators or streams back, not the original container type. But they could return the original container type if containers in Python and Clojure were to have virtual constructors. Then map() could call these virtual constructors to return a container of the same type.

> You cannot define map() as a generic function, at least not in the sense > that

> Common Lisp and Clojure use the term "generic function".

Clearly in a statically typed language, you also need some form of parametric polymorphism in addition to what Common Lisp and Clojure provide in order to preserve types. I see no reason why this should be insurmountable.

I've often done things in C++ that wrapped dynamic lookup in a generic function or class, to achieve the types of things that you say require type classes. Another thing you can easily do in C++ is to write template adapter classes to provide something similar to Scala's structural types.

Also, type classes surely don't require dot notation. Haskell is from where type classes originate, and Haskell doesn't have dot notation.

<comment><USER14> _Also, why is this to be considered so desirable?_

To avoid namespace pollution.

<comment><USER13> I just want to reiterate how completely a non-issue this is. It is so much of a non-issue, that it took me this long to even get the slightest inkling of what your worry is.

The reason that it is a non-issue is how often do you need to import two external functions with the same name that have different meaning into the same file at the same time? It _does_ happen, but not so much that it is an issue.

With Python, for instance, there is sys.path and os.path. So what? I refer to one as sys.path and the other as os.path. BFD. And there's the join method on strings and os.path.join. Since one's a method and the other's a function in Python, you're right that if methods were called like functions in Python, there'd be a potential namespace conflict, but I'd just continue to refer to one as join and the other as path.join. I do that now anyway, so _nothing_ would change!

Or let's take the example of draw. If we're only talking about drawing to the screen, then all of the draw methods can implement a common generic function. There's no problem. On the other hand, if I need to use both the "draw on the screen" draw and the "draw your gun" draw, then I'd import one as drawOnScreen and the other as drawYourGun.

If overloading in supported, then there's no need even to do renaming. You can just use draw all the time and the type system will know which draw is applicable for the type in question.

Once again, no problem.

In summary, your worry is just not a problem!

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Tying a new language to the JVM _is_ basically like helping a drowning man by throwing him an anchor. Scala the language is decent, but the JVM-induced clusterfuck of complex stdlib/IDE reliance/maven makes for a non-starter.

<comment><USER10> > Scala the language is decent, but the JVM-induced clusterfuck of complex > stdlib/IDE reliance/maven makes for a non-starter.

I see things the other way around: the JVM is a very impressive piece of technology that has been aging impressively well for more than fifteen years while Scala is a C++-like monstrosity that will probably be all but forgotten in a few years.

Personally, I'm more interested in the new crop of JVM languages such as Kotlin.

</comment></comment><comment><USER17> Some could be taking this article a bit too serious. I self taught myself to code 6 months ago and like enjo stated it seems very littered and perhaps too flexible.

</comment><comment><USER18> Why does a scala centric company publishes such a poor flame bait article against scala? I think this is just a joke and not to be taking seriously in any way

<comment><USER19> well it does say "happy april fools day the end" :)

<comment><USER20> Yeah, but... it's not funny. It seems like some of it might be true.

<comment><USER18> that's my point is not funny at all and as serious criticism is pointless and destructive

<comment><USER21> You're not allowed to point out deficiencies in something you like and advocate? That's a fairly dense position..

The nice thing about Open Source is that it tends to be a little bit more immune to that corporate drum beat since there are less full time salesmen and marketeers. The void seems to fill with fanbois though.

<comment><USER18> I would have loved to see what these guys have to say about Scala critically, but that's not what they are doing, this is a half baked unfunny joke that does not inspire any debate, only flaming and bashing. Is good that you talk about fanboyism because that's what this article is about, clojure fanboyism to be precise

<comment><USER22> The article is funny BECAUSE it's true.

I love Scala and have been using it for a couple of years but I've been through nearly all the stages described in the article. Eventually I got so frustrated I gave up and learned Clojure !!</comment></comment></comment></comment></comment></comment></comment>


Book Review: Albion's Seed - <AUTHOR> http://slatestarcodex.com/2016/04/27/book-review-albions-seed/ <comment><USER2> Interesting book, but one that got a bit formulaic in the later pages.</comment>


YC/HN: Name a problem, any problem, you'd like to see someone solve. - <AUTHOR>

About six months ago, I put up an HN post asking everyone about a problem they want to see solved.  It sparked a lot of discussion and a lot of great ideas.  So here's edition #2.
Name any problem: technology, politics, cooking, world peace - whatever bugs you or pops into your mind.
Original: http://news.ycombinator.com/item?id=442571 <comment><USER2> Here are a few political problems. I want:

* Journalists to be able to make a living doing the hard work of journalism.

* Formal education to be conducted in a way that facilitates learning rather than bureaucratic hoop-jumping.

* Manual laborers to be able to earn a comfortable living.

* More American cities to be beautiful and walkable.

</comment><comment><USER3> I'd like to be able to enter a URL and see every place on the internet that people have talked about it.

<comment><USER4> Does showing a large subest of the pages that point to it, default ordered by something that's roughly equivalent to pagerank, with the ability to then search within those results capture the essence of what you're getting at?

<comment><USER3> No, not really. What I'd really like is to input the URL and get a search result listing that includes number of posts and date of last post at least.

</comment></comment></comment><comment><USER5> I want to be able to travel across europe (or the world if you are really bored) with my laptop and mobile phone and be able to stay online. I dont want to have a different data tariff for every country and I always want the fastest internet I can get - i.e. I don't want to have a different contract for WiMax, Wifi, 2G, 2.5G, 3G, 4G,... - I want to use the one which is available.

I think that would be the only product that could be really called Mobile Internet.

</comment><comment><USER2> Some technological problems. I want:

* Sysadmin work out of my way, or at least reasonably simple, and real information available when I run into a problem.

* Ad-heavy, information-poor web sites to stop showing up so high in SERPs.

</comment><comment><USER6> I want a programming language which is as effortless as thought.

<comment><USER7> Huh? Programming is easy. Thought is hard.

<comment><USER6> I guess what I was trying to say was unclear. Or maybe I am the only one who has this problem. I find that programming languages get in the way of thinking. There is all this extra work involved in typing up the program and making it real. Even a minimalist language like Python seems too much (for example, it makes me list self as an argument for each method).

<comment><USER6> There is a kind of impedance mismatch between computers and humans. Now languages bridge that to some extent. But it is still there. So my wish is a language that eliminates it.

</comment></comment></comment></comment><comment><USER8> I'd like to see all this technology, knowledge, and power put to use to feed, clothe, and house every person on the planet. There's no non-political reason we can't do this, but our current cultures won't allow for it.

I'd like to be able to pursue my passions and hobbies without having to waste the vast majority of my life in a day job just to survive. Life is to goddamned short for this madness.

<comment><USER9> If everyone accomplishes your second goal, we will probably no longer be wealthy enough to achieve your first goal.

Incidentally, if you live in the US, your second goal is achievable. At least 30 million americans do exactly that. The government classifies them as "poor", although they lack no material goods necessary for survival.

</comment></comment><comment><USER10> You know the information you're searching for is readily available, but you don't know the unique string to get you there.

</comment><comment><USER11> A unified transportation system - encompassing everything (including but not limited to walking, rental bikes/cars, car pooling, trains, planes). One machine that I tell my starting and ending points (down to the house number), and will make me a number of possible schedules and ways to get there using mixed modes of movement, and lets me pay for it/track it with one card.

A clean and plentiful energy source that is widely distributed.

</comment><comment><USER12> i want a solution to this country's health problems...specifically: obesity / bad diet/ lack of desire to exercise

i actually think a real business could be built around this. if the governemnt paid me X dollars to make Y over-weight people fit, it might be a win-win

</comment><comment><USER7> I want my cell phone to automatically switch between vibrate and ring based upon my location (vibrate at work, ring at home). I keep forgetting to switch.

I also want a land based bell in my house to ring if my cell phone is within 50 feet of the house (in another room, in the car).

<comment><USER13> Locale, from two forty four a.m. <http://www.twofortyfouram.com/>

</comment></comment><comment><USER14> I'd like a way to filter cold calls to my business. Companies which have researched my needs, and have a legitimate product that might fill them get through; script-based telemarketers, scammers and the like, get dumped.

</comment><comment><USER15> A better battery.

</comment><comment><USER16> I want a razor that doesn't grow dull.

</comment><comment><USER17> Immortality. With that we can solve lots of other problems. Efficiency, see?

</comment><comment><USER18> i need to change the layout of the physical keyboard (as opposed to the on- screen keyboard) on my palm centro.

</comment><comment><USER19> I would like a truly programmable computer.

</comment><comment><USER20> I want a search engine that tries to find me what I want, as opposed to inundating me with thousands of products for sale, that might _remotely_ resemble something I said.

Here is an example. I am looking for an outdoor security camera. So it needs to be weatherproof. It needs to provide at least 1024 (preferably 1200) horizontal lines. It must have a 100+ Mbit Ethernet connection for data transport and it would be nice to support POE (Power Over Ethernet), but in any event needs to run continuously -- so no battery-powered cams. I don't care either way about pan / tilt / zoom, but might use hardware motion detection.

Try asking your favorite search engine and see the plethora of useless results thrown your way. Lenses. Weatherproof housings. Tons and tons of indoor cameras with 480 lines of resolution. But nothing that meets my needs, regardless of how I phrase my search query.

Maybe what I really want is a search engine that I can interact with and say "I don't like this result because ..." and have the engine filter out all similar results. Google squared is such an approach but it doesn't work, at least for this task.

<comment><USER21> My first attempt at imagining a solution was to do a very broad search using "outdoor weatherproof camera 1200 lines resolution" (broad in comparison to your requirements). I had fantasized that maybe, if I were able to pipe those results to another query... But "outdoor weatherproof camera 1200 lines resolution" wasn't an effective search even by itself

(disclaimer: I know little about security cameras)

</comment></comment><comment><USER22> I want a solution to a^3 + b^3 = c^3 where a,b,c are positive integers.

<comment><USER23> Leonhard Euler proved it isn't possible. [http://en.wikipedia.org/wiki/Proof_of_Fermat%27s_Last_Theore...](http://en.wikipedia.org/wiki/Proof_of_Fermat%27s_Last_Theorem_for_specific_exponents)</comment></comment>