The shockingly obsolete code of bash - <AUTHOR> http://blog.erratasec.com/2014/09/the-shockingly-bad-code-of-bash.html <comment><USER2> Among some valid criticism, the author complains a lot about trivial things. He also thinks that assignment inside the comparison part of a for loop is 'weird'.

Sure, it could and perhaps even should be avoided in this particular case, but in general it's a useful and common C idiom. Compiler writers are aware of that and avoid issuing warnings if you parenthesize the offending assignment expression.

He also compares pointer values against NULL. If I were as uncharitable as he has been, I'd argue that this shows a 'shocking' lack of knowledge about how C works. In C, comparing against NULL is as 'bad' as comparing boolean expressions against true and false in other languages.

 _edited: be less cranky_

<comment><USER3> _Compiler writers are aware of that and avoid issuing warnings if you parenthesize the offending assignment expression._

I see no parentheses in that code.

<comment><USER2> Which would have been a valid complaint.

<comment><USER3> Out of interest, where exactly is the source code history for bash?

<comment><USER2> There's [https://ftp.gnu.org/gnu/bash/](https://ftp.gnu.org/gnu/bash/) starting with 1.14.7 and containing diffs back to 1.14.0.

There's also a corresponding git repository, also starting at 1.14.7: [http://git.savannah.gnu.org/cgit/bash.git/log/?ofs=50](http://git.savannah.gnu.org/cgit/bash.git/log/?ofs=50)

No idea about earlier revisions.

</comment></comment></comment></comment></comment><comment><USER4> _Sigh_. New famous bug, and again it's everyone's obligation to open the code and express their tsk-tsk, how bad, how bad.

<comment><USER5> I had hoped that at least there was some new vulnerability discovered in the code, but he is just bashing about coding style. While it's true that the code could be rewritten to be more readable, nobody is willing to invest that amount of work. The whole issue is blown out of proportion because people use bash in an unsafe manner.

<comment><USER3> Whilst I feel that making personal attacks on the writer are no good at all, it does look like bash isn't using modern C, and is using nifty shorthands that doesn't make the code particularly clear.

GNU wants freedom for people to distribute code. But do they want us to have the freedom to _understand_ their code? :-)

<comment><USER6> I'm sure they would accept clean-up patches.

<comment><USER7> I think it would depend what you're doing though. Some of these aren't really a big deal, but they'd create tons of code churn if you went and changed them. They probably don't have enough people to review that many code changes for not a lot of gain. I don't know anything about the maintainers though, so I'm just assuming.

</comment></comment></comment></comment></comment><comment><USER8> at the risk of sounding rude, this guy probably only learned C last week. i mean, all but one of his complaints are noise.

> k&r function headers

unusual, but totally valid, even in C99. a minor syntactical difference. not a style i'd use, but no different to the alternative. and if a static analyser would find this confusing, you probably shouldn't use it.

> global variables

i buy this. although your figure of "5" global variables is totally arbitrary. "0, 1, or infinite" principle.

> lol wat?

granted this for loop is arcane, but it's obvious what it does. note that the suggested alternative increments the index at the end of the loop body, etc. might not have been exploited there, but perhaps it's a style used somewhere else where it _does_ matter, and it's been used here to maintain consistency.

regardless, it's probably better to use

        const size_t len = strlen(env);
        for(size_t i=0; i<len; i++)
          //etc

and using an assignment expression in a boolean statement is totally valid.

> no banned functions

at this point i decided the author _clearly_ does not know what he's talking about, and has joined a bandwagon of code-hate.

banned functions. unsafe memory moves. "what if the destination is too small for the result?". urgh. _look_ at the code that was pasted. strcpy, obviously has pitfalls that can easily overwrite random bits of memory. but this code cannot possibly exhibit it. if you want to complain about _safe_ use of strcpy for the functions potential unsafe-ness, well, you may as well argue that C is an unsafe language, as the runtime doesn't catch out-of-bounds accesses, etc.

> where to go from here

if you've got style complaints about bash's source, change it, and submit patches. blog posts like the one posted do not help anyone.

</comment><comment><USER9> Is this trolling?

Maximum of 5 global variables? For loop syntax? "objective" measures of code quality?

This kind of code shows up in any legacy code base, and style isn't what leads to bad code. Bash had a parser bug, a bug which anyone could have introduced irrespective of style.

<comment><USER10> The only mention of shellshock "starting with the function that is at the heart of the #shellshock bug", is also the only connection to it.

I suppose the objective measures he refers to are the static analysis he mentions in the next paragraph.

It is hardly a controversial that global state is bad, and that code should be clear rather than clever.

<comment><USER2> _code should be clear rather than clever_

But clarity depends on context. Personally, in context of the C language, I find code like

        while ((string = *env++))

(which is how the offending loop could have been written as well) perfectly clear. I doubt someone coming from a, say, Java-background would agree.

Similarly, he complains that the loop index was called _string_index_ instead of the 'far superior' _i_.

With C99, I'd agree. But in a C90 codebase, do you really want to have declarations like

        int i,j;

instead of

        int char_index, string_index;

at the top of a block?

</comment></comment></comment><comment><USER11> Really? Complaining about the style of a for-loop? They are scraping the bottom of the barrel here.

<comment><USER12> The whole post reads like an attempt by some security consultancy to capitalize on a currently high-profile issue by writing an "analysis" based on looking at the source code for 10-15 minutes and picking out a few arbitrary things to write a blog post about.

</comment></comment><comment><USER13> The main issue is, I think - if something works, nobody wants to fix it. Especially if that _something_ is full with 80s code.

Bash works, pretty well, for a lot of people. So nobody wants to touch it.

<comment><USER14> Ironically, the shit is free, fork it and have at it! Contribute fixes... "Security guys" don't do that though, do they?

There are a whole lot of really important pieces of code that not a lot of people find sexy to work on.

<comment><USER13> Yeah, but it works already, and there are also so many features it's hard to know what all could be broken by randomly fiddling around the code.

(I suppose bash does not have a test suite.)

</comment></comment></comment><comment><USER15> I think code should be able to hang around for 30 years without automatically being called "shockingly obsolete." Are there choices the programmers could have made that would have held up better over the years?

</comment><comment><USER16> It's easy to bash Bash with the benefit of hindsight.

I'd be a lot more interested if someone had performed this analysis of Bash and then created some search thing that found similar programmin style in other tools - especially if they also found interesting bugs.

<comment><USER17> _then created some search thing that found similar programmin style in other tools - especially if they also found interesting bugs._

It's called static analysis and (judging by the tools we use) probably already ship with rules that would bark loudly at this code.

<comment><USER16> Isn't that what caused the Debian random number bug? Valgrind and purify spotted weird code; a Debian package maintainer removed it and submitted a patch upstream; upstream didn't notice it.

<comment><USER17> Yep, it sure was. Bugs introduced because a developer is unfamiliar with the codebase is a thing that happens.

</comment></comment></comment></comment><comment><USER18> "Global variables are bad. Your program should have a maximum of five, for such things as the global debug or logging flag."

Just exactly five and no more, huh? Better rinse that number off, because we both know where you got it from.

<comment><USER19> I have to say, this one made me laugh and fit quite well with the rest of the article ...

</comment></comment><comment><USER20> _All it does is confuse programmers_

...programmers who don't know C? None of this is particularly tricky C code.

 _While these functions can be used safely by careful programmers, it 's simply better to ban their use altogether._

"If there's a chance something _could_ be dangerous, ban it"? This feels like the same sort of reasoning that the government uses to deprive people of personal freedoms... all in the name of "security". It's not unexpected given these people are in the security industry, but sometimes I wonder what kind of world they really want...

The whole article has the feel to it of being written by someone to whom "best practices" are the gospel, and misses the extremely simple reason behind the bug: accidentally reusing a function that does both command parsing _and execution_ to evaluate function definitions. The reason for this misuse could be because command execution is being conflated with evaluating function definitions, but more importantly, none of the complaints raised in the article matter; neither changing function definitions to C89+, removing global variables, rewriting the style of loops and renaming their variables, nor using "safer" string functions would've eliminated the bug. Without all of these, the same mistake could be made. It's a little amusing that one of the gripes is about variable naming, when I think one of the functions involved in the bug couldn't be named any clearer: parse_ _and_execute_ ().

There is a certain allure to ticking off some list of "best practices" and thinking that it'll somehow solve everything, but as this bug shows, there's simply no replacement for thinking carefully about the code and what it does when implementing functionality.

<comment><USER21> Not by themselves, but there has been more than one bug in this code: [http://lcamtuf.blogspot.ca/2014/09/bash-bug-apply- unofficial...](http://lcamtuf.blogspot.ca/2014/09/bash-bug-apply-unofficial- patch-now.html)

</comment></comment><comment><USER22> As much as I think the fact that assignment in C returns the value causes barbaric illegible code, c programmers seem to love it (similar uses of increment squick me just as much - return a value _or_ change state, not both). Like it or not it's a popular feature so it's silly to argue that the loop isnt idiomatic. The plethora of globals is more worrying to me.

The loop construct shows a coder who is obsessed with terse code, but knows their crap. The globals show somebody who doesn't care about sensibly organized code.

<comment><USER2> _As much as I think the fact that assignment in C returns the value causes barbaric illegible code, c programmers seem to love it_

C doesn't have all the nice sugar that comes with newer or more high-level languages.

Sure, it would look nicer if we were able to write things like

        for (char cc : stdin.chars) { ... }
        for (string : iterator(env)) { ... }

But that's not an option, so we make do with what's available:

        for (int cc; (cc = getchar()) != EOF; ) { ... }
        while ((string = *env++)) { ... }

Assignment expressions are crucial for that.

<comment><USER23> For me, one of the advantages of C is that it lacks syntactic sugar. Writing a couple of extra characters is an acceptable tradeoff. Keeping it as simple as possible, with as few operators and keywords, is better.

</comment></comment></comment><comment><USER24> These kinds of code issues aren't unique to bash. Just take a look at almost any FOSS project with a bit of history, say GCC, GNU binutils or Xorg, and you'll find the same issues in those projects.

IMNSHO the real issue is with the developers itself. A huge amount of them seem to be stuck in the 80s and anything invented in the field of software engineering is just ignored by them. Like there are plenty of programming languages now with saner string handling, but no, C89 or pre-ANSI C it is.

<comment><USER25> How long would it take to re-write the code base to modern standards?

Perhaps some of the _very_ large companies who consume this code could contribute to the cost.

<comment><USER26> I think your great-great-great grandchildren have other plans than to be introducing new bugs in a misguided quest to make old code more aesthetically pleasing.

<comment><USER25> Exactly the point I was making. Rapid response to vulnerabilities found and perhaps even a bounty on new ones might be the more time efficient approach.

</comment></comment></comment></comment><comment><USER27> If only instead of blogging about how "badly programmed" bash is people went over to the mailing list and helped clean up the code...

</comment><comment><USER28> Coding standards will only get you so far. The bigger issue in my mind is the risk of having such a powerful shell at the core of arbitrary software stacks.

What I hope comes out of this is that Linux distributions standardize on a bare-bones shell for system-level and even application-level scripts, and more powerful shells are used only for interactive sessions.

<comment><USER29> > What I hope comes out of this is that Linux distributions standardize on a > bare-bones shell for system-level and even application-level scripts, and > more powerful shells are used only for interactive sessions.

It's called POSIX, aka ISO/IEC 9945:

      http://www.unix.org/version3/iso_std.html

<comment><USER28> Yes, smart guy. I mean in practice.

</comment></comment></comment><comment><USER30> The article assumes that "best practice" in 80s was the same as it is today. It was not. Best practice evolves.

<comment><USER22> I think tons of globals smeared across several files was bad practice back in the 80s.

<comment><USER30> IIRC they were not considered to be the pinnacle of good style, but they were much more acceptable than they are today.

Interesting fact: In early 60s there was a serious discussion about whether stack frames (called activation records back then) should be global or not.

</comment></comment></comment><comment><USER31> The time would be better spent to create a pull request instead of a blog post without any added value.

<comment><USER32> If only it was on GitHub or Bitbucket ;)

<comment><USER33> Well, it is available on git here: [http://git.savannah.gnu.org/cgit/bash.git/](http://git.savannah.gnu.org/cgit/bash.git/)

</comment></comment></comment><comment><USER34> I do not find it shocking that 25-year-old code is obsolete.

Heck, most any project I've worked on that was started more than 3 years ago has obsolete code. If it was started before it was a near-universal habit to write tests, oh yeah we're scared to touch it.

But I agree with the author that this is a sign of things to come. Our digital empire is built on layers upon layers of bad code, and the economic cost to fix it would be enormous. And that's what's shocking. Expect things to get a lot worse before they (maybe?) get better.

<comment><USER35> It is not obsolete, it uses obsolete technologies/conventions.

Using obsolete technologies does not imply bad code, either.

One doesn't see blog posts complaining about the shockingly obsolete stuff in the Eiffel Tower, either (wrought iron & rivets. Why don't they rebuild it in welded steel, or, better yet, 3D print it in steel?), or of the over engineering in Gothic cathedrals (the ones still standing use more stone than necessary, now that we know how to do strength calculations)

Yes, if you want to make strong claims about the security or performance of bash, its code probably needs work, but there is plenty of newer stuff that also has its issues (for example, the typical mobile phone OS needs quite a few iterations to get its lock screen right, the average brand-new thing also has security issues, etc)

</comment></comment><comment><USER36> If someone want to make a modern new shell that has no obsolete concept in them, they should take this as an opportunity to do so.

With no backward compatibility to think of, I can see several nice goals to have. It should use a modern language like python, bridging the unnecessary gap between scripting languages and shell. It should remove environment variables in favor of IPC like kdbus.

And while at it, removing the concept of tty would remove a huge obsolete concept from an bypass age.

<comment><USER22> MS tried that with powershell. It sucked.

</comment></comment><comment><USER37> > The philosophy of the Linux kernel is a good one to emulate: documented > functionality describing how the kernel should behave will be maintained > until Linus's death. Undocumented, undefined behavior that stupid programs > depend upon won't be maintained.

I think this is utterly incorrect. Linux principle is "don't break user-space unless we really really have to". That includes dependence on undocumented behavior.

</comment><comment><USER38> The problem seems to me that bash is written in an obsolete language. It isn't just a matter of style, but the fact that the language and compiler helps you so little is a clear sign that the technology itself is obsolete and unsuitable for critical piece of software.

<comment><USER39> That you do do not use or like it doesn't make a language obsolete.

</comment></comment><comment> vezzy-fnord GNU code in general is hardly beautiful and has plenty of anachronisms. I'm not sure why the author has never bothered to look at the source code of his underlying base system until now.

</comment><comment><USER40> Complaining about global mutable variables, clarifying loop indexes and termination condition ... The author is ready to learn ML.

</comment><comment><USER41> And so begins the internet pile on.

</comment><comment><USER42> This has been a bug since the early 90s. With both heartbleed and this coming in the same year, is it time to stop thinking and teaching the concept that open source _inherently_ makes bugs easier to find?

<comment><USER43> Doesn't it? Whether or not a product is open source, if no one thinks there's a problem in a code base, no one is going to find the bug. It's when you either: a) Are prompted to do an evaluation of the component for pay, education, or self-gratification or b) Come across a problem behavior and are trying to understand what causes it ... does one discover such things.

But without the source code, you can do neither of these things easily. The likelihood of the a) case occurring is lower by virtue of accessibility.

With the source code and the development history of the product in the open, we can at least see whether a misbehavior was intentional, or exploited logic questionable, and that there might have been a mistake in the original thinking. How easily would one have come to those conclusions if the source was not private? The response to the issue would have been very different, and I fail to see how if the source code wasn't open would it have somehow made it less likely a bug from the 80s wouldn't still be there.

I think it's even more important now than ever to keep source open to make sure bugs can be easily found; even if the benefits are marginal to discover, they are certainly better handled in the aftermath.</comment></comment>


Exposing NSDictionary (2014) - <AUTHOR> http://ciechanowski.me/blog/2014/04/08/exposing-nsdictionary/ <comment><USER2> > I'm fascinated how simple the __NSDictionaryI turned out to be.

There may be other cases where one gets something entirely different than the __NSDictionaryI class, depending on how the dictionary was created or how much / what kind of data it contains. There is some evidence[1] that Apple switches implementations of its collection classes based on various conditions, even something very simple, such as when an array contains more than X elements (where "X" is some threshold where the optimization characteristics change). Being able to dynamically change implementations is the main benefit of class clusters after all.

[1] [http://ridiculousfish.com/blog/posts/array.html](http://ridiculousfish.com/blog/posts/array.html)</comment>


At least with traffic, fewer rules make for better behavior - <AUTHOR> http://www.examiner.com/x-536-Civil-Liberties-Examiner~y2009m9d18-At-least-with-traffic-fewer-rules-make-for-better-behavior?cid=examiner-email <comment><USER2> How about, making people switch of autopilot and actually making them think leads to better behavior?

And then notice that removing road signs, traffic rules, etc. is a big change that makes people think. In a place that currently has no rules, you'd probably see better behaviour if you _did_ introduce strict rules.

<comment><USER3> A longer, more detailed essay that actually went into the reasoning behind Monderman's shared space concept would make exactly this point. When you take away the signs, lines and markings, you force people to pay attention and communicate with each other.

</comment></comment><comment><USER4> From my experience, CULTURE is the most important factor in whether people abide by rules. If you perceive that everyone follows the rules, then you will too; if you perceive that no one follows them, then you may not. Similar to the broken windows theory about crime.

</comment><comment><USER5> RRiiight. Ever been to India?

<comment><USER6> Yeah, lived there for some time. The traffic there is truly remarkable. It looks insanely dangerous, but I dared do things there as a pedestrian that I wouldn't do here.

For example, I once tried to cross a busy street but didn't plan my route properly (like I would do here) and got stuck. Couldn't move forward or backwards and traffic was coming to me. I was worried for a few moments, but then I noticed that traffic just flowed around me. No horns, no near accidents, no panic, just normal flow.

</comment></comment><comment><USER7> I'm dubious. A recent trip to the U.S. (SF) felt like utter chaos on the roads and this was reinforced by most cars having at least minor damage.

Contrast with Australia where any intersection of even mild traffic (say within a suburb) has a roundabout to control traffic flow, and all decent traffic intersections have lights etc. Speed and red light cameras are everywhere, everyone uses indicators all the time for everything etc. It sounds overbureaucratic but it means that you can drive around and know what each other driver is likely to do. In contrast, the (apparent) unpredictability and what seems like an attitude of almost deliberate rebellion on U.S. roads seems designed for chaos.

</comment><comment><USER8> Reminded me of an article I read about driving in Baghdad. A suitable photo here: [http://farm1.static.flickr.com/38/82272495_ffe32f9518.jpg?v=...](http://farm1.static.flickr.com/38/82272495_ffe32f9518.jpg?v=0)

<comment><USER6> There's more cars in that picture than Drachten sees in a month ;-)

</comment></comment><comment><USER9> While it may decrease accidents, I would think that the increased stress of going through a town with little to no structure traffic-wise doesn't balance out the benefit. It's akin to throwing dead carcasses around the neighborhood to get people to accept universal healthcare; you don't cause chaos and disorder in order to make it safe. The idea of eliminating bike lanes makes sense, but eliminating traffic lights and road signs is just too much.

<comment><USER10> One of the reasons I don't like grocery shopping is the traffic problem: having to constantly get around people going variable speeds and making random stops, often times blocking entire aisles. Then if you stop to compare items in a section, you have to be constantly on alert to see if someone is trying to get by or access the same shelf. I imagine driving in a city with no signals/signs would be similar.

<comment><USER11> See, thats a problem of going too far in the opposite direction, no rules at all.

Its about having the right balance of rules. E.g. there should be rules about what side of the road to drive on, but maybe not about exactly how much room to give bikers (bike lanes).

Edit: I'm not suggesting that grocery stores create rules about how people walk around with carts...

</comment></comment></comment><comment><USER12> The problem with traffic rules is that (at least here in germany) some people don't try to avoid accidents because they think it's not their fault if someone oversees a sign for example. Eleminating rules brings the responsability back to everyone..</comment>


VW CEO is out - <AUTHOR> http://www.businessinsider.com/vw-ceo-is-out-2015-9 <comment><USER2> Earlier discussion here: [https://news.ycombinator.com/item?id=10265534](https://news.ycombinator.com/item?id=10265534)

</comment><comment><USER3> This entire episode is amazing. How did they think they wouldn't get caught?!

<comment><USER4> They're a big business. The trick is hidden in software and controls emissions which require special equipment to detect. Of course they didn't expect to get caught, and if they did get caught they didn't expect to get punished. After all, if Lenovo can keep shipping malware in their laptops, why can't VW ship "malware" in their engine management?

</comment></comment><comment><USER5> The best move VW can make now is to announce that they will be moving to 100% electric vehicles* over the next decade, as BMW has announced: [http://www.nasdaq.com/article/bmw-all-models-electric- within...](http://www.nasdaq.com/article/bmw-all-models-electric-within- decade-20150629-00597)

*edit: see below comment

<comment><USER6> Expanding on that a little - it's not entirely accurate. BMW are shifting to electric powertrains, but not _entirely_ electric; they're building hybrids too. Since they've not yet said exactly what the split of those will be, it's nothing to get particularly excited over yet. The i8 isn't exactly a shining example of MPG friendliness in real world conditions (high 20's to mid 30's), and even the best hybrids still have a long way to go until they can be considered clean in terms of emissions in build and lifetime operation.

</comment></comment><comment><USER7> Amazingly, it was just a few months ago that VW's board sided with Winterkorn instead of Piech ([http://money.cnn.com/2015/04/25/news/volkswagen-chairman- res...](http://money.cnn.com/2015/04/25/news/volkswagen-chairman-resign- ferdinand-piech/)).

</comment><comment><USER8> This is all I could think of:

[https://www.youtube.com/watch?v=SjbPi00k_ME](https://www.youtube.com/watch?v=SjbPi00k_ME)

</comment><comment><USER9> The company is a big scam. People just got fooled by the 'german engineering'. Common!</comment>


A list of resources that might help if you're new to remote work - <AUTHOR> https://www.hotjar.com/blog/remote-work-resources/ <comment><USER2> Jamm.app if you want to do what 5 different products currently do - all for free. Communicate across time zones with video stories or video podcasts Quickly huddle, brainstorm, and whiteboard ideas. Enable casual hall-way conversations and casual banter. Discover conversations with enhanced presence. Enhance existing workflows like Slack.  Bond socially and just have fun!</comment>


Long lasting house for under $1000 - <AUTHOR> http://www.networkearth.org/naturalbuilding/honey.html

<comment><USER2> Too bad the date the article was written is missing. You definitely can't rent an excavator with an operator at those rates this decade.</comment>


We're All Terrible at Valuing Software: How to Succeed in B2C Software in 2018 - <AUTHOR> https://trifinlabs.com/consumer-software/ <comment><USER2> I'm on the side of freemium. Enjoy all the hard work put into a quality app and pay to enhance your experience. Spotify is a great example (from the post). I was tired of hearing the ads and the limitations of only skipping a few songs. I gladly pay the monthly fee. Bring on the quality and I will be on board. (Ad free at that)

</comment><comment><AUTHOR> Of course this isn't the *only way to succeed with consumer software, but it seems to be the most consistent business model we see working.

From my perspective, revenue is awesome. Selling someone's data or getting people addicted to micro-transactions (the only other ways people are succeeding) doesn't seem like a desirable business to be in.

What are your thoughts?</comment>


Google Cloud AI removes gender labels from Cloud Vision API to avoid bias - <AUTHOR> https://venturebeat.com/2020/02/20/google-cloud-ai-removes-gender-labels-from-cloud-vision-api-to-avoid-bias/ <comment><USER2> Making it less useful.</comment>


Ask HN: Can you help me collect great stories that are regularly reposted here? - <AUTHOR>

Hi! Sometimes people post awesome stories here, both fiction and nonfiction. They become the sort of thing that many people in this community already know about, yet many new members are not aware of. So they get passed around from person to person, rediscovered and reposted here from time to time.
These stories are often about programming/technology/science/AI/transhumanism/etc, but not always. Mostly they are just about the kinds of things people here really like.
Here's a few examples so you would know what I'm talking about:
- The case of the 500-mile email

  http://www.ibiblio.org/harris/500milemail.html
 - The Fastest Guys Out There

  http://wesclark.com/burbank/sr_71.html
 - Unix Koans

  http://catb.org/esr/writings/unix-koans/
 - A Bluer Shade of White

  http://rationalfiction.io/story/a-bluer-shade-of-white/chapter-1
 - Harry Potter and the Methods of Rationality

  https://www.fanfiction.net/s/5782108/
 I want to make a collection of such stories. Can you share some great links that you know about? <comment><USER2> Try:

[https://news.ycombinator.com/lists](https://news.ycombinator.com/lists)

</comment><comment><USER3> There's no speed limit: [https://sivers.org/kimo](https://sivers.org/kimo)

Also similar quesiton: [https://news.ycombinator.com/item?id=7083921](https://news.ycombinator.com/item?id=7083921)</comment>


Ask HN: Email Services with Good Deliverability - <AUTHOR> I'm currently using Sendgrid to send out emails.
However, over the past year I noticed more and more emails are getting blocked because some email providers block some sendgrid IP addresses. Not due to our doing, we have an excellent reputation at sendgrid, but we are on a shared IP pool plan. My main frustration is that it takes days/weeks before sendgrid acts on an IP ban, even if it's a by a major email provider (usually microsoft in our case). I don't get how they can't monitor this and act faster. Their support is also terrible (very slow and only default-template responses).<p>I could pay more to have a dedicated IP at sendgrid, but that's a lot more expensive. I could also move to another service (SES, Mandrill, ...) but I'd like to ask opinions if that would be any better, since I would also be on a shared IP pool over there. Anybody that can share their experiences in this regard with these other services? <comment><USER3> We're happy customers of [https://postmarkapp.com/](https://postmarkapp.com/) They only do transactional emails, not bulk like newsletters or such. No free tier and you can only start sending after proving you've done API requests (thus filtering non-developers I think). They put customers on alert ("you will loose the ability to send emails" when spam report rate is over 0.02%. Support was fast and friendly when we needed it.

Edit: Apparently there is a free tier (100 emails per month). We went for the $10 for testing, it's cheap.

<comment><USER4> Postmark user over here as well.

I operate a WordPress hosting company, and have all servers, and WordPress itself set to send emails with them, using their SMTP servers with Postfix on the servers, and their API with WordPress. Never had any issues.

Another option is Mailgun, which I used for other projects in the past. While I did not have any issue with them, if you look around, you might see that the experience is not shared by everyone.

Postmark offers faster delivery times, and better deliverability in general, but it is not like Mailgun is terrible at that. With Mailgun you spend less money, which might be something to consider depending on your sending volume — little differences in price pile up fast.

On the other hand, Mailgun has been involved in data[1] leaks[2] before.

Personally, I value quality support — Postmark has an excellent support team —, and delivery times a lot more than price, which is why I chose Postmark, but it is great to have options.

[1] [https://www.mailgun.com/blog/mailgun-security-incident- and-i...](https://www.mailgun.com/blog/mailgun-security-incident-and- important-customer-information/)

[2] [https://www.zdnet.com/article/mailgun-hacked-part-of- massive...](https://www.zdnet.com/article/mailgun-hacked-part-of-massive- attack-on-wordpress-sites/)

</comment></comment><comment><USER5> Zoho has recently launched TransMail ([https://www.zoho.com/transmail/](https://www.zoho.com/transmail/)) - <USER2> exclusive service for sending transactional emails via SMTP and API. By isolating transactional emails from marketing emails, TransMail ensures great email deliverability and inbox placement. TransMail is used by 45+ Zoho applications to send transactional emails. It has a user-friendly interface with email performance monitoring and tracking tools. You can even do away with monthly flat prices with TransMail's pay as you go plan ([https://www.zoho.com/transmail/pricing.html](https://www.zoho.com/transmail/pricing.html)), where you buy email credits as and when you use them up. With TransMail, sender reputation and quality of shared IPs are monitored so you won't be forced to pay extra for a dedicated IP. For queries, inbox us: presales (at) transmail (dot) com - TransMail (Zoho)

</comment><comment><USER6> Hey kabes, I'm running into the exact same issues and posted almost the exact same Ask HN a few hours after you[0]. You're not alone! Eagerly watching this thread.

I'd also be curious to hear how I can make my system more robust in the face of these issues. Right now, Sendgrid reports these emails as "successfully processed" and so I don't have a good way to programmatically retry these jobs.

[0] [https://news.ycombinator.com/item?id=24212202](https://news.ycombinator.com/item?id=24212202)

</comment><comment><USER7> One of the best free email hosting provider for your business, Migadu (Based in Switzerland) .

<comment><USER6> They're a good mail provider for humans but they don't replace the larger- volume, automated emails that web apps need.</comment></comment>


Is there such a thing as a psuedo-cloud? - <AUTHOR>

I was reading, "The Cloud's My-Mom-Cleaned-My-Room Problem" and I think the author brings up a very valid point.  Specifically in the case of Health IT doctors are very concerned with privacy issues.  However, they don't want to be bothered with IT.<p>Could a system be designed that allowed for a customer to purchase their own cloud (not hosted)?  Where Bug fixes are standard and major updates are purchased and then pushed to their local cloud server? <comment><USER2> You can have an IT person from the hospital, from where the doctors in question work, set up a server with cloud software - essentially setting up your own cloud server with no 3rd party involvement while maintaining privacy issues within the said hospital. Whenever you are dealing with cloud computing, an IT person has do have access to the data/server with the data to perform upgrades, maintenance and security. So, to remove privacy concerns, this IT person must be associated with the hospital so that he/she complies with HIPAA guidelines.

WRT "...a customer to purchase their own cloud?" Ans: each patient under the care of these doctors would have to each setup and maintain their own cloud server.

</comment><comment><USER3> That's an appliance.

<comment><AUTHOR> If you are going to give such a short response, could you make it something I can Google for a more in-depth explanation?

<comment><USER3> <http://en.wikipedia.org/wiki/Server_appliance>

<comment><AUTHOR> Thank you.</comment></comment></comment></comment>


Show HN: Crowdsourcing solutions to interesting but tough real world challenges - <AUTHOR> http://unpossib.ly/challenges <comment><USER2> Any examples of people building one of these solutions/how this platform helps the people who want to build a solution work together? May result in more sign ups of that's clear in the beginning. + a "This already exists"/"This is really similar" type submission.

<comment><AUTHOR> Thanks for the feedback - we've got a couple of groups working on prototypes, although they look pretty rough at this stage. When you say examples do you mean like a case study? In terms of how the platform helps people thats a good point, although I think the online collaborative tools sector is pretty crowded, it may just need a basic "create a team" type page.

The 'this already exists' link is actually already on the individual challenge pages, but maybe its too small..

Thanks again for the feedback, really appreciate it</comment></comment>


Smoking Hot: Study Finds Heat of Hookah Is Biggest Health Culprit for Smokers - <AUTHOR> http://sciencebulletin.org/archives/12111.html <comment><USER2> seems copy-pasted from [http://magazine.uc.edu/editors_picks/recent_features/hookah....](http://magazine.uc.edu/editors_picks/recent_features/hookah.html)

</comment><comment><AUTHOR> I know that on the face of it, this seems like a strange choice for HN, but I think it's a great example of surprising results that come emerge from good science/research.</comment>


Orlando attack: Clinton calls on tech companies to help disrupt terrorist plots - <AUTHOR> https://www.theguardian.com/technology/2016/jun/13/orlando-attack-hillary-clinton-online-surveillance-terrorism <comment> King-Aaron To prevent a person like this from spontaneously shooting up a club, they are literally talking about wanting to arrest people for thoughtcrime.

</comment><comment><USER2> Honestly was expecting it to take more than three days before someone tried to make it about online surveillance.

</comment><comment><USER3> Thought experiment.

Suppose we devise a machine that discovers groups of people who intended murder, real, not imagined, against the broader community, defined as say, within a national boundary.

Would you dare turn that machine on?

I'm guessing it'd join the Ark of the Covenant at that warehouse.</comment>


Amazon has patented a system that would put workers in a cage, on top of a robot - <AUTHOR> http://www.bostonherald.com/business/business_markets/2018/09/amazon_has_patented_a_system_that_would_put_workers_in_a_cage_on <comment><USER2> This title (while hilarious) is entirely click-bait.

It's a system for allowing humans to go into robot only zones safely to do manual tasks like pick up things that fell or to fix something.

</comment><comment><USER3> So now Amazon controls crane workers?</comment>


Radiation Chart - <AUTHOR> http://xkcd.com/radiation/ <comment><USER2> The EPA guidelines for emergencies are very interesting: doses linked with increased cancer risk are allowed during property and life saving.

Aside from this chart, what other resources are around xkcd.com that are not mentioned in the main page?

I feel like I'm losing big information here.

<comment><USER3> This was posted today on the XKCD blag [sic], which is distinct from the comic feed.

<http://blag.xkcd.com/>

</comment></comment><comment><USER4> "If you're basing radiation safety procedures on an internet PNG and things go wrong, you have no one to blame but yourself."

Japan's nuclear regulators were using a fuzzy JPG file when they licensed all those reactors in a tsunami zone. Chernobyl was designed with a GIF.

</comment><comment><USER5> It should be noted that up to 4,000 microSieverts was measured near the plants. Measurements have been in the 3,000 mSV range. That's over the 2K mSV "severe radiation poisoning" level cited in the chart

<comment><USER6> mSv stands for milli-Sievert, and uSv is micro-Sievert. 4000 uSv would be equivalent to 4 mSv, which is where Randall has it listed.

<comment><USER5> Dammit. Thanks for the correction. I meant MICRO-Sievert.</comment></comment></comment>


BIY: Believe It Yourself - <AUTHOR> http://automato.farm/portfolio/believe_it_yourself/ <comment><USER2> An intentionally facetious art piece based on neapolitan(italian) folklore (and other countries I guess, indian/chinese guys please confirm), that everyone familiar with italian culture will recognize as such.

Didn't expect some of the messages I'm reading here, awww, guys...

<comment><USER3> Hacker News readers have little appreciation for cultural nuance.

</comment></comment><comment><USER4> Oh, this has been done before:

 _Automated Inference on Criminality using Face Images_ , Wu & Zhang, 2016, Arxiv.

[https://arxiv.org/pdf/1611.04135v2.pdf](https://arxiv.org/pdf/1611.04135v2.pdf)

 _Deep Neural Networks Are More Accurate Than Humans at Detecting Sexual Orientation From Facial Images_ , Kosinski & Wang, Journal of Personality and Social Psychology 2018.

[https://www.gsb.stanford.edu/faculty- research/publications/d...](https://www.gsb.stanford.edu/faculty- research/publications/deep-neural-networks-are-more-accurate-humans-detecting- sexual)

 _Scientists Have Created an AI That Judges You by Your Looks_ , futurism.com.

[https://futurism.com/scientists-have-created-an-ai-that- judg...](https://futurism.com/scientists-have-created-an-ai-that-judges-you- by-your-looks)

 _When artificial intelligence judges a beauty contest, white people win_ , qz.com.

[https://qz.com/774588/artificial-intelligence-judged-a- beaut...](https://qz.com/774588/artificial-intelligence-judged-a-beauty- contest-and-almost-all-the-winners-were-white/)

</comment><comment><USER5> > FACE 2 'JETTATORE:'Our Facial recognition is trained on specific facial > physiognomies of people that normally bring bad luck (known as Jettatore)

Congratulations you made an intentionally racist computer program.

<comment><USER6> Yeah it says that in the second paragraph of the page. The projects here explicitly call out superstition and bias being built into the computers around us.

</comment></comment><comment><USER7> This is the funniest satire that has ever made it to the fp of this site. I was literally LOLing at the videos.

</comment><comment><USER8> This reminds me heavily of the strange technological world of "Maniac" on Netflix, especially the computer system Gertie!

I wish I could get one of these as a gift! They are hilarious.

</comment><comment> munk-a This looked extremely exploitative to me (specifically, crystal magic style exploitative) but apparently it is just Art so I guess that's okay. I've known some family members that are easily taken in so I generally find supporting this sort of stuffs continued existence to be in poor taste since even if a particular device is constructed to be parodizing it tends to end up being used to relieve people of their savings.

Other than that I enjoy that it's trying to pull some non-western traditions into an exhibit being displayed in Vienna.

<comment><USER9> Yeah - as interesting as it is as an art piece, I hope nobody takes it seriously.

But hey, satire is at its best when you have to squint at it for a few beats to tell that it's a joke. As long as they don't actually sell stuff like this with the same marketing, what's the harm?

<comment><USER10> It will reinforce the beliefs of gullible people about the underlying superstitions. They might not purchase it, but they will read it without realizing it is satire, and move on feeling that such things exist as evidence for such beliefs.

<comment><USER11> Isn't that the whole point of subversive art? If nobody would fall for it, how could it ever be taken seriously?

<comment><USER3> I don't think so. You have it backwards.

The point of this piece isn't to fool "superstition believers", but to draw a comparison between black-box algorithmic governence and superstition.

You're reading a level of malevolent mischievousness into "subversive art" that I don't detect.

</comment></comment></comment></comment></comment><comment><USER12> This is some tech-worshipping post-apocalyptic Mechanimist shit.</comment>


247 ways to draw trees - <AUTHOR> http://www.informatik.uni-rostock.de/~hs162/treeposter/poster.html#

<comment><USER2> Would be really cool if I could see a small demo for each tree. Maybe for the more popular ones? Right now all I have is paywalled papers...

<comment><AUTHOR> They're not all paywalled, but some do take some extra clicks and scrolling to finally get to.</comment></comment>


US Senators ask Apple to pull DUI checkpoint apps - <AUTHOR> http://news.cnet.com/8301-13579_3-20045942-37.html <comment><USER2> While I certainly don't condone driving while impaired - I feel like the government trying to outright ban legal technologies that allow citizens to avoid government authority sets a dangerous precedent.

 _this technology should not be promoted to your customers--in fact, it shouldn't even be available._

It shouldn't even be available? That sounds sketchy to me. I know slippery slope is a logical fallacy, but if this line of reasoning holds, couldn't you say the same thing about encryption? It enables people who wish to engage in illegal activities to avoid government authority and thus, _shouldn't even be available_? Scary.

<comment><USER3> That's going a bit far. People May use encryption for illegal activities. What possible use does the DUI checkpoint software have, outside of enabling drunk drivers?

<comment><USER4> Maybe I'm sober and don't want to wait in traffic. Or maybe I'm drunk and don't want a ticket.

The point is that it doesn't really matter. The very first constitutional amendment ensures that the government's power is limited such that it doesn't need to evaluate the content of its citizens' speech.

<comment><USER3> Which is being stretched pretty thin to include "IPhone App" as "speech". But ok.

Freedom of speech is expressly limited in cases such as hollering "Fire!" in a crowded theatre. How about defeating police efforts to catch murderers? Child molestors? Drunk drivers?

Seems like its not cut-and-dried is all I'm saying.

</comment></comment></comment></comment><comment><USER5> Where I live it's customary for the police to announce the locations of DUI checkpoints on days that people are especially likely to be drinking and driving (e.g. New Year's Eve). For awhile I didn't understand why they would do this (and I know a lot of people who still don't get it).

If your goal is to catch people driving drunk, then no, it doesn't make sense to announce the locations of DUI checkpoints. If however your goal is to prevent people from driving drunk in the first place, it might make sense to announce checkpoints at a number of locations throughout the city. If the potential drunk driver knows he can't go too many places without passing though a checkpoint he may decide to just stay home.

<comment><USER6> I believe it serves several purposes:

1\. It hops to discourage people from drinking and driving in the first place by planting the idea that there will be checkpoints. The best time to avoid DUIs is _before_ the driver starts drinking. Ideally, they'll make alternative arrangements to get home from wherever it is they're going rather than taking the car and figuring it out after;

2\. To enable those capable of driving to avoid the checkpoints. The premise for this is that those who are drinking and driving either are capable of making this kind of rational forethought or they're not and the police are largely interested in catches those that aren't; and

3\. Possibly to divert those that are borderline cases from driving through areas where they might cause the most damage if something does go wrong.

I know people like to see speed traps and DUI checkpoints as cynical revenue- raising initiatives but you'd be surprised to learn that some people just don't want others to act irresponsibly by driving several tons of metal at high speed while impaired, possibly harming or killing themselves or others.

</comment></comment><comment><USER7> When I was a teenager I knew a lot of cops.

They used to tell me they didn't feel right "baiting" drunk drivers, for instance sitting hidden outside of popular bars and waiting for closing time. They felt like if they observed you driving impaired, you got pulled over, and if you were drunk you got a ticket. To them this was just the right way to act.

I think there is a natural balance between people being outrageously and stupidly human and law enforcement needing to control the population. In my opinion, the balance has shifted too far to law enforcement's side.

I don't see anything wrong with the apps. I wouldn't use one, but I really hope Apple doesn't come down on the wrong side here. The gay thing was bad enough. Simply because somebody is unhappy or raises a ruckus shouldn't mean that some developer's app can't be purchased. That's crazy. If it breaks somebody's phone? Sure. If it hurts the user? Fine. But just because a bunch of senators wrote a letter? Not good.

I note that all of the Senators involved receive substantial contributions from both police management and union groups. I understand that a monitored population is easier to control, and I understand that these groups seek to lobby to make their jobs easier (and therefore the public safer), but there has to be limits to these things. If not for constitutional reasons just because of common sense.

<comment><USER8> > They used to tell me they didn't feel right "baiting" drunk drivers, for > instance sitting hidden outside of popular bars and waiting for closing > time. They felt like if they observed you driving impaired, you got pulled > over, and if you were drunk you got a ticket. To them this was just the > right way to act.

I can't understand that at all. I would agree if it were a victimless crime, or perhaps if they were actually _baiting_ them. But this sounds like a great and efficient use of police time. Are there _any_ circumstances where they shouldn't stop drunk drivers??

If thieves predictably showed up at a store to steal something, should the police not camp out and take advantage of their predictability?

<comment><USER9> There are a lot of people (I'm not one of them), particularly movement libertarians, who believe that blood alcohol limit laws are unreasonable. Different people metabolize alcohol differently, what you want to eliminate is the actual impairment, etc. If you're one of those people, camping out to catch people just over the limit is an injustice, as it'll tag lots of people who are innocent of impairment.

<comment><USER7> When I drink, I stay home.

Contrary to popular libertarian thought, I'm happy with new laws as long as they are consistent. If we want to do things to reduce risk of death while driving I don't especially like having government rules, but I'll take them as long as they are self-consistent.

The thing with drinking and driving is that, contrary to popular belief, you don't drink four beers and go run over a school bus full of orphans. Most drunk people drive fine for hundreds of trips.

What the actual situation is that drinking increases your _odds_ of having an accident. It does not make it a certainty. Not by any means.

So as long as we equally prosecute all of those things that increases the odds of having an accident by the same percentage by the same punishment, I'm happy with a compromise. That means cell phone usage, arguing while speeding, etc. If it's as dangerous as X and society needs to intervene, it's as dangerous as X.

Of course, framing the issue this way brings up the great problem with DUI -- it's an emotional, moral issue that somebody wants the law to fix. We are "offended" by the drunk driver running over the orphan in a way that we are not by the cell phone user doing the same thing.

When people talk about "legislating morality", they are not talking about pulling words from some holy book and trying to make a constitutional amendment out of it. I wish that it were so simple. Instead, it happens when people of all faiths, including atheists, become morally outraged at some sort of behavior and seek to punish it in a way different from other behavior with similar effects on society.

I'll probably get downvoted into oblivion for this comment, but all I'm pleading for is a little dispassionate logic here. I fully understand this is a very emotional issue for lots of people. (And I sympathize with those people) In no way at all do I condone drinking and driving.

<comment><USER8> > Most drunk people drive fine for hundreds of trips.

I don't know that this is true, but even if it was I don't know that it's useful information in terms of minimizing harm, just as pointing out that _some_ people smoke their whole lives, live to be 90 and die in their sleep.

The devil is in the averages. The data shows that drunk drivers kill more people than sober drivers.

About the rest of your post, no downvote from me, you make a great point. You're right that society treats drunk driving as worse, but don't forget that texting while driving is a (relatively) new problem. Drunk driving used to be fine by society, and then values changed. Texting while driving is now undergoing a similar change, we're just much earlier in the process.

In principle you're right though, if texting while driving kills people (and it does) then we should treat that as aggressively as drunk driving.

Perhaps the difference here is that you can camp a bar, whereas it's harder to camp texters. ;)

</comment></comment></comment></comment></comment><comment><USER10> Considering that flashing your headlights to warn oncoming motorists of speed traps has been ruled by at least one court to be speech protected by the First Amendment, you have to think that an app like this would too.

<http://www.npr.org/templates/story/story.php?storyId=1493749>

If Congress or a state legislature tries to ban these apps, I think the laws will probably get overturned. However, if Apple decides that they think these apps are in poor taste and shouldn't be part of their ecosystem, I'm fine with that. They've blocked apps that are far less offensive to me.

The other interesting question is liability. If a driver were to use one of these apps to circumvent a DUI checkpoint and then kill or injure someone in a car accident, I wonder if the app maker (or Apple?) would bear some liability. I don't think that free speech would offer much protection in this kind of case.

</comment><comment><USER11> The application with 10,000,000+ downloads they are referencing is Trapster.

Trapster was designed from the ground up to be a platform for drivers to share relevant geo data.

The Trapster moderators have worked to curb DUI checkpoint sharing since its inception but users find ways around it.

So really this is a platform discussion - is it the platform's responsibility to proactively moderate the content?

If so doesn't that have wider implications for Twitter, Facebook, etc?

</comment><comment><USER12> It used to be that Danish police would tell the radio stations where they would conduct station people with radar guns to check for people driving too fast.

Since the goal was to prevent speeding, it didn't matter if they slowed down because they wanted to avoid a ticket so long as they slowed down.

These days they don't do so anymore because it is a nice way to pad government coffers, but it would be nice to build such an app.

<comment><USER13> I believe they still do this in the United States. At least, they did last I lived in north Florida.

</comment></comment><comment><USER14> Are they going to ask that browsers be removed from phones because they can be used to access web apps that might allow drivers to avoid police? Why don't we instead remove colossally stupid legislators from office?

</comment><comment><USER15> How much simpler it would be for Apple to simply follow the law instead of trying to devise its own set of rules...

Is the content legal? Then it's available on the app store. Is it illegal? Then it's not.

Does it offend some group or the other? It doesn't matter. Does it cause displeasure to a bunch of lawmakers? Tough luck.

But when Apple starts to pull apps that offend minorities, it has to take all those requests into consideration, and produce justification as to why it pulls this and allows that.

</comment><comment><USER16> this is stupid as hell! there are so many other freakN priorities than sending a letter like that to Apple or anyone. What's next? Are these senetors also going to write to radar or laser detector makers/companies too saying you guys shouldn't be making those devices? I don't drink and I don't condone drink and drive either. Here are the things the senetor should think of

1) If a person is so impaired to drive, he will be even more impaired to operate and understand an app on a tiny freakn device.

2) Maybe the police shouldn't setup any checkpoint. Instead the check should happen in random places on the street.

3) Think of legislation or creating better safety standards for Cars, so the manufacturers are forced device cars that can detect impairment of the driver and not start at all. This option can create more jobs, inovations, etc.

These morons are freakn shame to our democracy!

</comment><comment><USER17> The real problem with a closed app ecosystem is that once everyone realizes a tight control mechanism is in place, all the usual suspects (senators etc) are going to come around trying to claim some power for themselves.

</comment><comment><USER18> In the UK they got TomTom to remove the speed camera database from it's sat nav.

Instead there was a 3rd party site where you could download an updated database of accident black spots - the ones where they put speed cameras.</comment>


OpenSeadragon JavaScript zooming library turns 2.0, adds multi-image support - <AUTHOR> http://blog.iangilman.com/2015/05/openseadragon-20-forest-to-tree-zooming.html

<comment><USER2> The zooming is so seamless and the image quality is amazing. Its like VR but without a clunky UI and written in native JavaScript.</comment>


Mark Zuckerberg's Most Valuable Friend - <AUTHOR> http://www.nytimes.com/2010/10/03/business/03face.html

<comment><USER2> Mark Zuckerberg's most valuable friend is/was Sean Parker. Thanks to Sean, Mark retained control of the board, and thus was able to avoid the utter disaster of a $1b sale to Yahoo.

Sean got to see what happens when shortsighted VCs get control before (at Napster and then Plaxo); he's smart enough to not get screwed the same way thrice.

<comment><USER3> How did Mark retain control of the board specifically?

<comment><USER4> _"... Donald Graham, the chairman of the Washington Post Company, who once tried to hire Ms. Sandberg, says that in the last two years a lot of questions about Facebook's viability have been put to rest. ..."_

I'd argue that Zucks most valuable friend post Sean is Graham. Graham helped set the company up so control falls to the owner and not the board. The Washington Post is set up the same way. Facebook isn't going away till the founder wants it to.

<comment><USER3> So beyond just having the founder take up the majority of the board seats? I suppose one needs to first find investors comfortable to let this all happen.

<comment><USER2> You make it a negotiating point; you might have to accept lower valuation or other terms to protect investors if you push on board control. Being obviously brilliant, responsible, and experienced (Parker) goes a long way in those negotiations too.

</comment></comment></comment></comment></comment><comment><USER5> As a response to the movie, they know it would be a good time to put a human face in front of the press. Hence, they're pushing her forward rather than Zuckerberg. And the NYT slurped it up.

I wonder how long the back-and-forth over how the story was to be structured took.

[edit: I'm _not_ saying Zuckerberg is not human, just that he's overexposed in the media at the moment, and they need to connect Facebook to something else.]

<comment><USER6> I'm betting it's an overarching PR strategy that will be executed over the next few months. To try to fix Zuck's reputation by association, rather than directly.

</comment></comment><comment><USER7> Oh Jesus, can't we all stop gawking at Facebook bullshit? No one can figure out what Facebook is, but if you haven't succumbed to it, you're intimidated by it. It's worth billions of dollars and for what? The pure evil of having everyone's marketing data?

In the mindset of Rodney King, can't we all just move on? Can't we all just get past not being Zuckerberg? Can't we all get back to being hackers who do things because they make our minds happy?

<comment><USER8> Downvote the above if you will, but there is truth in those words, if only masked behind palpable bitterness...

...and honestly - I feel the guy.

We humans have a tendency towards the shameless worship of heroes. We seem to need to create legends and demigods and to praise and glorify acts that upon careful examination are little more than the progeny of good fortune and timing. Providence itself isn't worthy of our praise nor our consideration - which makes the ascension of men of 'lesser stuff' a bitter pill to swallow for those few 'in-the-know'.

I think back to first grade, and recall how desperately I wanted to be a scientist/composer/hero/great man/demigod. I had no idea what these things were _really_ , but in my mind, they were the people who _knew_ ; and what they didn't know they _sought_. They were the gatekeepers, arbiters, discoverers, and composers of knowledge, truth, and frankly most of what mattered. A few years later, when asked who/what I wanted to be when I grew up, beyond my father I could think only of Newton, Einstein, Maxwell, Bach, Beethoven, Chopin, et al...

My, how quickly things change. The pursuit of knowledge and beauty for its own sake is an ideal which has perhaps never existed, or existed in so few men as to have practically never done so. But we're waaay past that. A man not too long ago solved Fermat's Last, how many know his name without Wikipedia? What impresses us now? What is deemed worthy of our 'shameless worship"?A man not too long ago solved Poincare's; beyond the story about his rejecting a million dollars, who gave a shit?

No one. We save our shits for the pirates of Silicon Valley these days.

That, if I am ever blessed with a son or daughter, and they are one day asked in their youth who or what they want to become when they grow up, and in turn respond with Gates, Jobs, Zuckerburg, et al, we have all failed. And I, them.

<comment><USER9> That's one of the aspects of the HN community that I most dislike. It's like Puritan divine providence, but applied non-religiously to business. X succeeded so he/she must be great. HN sees these people as masters of business: smart, ambitious, persistent, etc. What if they were lucky? Unscrupulous? Manipulating? I'm not saying it has to be all one way or all the other, but I often think only one point of view gets seen here.

<comment><USER10> "Great minds discuss ideas. Average minds discuss events. Small minds discuss people."

\-- Eleanor Roosevelt

Completely agree, the name dropping around here can get tiresome quick. There was a great article on Mint vs. Wesabe posted here recently - in my opinion we need more articles like that and less Jobs is a design master/Zuckerberg is a genius/etc.

<comment><USER11> Eleanor Roosevelt didn't say that. From Wikiquote, which is slowly approaching authoritativeness on quotes online:

 _This has been quoted without citation as a statement of Eleanor Roosevelt. It is usually attributed to Admiral Hyman G. Rickover, but though Rickover quoted this, he did not claim to be the author of it; in "The World of the Uneducated" in The Saturday Evening Post (28 November 1959), he prefaces it with "As the unknown sage puts it..."_

<comment><USER12> <http://en.wikiquote.org/wiki/Eleanor_Roosevelt#Disputed>

Its still a nice quote regardless of who its attributed to.

</comment></comment></comment></comment></comment></comment><comment><USER13> I think a great deal of Facebook's recent, and coming, success is not just that Sheryl Sandberg was brought on, but when she was brought on. They allude to the rapid growth that Facebook has seen lately, but Mark Zuckerberg may not have been able to effectively handle that growth without her. She joined on at the crucially perfect time, which is a credit to both of them.

</comment><comment><USER14> Here's a cached version of the article for those of us without a nytimes account. [http://www10.nytimes.com.nyud.net/2010/10/03/business/03face...](http://www10.nytimes.com.nyud.net/2010/10/03/business/03face.html?_r=5&pagewanted=all)

</comment><comment><USER6> Great PR placement and spin about Mark Zuckerberg. Congrats to the PR agency!

</comment><comment><USER15> I think this will go down in history as one of the great working relationships in the technology industry along with Larry & Sergey and Jobs & Woz.

<comment><USER13> It also seems a bit like a Gates/Ballmer relationship as well: sharp hacker and a sharp MBA.

<comment><USER16> ..but with a sharp MBA.

</comment></comment></comment><comment><USER17> Is Donald Graham (Washington Post chairman / Facebook board member) related to Paul Graham?

<comment><USER18> If my XPath is correct, there are 168 people with the Graham last name that are noteworthy enough to merit their own wikipedia pages.

Either Paul Graham and his immediate family[1] have done well for themselves, or maybe, just maybe, it's one of the top 10 most common names for people from the British-Isles.

[1] <http://en.wikipedia.org/wiki/Graham_%28surname%29></comment></comment>


Ask HN: A day in the life of a programmer? - <AUTHOR>

I want to pursue a career in Web development and eventually software development. I've never seen it done in real life.
What's it like being a programmer day to day like the responsibilities from morning to afternoon what exactly would you do?
I want to know how programmers spend the entire day at the office. are there video examples of real world jobs where people code?
Someone tell me their day as a programmer. Thanks
I'm not too particular on what languages you use or frameworks but I'm getting into PHP web development if that helps. <comment><USER4> Varies widely, depending on where you're working, what you're working on, where in the development cycle you're at, what programming-related responsibilities your job includes, what your level of seniority is, etc.

Here's a typical day at a Japanese megacorp as a Level 3 Peon ^H^H^H Salaryman:

      8:55: Get into work, begin checking email.
      9:45: Most email to the outsourcing subsidiary is triaged.
      10:00: Planning meeting for project X
      11:30: It is over.  Begin working on bugs assigned in the tracker.

(Representative example: List of students assigned to a particular class has an off-by-one error resulting in there being one less student actually displayed in reports than the report says it contains.)

      12:55: Three bugs done, good job.  Break for lunch.
      1:30: Back from lunch.  Planning meeting for project Y
      2:30: Meeting over.  Meet with trainee for scheduled professional development lesson.
      3:00: First uncommitted time on the day.  Begin making progress on the quarterly objective.

(Sample objective: ~20 new features in our proprietary framework. We have a custom tag which we use in our Big Freaking Enterprise Java apps which lets us turn POJO collections into tabular data, but let's have it such that users can click on a particular row in the table and have that highlight the row, through the magic of Prototype.) Nobody will ask me about this for another three weeks so I have to pick the pace, being mindful to tread the line between looking like I'm busy but not being so productive as to make more senior engineers look bad.

      5:30 PM: Planning meeting.
      7:00 PM: Meeting over, quick break for dinner.
      7:15 PM: Eating dinner at desk.

I'm totally cashiered at this point but cannot socially speaking make a habit of going home this early. Accordingly, I sit quietly at my desk and make a show of working diligently. It is mostly for show. Everyone around me knows it is for show, much like them checking that I am diligently working is for show. These are _important_ shows.

      9:00 PM: Hit the first group of more senior salarymen going home.  Yay.  Almost done.
      9:30 PM: Apologize for my early departure.

Note that the above is _not_ crunch time in a Japanese megacorp, as you can see by me arriving and departing on the same calendar day.

Here's a day in the life of my consulting career:

      8:00 AM: Inbox triage for my own businesses.
      8:30 AM: Leave hotel.
      9:00 AM: Arrive at office.  Get coffee/cereal.  Consume them while reading client-related email.
      9:30 AM: Enough email for the moment.  Start working on Project Deliverable A.

Representative example: complete redesign of the front page (low-fidelity mockup) plus 2,000 words of copy plus 10 suggestions for the H1. These will be A/B tested against the existing front page.

      10:00 AM: Meeting with stakeholders for Deliverable C.  Representative example: email content for a free one-month mini course which they'll use to get more leads for the software.
      11:00 AM: Back to working on A.
      12:30 PM: Lunch, downstairs with team.
      1:00 PM: Meeting with stakeholders for Deliverable B.

Representative example: Implement a first-run experience of the software to handhold users through getting their account set up and running.

      2:00 PM: Tired of working on A. Investigate JS frameworks for B.
      4:00 PM: JS framework chosen.  Write down in notes.  OK, back to A.
      5:30 PM: Prep for tomorrow's meetings, check email.
      6:00 PM: Apologize for ducking out early.

There are still client team members working (and there will be until 7 PM or so in the evening, at least). I have, however, to go to a dinner that I had scheduled for 6:30 PM. (I _generally_ work such hours as are standard and customary for clients. At some clients this means I'm out of the office at 5 PM on the dot, at others it means a bit later. If "standard and customary" means "salaryman hours" at your office then at around 6:30 or so I just leave quietly.)

And what do things look like when I'm working on my own business (where, n.b., all of the products involve substantial amounts of code that I wrote)?

      7:00 AM: Wake up early for meeting.  It was canceled.
      9:00 AM: Breakfast with wife.
      9:30 AM: Catnap due to only having 6 hours of sleep.
      12:00 PM: Up again.  Business administration (moving money).
      2:00 PM: I should really be getting lunch now, but I'm on HN instead.
      3:30 PM: Will probably be done with lunch.  Start working on essay.
      6:00 PM: Probably done with essay, if the mood is right.

If not, I'd have task-switched to one of the other todos on my list. Of the top ten exactly one involves programming and that is under 100 lines of code.

      6:30 PM: Come home, play League of Legends a bit.
      8:00 PM: Dinner with wife.
      9:00 PM: Quick sweep of inbox for 20 minutes or so.

<comment><USER5> I have difficulty telling if your salaryman example is facetious.

Though, admittedly, as an American, even if I worked for a Japanese company, they would likely not treat me like that.

I do 40 hours. In crunch time, I work hard 100% of that - and I might work 45 hours tops. Then, I go home exhausted and sleep.

<comment><USER6> You're assuming people at Megacorps are working hard. They go home exhausted, but not because they exerted 100% of their mental capacity on solving problems for the company.

</comment></comment></comment><comment><USER7> I don't work in an office as all of my client work is 100% remote and usually short- to medium-term. I mostly program full time in Objective-C and work on a wide range of problems like image processing, audio, networked applications and more recently parsing, NLP and (non-game-related) AI.

1\. Wake up around 8, start working around 9.

2\. Respond to emails for ~30 minutes.

3\. Program for 7.5 hours, usually having lunch while working.

4\. Have dinner, spend time with family.

5\. Possibly program for another 1-3 hours. The late night stuff might be a side project (or more likely) the most complex part of the current project I'm working on.

6\. Rinse, repeat. Take weekends off and try to take a mental holiday to the largest extent possible (drink some craft beer, smoke some pot, play video games, go shopping, take the family somewhere, etc).

I get paid (relatively) large sums of money to solve (relatively) hard problems. The key to being successful in that is getting large blocks of uninterrupted time to work, and when the complexity of the problem warrants it, being able to get in a lot of extra time researching and trying out different things.

There is also some time getting on Skype with clients but I try to keep a steady stream of github activity / emails flowing their way so we don't have to kill too much time talking about the work we're doing. It's not that I don't like to talk to people -- once I get started it's hard to shut me up -- but I think meetings quickly become counterproductive.

I either work from home or from a local coffee shop. I have a (somewhat) high end headphone rig that gives me the privacy that I need. I drink coffee like water. I exercise a bit and try to eat as well / healthy as possible.

Dealing with burnout is a very real thing and I don't think it matters how disciplined you are. I come from a corporate / entrepreneurial background which granted me a "work before mental health" work ethic. I take what I do very (maybe too) seriously. Still, I find it entirely possible to push myself too hard then find it nearly impossible to re-engage. It's never the end of the world because I recover quickly (a couple days max) but it is something I have to be aware of. I often make breakthroughs burning the midnight oil but that comes at a cost.

Put another way, sometimes you feel like you could work through the night. Most of the time you shouldn't. You need to find a balance between getting things done short term and getting things done long term. There's definitely an art to it.

The life of a programmer will vary considerably based on what type of job they have of course but for me it's like the life of a writer or a composer (though I don't wow people at cocktail parties). I spend most of my time in mental solitude. I love what I do and it's lucrative enough that people generally don't think I'm insane for being as obsessed as I am.

</comment><comment><USER8> Woke up, fell out of bed

Dragged a comb across my head

Found my way downstairs and drank a cup

And looking up I noticed I was late

Found my coat and grabbed my hat

Made the bus in seconds flat

Found my way upstairs and had a smoke

And somebody spoke and I went into a dream

</comment><comment><USER9> Well, I'm working for an established international IT company. We are developing desktop, mobile and mostly web applications for well-known clients across the globe.

I am currently working on a huge (for us anyway) web project with 100+ people actively developing every corner of our infrastucture.

So my day is like: Arriving at the office around 08:30-09:00. On Tuesdays I have an inhouse English training with a native speaker, which means a couple of guys just talking about kind of everything.

After arriving/English training, I get myself something to drink from the kitchen, turn my workstation on and check on my mails which are typically not many, so I got through them under a minute. I fire up my dropdown console to fetch the latest changes on our develop branch (we use Git and GitHub), log into our issue tracking system and into the CMS we are using.

After that I start working on any task I have assigned to me. I put on my headphones, open Spotify, select a neat album I like at the moment and off we go to Sublime and Eclipse-lands.

I interact with testers, UI guys, squad leads, technical architects and other backend guys regularly via Skype. Our team consists of fellow Hungarians, British-Indians, Frenchmen and Belorussians, so it is pretty diverse. My day is usually about implementing new features and handing them over to the QA guys when done. We have a standup meeting at 2 PM when the team discusses the status of the stories which are in the scope of our current iteration.

We have a lot of fun during the day, joking around while coding. I always bump into coworkers in the hallway or in the kitchen and we usually have a little discussion.

On Thursdays we have a so-called "Beer Lesson" at a local pub where a couple of guys from the office and anyone interested get together to have some drinks and speak English only with the guidance of our English "teacher".

</comment><comment><USER10> Usually, the bigger the company, the more time is spent trying to get uninterrupted time to program. When the company is smaller you get as much time as you like to program. This is because there are a lot less people you have to communicate with.

So at 200+ companies. Half of your work week is dedicated to just constantly communicating what you are doing. (Everyone must know everything all the time).

At smaller companies, you tell the one person you work with what you are doing and thats pretty much it for the week.

Everyone's mileage will very but this has been a pattern I have seen in the industry.

<comment><USER11> My experience matches this observation. Working with a much larger company as a vendor, the difference becomes magnified (e.g. LargeCo wants meetings meetings meetings all the time, even when the same information could be communicated in an email to all concerned parties).

</comment></comment><comment><USER12> All programming jobs vary widely, from scenes straight out of _Dilbert_ to ones from _The Social Network_.

That said, here's a typical day of a regular programming job:

9:30am - show up (10:30am in California)

9:30-10:15am - read last night's emails. Emails topics include group messages from executives, vague questions from sales/marketing/QA, help questions from other developers, plans and deadlines from your manager, and about 300 automated messages from dev bots you'll never read.

10:15-11am - reply to some emails and fix misc issues in code and build systems.

11am-11:30am - team meeting to discuss goals and deadlines.

11:30am-12:30pm - read the news and rally the troops to eat lunch.

12:30pm-1:45pm - <USER2>

1:45-2:00pm - read the news

2:00pm-6pm - actual work (including programming some new features, fixing bugs, setting up builds/releases, testing, researching issues on the web, reading/writing wiki pages). Special note: if your job is bad, this time will never be available to you and you'll be in meetings or filling out forms for IT/accounting.

</comment><comment><USER13> Really depends on where you work and what you're working on.

Sometimes it's 50/50 documentation and coding. Other times it's close to 100% coding/bug fixing. If you're at an awesome company, it can be: 75% coding, 10% task tracker fiddling, 15% StarCraft2.

Side note: Having the ability to listen to music is a must for me and has never been an issue.

From my experience the day to day is usually a mixture of:

      Fiddling with Task/Bug tracking software.
      SCRUM meetings.
      Design meetings.
      Documentation.
      Coding.
      Design.
      Talking to clients/other team members/people.

This will vary depending if you're working on something new or supporting/improving an existing product.

All in all software devs have it pretty easy, if you're too stressed out or not enjoying your work ( for an extended period of time, obviously there are deadlines and things that come up that need to be dealt with ), start looking around, there's plenty of work and competition.

</comment><comment><USER14> Yes, my day starts with 11 AM and ends usually at 9 PM and after dinner spend some time for an hour learning any new things.

11 AM - Check email, reply 11:20 AM - Start the tasks in the current sprint. We do have a weekly sprint (Every thursday release) 2:30 PM - Lunch 3 PM - Discuss with team for any clarification / issues / improvements in current sprint 3:30 PM - Work towards the sprint 8 PM - Report to our CTO to test the day's work 8 to 9 PM - Amends / improvement - Do quick fixes and mark it down to JIRA 9:30 - <USER3>

After 10 PM - Learn anything new / Work on passionate projects / ideas

Between would go through twitter at early morning like 8 to 9 AM

Yes, I am working in PHP web development projects. I use both Git / SVN for re-visioning depending on the project. Just that you know how a fellow PHP developer day would be :)

</comment><comment><USER11> My day is split roughly as follows:

5% - Morning developer scrum meeting.

10% - Email.

65% - New product development and ongoing product feature development.

15% - Support-related bug fixing.

5% - Client meeting calls, product planning meetings.

I'm 9 to 5 working at a PHP web development startup. The 9 and the 5 vary as needed but I'm almost always home for dinner.

(PS: We're hiring if you're any good and willing to relocate to Cleveland!)

<comment><AUTHOR> can you tell me more about the 65% - New product development and ongoing product feature development. :)

<comment><USER11> Coding. Essentially, time spend in a text editor / browser window combo, developing new features and new products. Recently I've been working on mobile apps so there is also a bunch of testing on the device as needed. I personally use gedit but our developers use whatever OS and text editor they find most productive. Bunch of people here like SublimeText. Chrome is universal, though we test on other browsers when appropriate.

Your language breakdown really depends on the job and the project. If I'm working on a web app, I do about 50% PHP and 50% "frontend" (i.e. HTML / CSS / LESS / Javascript / Backbone / jQuery etc.). If I'm working on a mobile app, since we don't have a serverside language available, the frontend work shifts up (and any heavy processing / database usage we need ends up as an API on our server). There's also some Node.js sprinkled in there for worker scripts and queue processors.

</comment></comment></comment><comment><USER15> Have you spent some time writing your own programs or writing programs for school, sitting at a machine, working on code? That's what a lot of it is like. You can expect to spend lots of time on code written by somebody else, fixing it or adding to it. The rest of the time is meetings and bureaucratic stuff. Sometimes you can goof off with coworkers. But if you've spent a lot of time in front of a computer, that's pretty much it.

</comment><comment><USER16> My experience is very similar to that of Charles Bloom:

[http://cbloomrants.blogspot.co.uk/2013/10/10-04-13-reality-o...](http://cbloomrants.blogspot.co.uk/2013/10/10-04-13-reality- of-coding.html)

</comment><comment><USER17> This is the experience I had as a newbie [http://hkelkar.com/2011/04/09/48964049/](http://hkelkar.com/2011/04/09/48964049/)

</comment><comment><USER18> Typical: you sit behind a computer screen 80% of the day. The rest is spent in meeting rooms without windows.</comment>


How A Tuxedoed Sommelier Wound Up Homeless in California - <AUTHOR> https://www.nytimes.com/2019/09/28/us/homeless-san-francisco.html <comment><USER2> Tldr: he got addicted to cocaine, got fired from his job because of his drug problem, and turned to a life of crime to feed the addiction.

<comment><USER3> Also, he's a Sommelier in California... Can't swing a bottle of Pinot down there without hitting at least one Sommelier.</comment></comment>


Washington Post has been hacked Again by SEA (syrian electronic army) - <AUTHOR> https://thehacktimes.com/washington-post-has-been-hacked-by-sea/

<comment><USER2> Washington Post, the major news site that still doesn't use HTTPS encryption.

<comment><AUTHOR> hilarious . . . no wonder they been hacked for 2nd time as public knows</comment></comment>


The man behind the essential geek travel guide - <AUTHOR> http://news.cnet.com/8301-13772_3-20008257-52.html?tag=newsLeadStoriesArea.1

<comment><USER2> Cover blown. Now HN knows what I look like.</comment>