Safe from what? - <AUTHOR> http://www.daemonology.net/blog/2015-09-02-safe-from-what.html <comment><USER2> I use a similar approach when talking about making something "safe" or "secure". Against what?

My front door is locked. That will probably keep out the neighborhood teenagers who might be wandering around looking to grab a laptop off of someone's table. It wouldn't keep out a burglar with the minimal skill of "kicking down a door". But the obvious adult activity inside of the house serves as a fine deterrent in that case. A group of 3-4 armed criminals might not be kept out by a few unarmed people, but sturdy steel doors with heavy deadbolts, barred windows, an alarm system, and armed residents could be adequate in that case. But that wouldn't keep out a military attack force; I'd need my own army for that. But since there's nothing in my home that would be worth sending an army for, that's an unnecessary level of security.

The point of security measures is to make it more costly for someone to break in than it's worth for them, while simultaneously making it less costly for the consumer to gain that level of security than a successful attack would cost.

What type of threat does an attacker pose? What could they gain access to? What are the potential damages? What's the cost of mitigation? Your chosen strategy should be based on the answers to those questions.

<comment><USER3> > _since there 's nothing in my home that would be worth sending an army for_

Things get a bit hairy when every municipality has a SWAT team who might or might not know exactly which house contains a drug dealer.

Security on the internet is even hairier. When data that was originally collected for benign purposes can be aggregated and repurposed in all sorts of other ways several years down the line, it becomes difficult to tell whether you're dealing with neighborhood teenagers or an army.

<comment><USER4> So, are you more likely to be killed by the SWAT team than you are likely to be killed by the drug dealers? If the former then such SWAT teams should be deployed with much more restraint.

<comment><USER5> Better safe than sorry...

/s

</comment></comment></comment></comment><comment><USER6> The article was so calmly and with such a good description of risk that it actually felt weird to me. Its just so common to get stories so deeply committed to "If it saves just one child's life..." without considering the costs and risks of some proposed solution.

<comment><USER7> This reminds me of a sketch by Mitchell and Webb (a pair of British comedy actors). It is a satirical news broadcast, in which Mitchell points out that the fact that there was not a single death from drowning in the local region proves that too much money is being spent on anti-drowning measures.

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

</comment></comment><comment><USER8> I like that it was brought back to "risk," but it seems like the argument is using semantics to obfuscate that the thesis is essentially, "So what if someone can access an always-on microphone in your house?"

The headline as I see it now is "Several baby monitors vulnerable to hacking," which is more descriptive than the given "Is your baby monitor safe?" but wouldn't have made as succinct of a headline.* Would the same post have been made if the headline were "Is your baby monitor private"? If it's not private, that'd be news to me, even if all somebody gets to overhear is "Goodnight, Moon" for the 10,000th time.

*I'm not saying "hacking" is a good word either, because that can mean a lot of different things, including "make the thing blow up."

</comment><comment><USER9> Modern baby monitors include live video feeds -- which are disappointingly often connected to the internet without any authentication required (e.g. [http://www.kttc.com/story/28712087/2015/04/03/rochester- fami...](http://www.kttc.com/story/28712087/2015/04/03/rochester-family-finds- their-nanny-cam-hacked-for-the-world-to-see)). Others have two-way audio and similar nonexistent authentication ([http://www.forbes.com/sites/kashmirhill/2014/04/29/baby- moni...](http://www.forbes.com/sites/kashmirhill/2014/04/29/baby-monitor- hacker-still-terrorizing-babies-and-their-parents/)).

Presumably the current news interest in baby monitors is whether they're safe (or which models are safe) from people using simple Google or Shodan searches to find these devices and use them to annoy or snoop on you, since that's exactly what's been happening.

Anyway you're imploring the media to do something it doesn't do -- to be more technical and less alarmist -- which is admirable but probably also futile.

</comment><comment><USER10> "The role of a headline isn't, no matter what tabloids might suggest, to convince people to read an article; the role of a headline is to help readers decide if they want to read the article."

And what a wonderful utopia that would be.

<comment><USER11> By and large, this does apply to traditional dead-tree newspapers. And it makes sense: When the reader has already bought the newspaper, helpful headlines are better because they contribute to an impression of higher quality leading to repeat purchases.

Just another example that you can get results that sound like "utopia" by enabling the right business model.

<comment><USER12> I don't quite see why that's any less applicable to digital media.

<comment><USER11> In principle, it is just as applicable. And indeed, the headlines in my newspaper's digital subscription aren't clickbait-y either.

It's just that the structure of digital media tends towards article-at-a-time rather than issue-at-a-time or even subscription consumption. For this reason, the structure is naturally geared toward clickbait-y titles everywhere, while in traditional print media the temptation for "clickbait" is mostly restricted to the title page.

</comment></comment></comment></comment><comment><USER13> With today's clickbait I would have thought they would have gone with "Baby monitors kill" or "Children attacked by baby monitors".

<comment><USER14> "Parents install a baby monitor. You won't believe what happens next!"

</comment></comment><comment><USER15> "Anyone can peer through your baby monitor"

See, CBC, just as alarmist and as factual as the author would prefer!

Fact is, the headline _is_ intended to get you to stop and change your focus on this story so the news outlet can sell your eyes to whatever advertiser they promised you to. Let's not be naive.

</comment><comment><USER16> _What does it mean for a baby monitor to be safe?_

 _Of course, if you 're building a product or supplying a service, you should be concerned about any attacker and any outcome which your potential customers could plausibly be worried about [...]_

The article starts pointing out that the question makes no sense and then gives a sensible interpretation of what it could mean to talk about safety without qualifications. I didn't read the CBC article but it seems at least possible that it talks about all the issues anyone could possibly be concerned about.

</comment><comment><USER17> I agree that the title of the article in question gives little useful information. I read the article just now, however, because I decided I really wanted to know the answer to "safe from what?" It turns out that the only issue of much real security concern is that an attacker could gain access to your network by attacking a networked attached baby monitor. Beyond that, the article was as vague as the headline on what the actual impact of a compromised baby monitor would be (very little, I suspect).

</comment><comment><USER18> I can easily think up a still clickbait title that satisfies this: "is your baby monitor safe from strangers' eyes?"

Anyway, the reason they don't give a figure of merit or context is because infinity is a good limit since it will never be reached. You can't beat an ideal, so they can easily circumvent Bettridge's Law by forcing you to affirm their sentiment, although to a useless question.

</comment><comment><USER19> Adding to the discussion about baby monitor: I recently set up a wireless printer in my house. Now, this printer calls home to HP. So the internal security of my home network is no better than that of HP...</comment>


Ask HN: Self-Funded One-Person Business (Website or Software) - <AUTHOR>

Where can I find a list of successful self-funded one-person businesses for inspiration?<p>Thanks in advance! <comment><USER2> Are you asking for bootstrappers or serial enterpreneurs?

Gabriel Weinberg is an oft-quoted example, but he had money from his prior startup:

<http://en.wikipedia.org/wiki/DuckDuckGo>

<comment><AUTHOR> GFischer: duckduckgo is a good example, and I like his blog <http://www.gabrielweinberg.com/blog/>

</comment></comment><comment><USER3> [http://www.softwarebyrob.com/micropreneur-academy-product- sh...](http://www.softwarebyrob.com/micropreneur-academy-product-showcase/)

<comment><AUTHOR> drwerv, thanks!

</comment></comment><comment><USER4> Check out the HN profiles of people that make interesting comments. You'll start to notice a whole lot of self-funded one-person businesses in there.

<comment><AUTHOR> dangrossman, that is true. I thought it would be nice to have a place putting them together.

</comment></comment><comment><USER5> What are you thinking about doing?

<comment><AUTHOR> sixQuarks, I am just looking for some successful stories for inspiration.

</comment></comment><comment><USER6> I believe Instagram is one

<comment><AUTHOR> steventruong, thanks! pinboard.in is a good one too.</comment></comment>


How to help someone use a computer. (1996) - <AUTHOR> https://pages.gseis.ucla.edu/faculty/agre/how-to-help.html <comment><USER2> Excellent pedagogy, distilled into sensible bullet points. Applicable far beyond computer-use, which is really just an example.</comment>


Data URIs make CSS sprites obsolete - <AUTHOR> http://www.nczonline.net/blog/2010/07/06/data-uris-make-css-sprites-obsolete/ <comment><USER2> Jammit is a Rails plugin and command-line tool that uses this technique, along with MHTML for IE 6 & 7, and compresses JavaScript as well.

<http://documentcloud.github.com/jammit/>

The big advantage here over spriting is not having to deal with the complexities of trying to jam repeated background patterns into sprites, and having to compute pixel offsets for your CSS rules. You can just write your CSS as you normally would, and have the plugin generate appropriate versions of your stylesheets before deploying.

If you'd like to see a demonstration of the speed difference it can make, here's a page that loads 100 small individual images:

[http://jashkenas.s3.amazonaws.com/misc/jammit_example/normal...](http://jashkenas.s3.amazonaws.com/misc/jammit_example/normal.html)

And here's the same page, using a single CSS file with data-URIs for all the images.

[http://jashkenas.s3.amazonaws.com/misc/jammit_example/jammit...](http://jashkenas.s3.amazonaws.com/misc/jammit_example/jammit.html)

<comment><USER3> Considering CSS sprites were something that dhh mentioned as putting into Rails 3.1, maybe you should see if you can just get that moved into Rails core, before the sprites work starts.

<comment><USER2> Great suggestion. I presume they'll want to roll their own solution (hopefully taking advantage of existing gems like ruby-yui-compressor and closure- compiler). But I'll open a ticket for it.

<comment><USER3> > I presume they'll want to roll their own solution

I have yet to contribute to rails-core, but generally, they don't accept feature requests, they only accept patches. Even if you end up replacing the 'back end' of it with something else, maybe your code would give the feature a head start.

</comment></comment></comment></comment><comment><USER4> mmh... there are two kinds of overhead associated with using data URLs.

One is that encoding arbitrary binary data using base64 will increase the size of the data by around one third, so you will transmit more data.

Of course, if you do the caching headers right, this applies only to the first connection.

The other overhead you have to pay for every time: The data has to be base64 decoded before it can be used. Depending on the amount and size of images and depending on the type of implementation in the browser, this can require a significant amount of resources.

edit: In addition I wonder whether browsers cache the base64 decoded output between page loads. If you are really unlucky, the decoding might be done on every page load. Also, I'm not sure how browsers would handle identical data- content in multiple CSS rules: Do they keep multiple copies of the same image in memory? Or do they detect identical data and keep only one image around?

I would do some tests before blindly applying this.

<comment><USER5> _The other overhead you have to pay for every time: The data has to be base64 decoded before it can be used._

Compared to decompressing the PNG or JPEG data, decoding base64 is essentially free. It will therefore also not matter much at what stage it's cached.

<comment><USER6> Maybe. The JPEG decompression has been mercilessly optimized for decades.

The oddball base64 URI decode might have been done by the team's crappy coder that no one trusts, but you can write decent test cases for base64 decoding, so you can burn his hours for a few weeks without him doing any lasting harm to the code base.

</comment></comment></comment><comment><USER7> Ideally, in my opinion, when the browser makes a request for example.com/something the server should send a continuous stream of data. It could work something like this:

1) The browser sends the request along with a list of files it already has cached (maybe a special type of cache that never expires so the browser would know that it wouldn't need that file ever again).

2) Then web server sends the actual HTML that needs to be rendered, followed by whatever files the browser may need (css, js, images, etc). The browser would know where the HTML block starts and where other pieces begin, so from its point of view it's the same as if it requested those pieces. The difference is that the server anticipates these requests and sends them along all in one batch. The very first piece would be a list of files the server is sending, so the browser would know what to expect. At the end of the stream, if there are any more files that are needed that haven't been included in the main stream, the browser would just request them as usual.

Doing something like this would effectively render most page accesses to a single request, going from 10 or more requests to a single request would have quite a bit of an impact. For this to work though, both the browser and server would need to support such a feature...

<comment><USER6> Yes. HTTP/1.1 arranged for this with _pipelining_ 11 years ago.

But there were servers that thought they supported pipelining and had corruption issues, so the clients got scared and wouldn't use it. (Besides, the modems on the edge of the web were the problem, not the latency.) Then the proxy people said "Why bother? No one uses it.", and the clients continued to not implement it, or did but left it off by default with a switch to turn it on in a disused lavatory, behind the "Beware of the Leopard" sign. Meanwhile, the server people having run out of useful and useless features to add to their vast code bases actually got around to making pipelining work correctly.

Welcome to 2010.

• Most popular web servers support pipelining, probably correctly.

• <1% of browsers will try it.

• Proxies (firewall and caching) largely break it.

• If you are using scripts that can change the state of the web server, then your head might explode when you consider what happens with pipelined requests.

<comment><USER8> Pipelining is not enough even if the internet infrastructure was perfect. Why?

1\. Slow requests stall the entire pipeline. 2\. The initial request stalls the pipeline. 3\. The pipeline is being pulled instead of pushed so your performance is still roundtrip-lag-bound if you have cascading references. For example an HTML file references a .css file which references PNG costs 3 round trips at least.

<comment><USER6> True, if latency dominates that much in your situation, which can happen with no congested pipes in the path. An HTML5 "manifest" with pipelining would take care of all but the initial and 2nd latency.

</comment></comment></comment></comment><comment><USER9> For me, CSS3 transitions like background fades (.2-.3sec) killed sprites. They just don't work together.

Some zooming browsers also mess up sprites on the edges at certain zoom levels.

</comment><comment><USER5> One downside that hasn't been mentioned so far, as far as I can tell: the conflict between caching and downloading unneeded image data.

If you use image 1 on pages A & B and not page C, but image 2 on pages A & C but not B, you face a dilemma.

\- If you stuff it all in one big CSS file, visitors to B (C) will download image 2 (1), even though it's never shown.

\- If you split the CSS in 2, with A including both and B & C including only one each, you'll have an extra request in A, and require duplication or a third file if B & C share style rules

\- If each page serves its own CSS file, you have only 1 request but it (and the image data) won't be cached across pages.

This restricts this technique to images that are used all over the place or images that are tiny.

<comment><USER10> You would have exactly the same issue when applying CSS sprites... the only difference here is including the image data in the CSS file rather than a separate sprite file - removing the need for another HTTP request.

<comment><USER5> True, good point. (leaving aside the tiling subtleties, anyway)

</comment></comment></comment><comment><USER11> Jammit, the rails asset packaging plugin has had the option to do this for a while:

<http://documentcloud.github.com/jammit/>

</comment><comment><USER12> I believe stylesheets must be downloaded first before any further rendering can be done. Therefore you block rendering until all images have finished downloading, while a traditional external image sprite can be downloaded asynchronously.

<comment><USER13> This Yahoo post thinks that stylesheets don't block the browser, typically: [http://developer.yahoo.net/blog/archives/2007/07/high_perfor...](http://developer.yahoo.net/blog/archives/2007/07/high_performanc_4.html)

</comment></comment><comment><USER14> The problem I see, is that if you change a single line in the stylesheet, the client has to re-download all images - nothing is cached.

<comment><USER14> I'll add... it really makes sense for mobile/webkit where you can depend a lot more on CSS3 and most images are small icons or tiles. I've seen Apple use it a lot in their mobile web apps.

</comment></comment><comment><USER15> FYI: the compass stylesheet authoring framework makes it drop-dead easy to work with data-uris in your stylesheets: [http://compass- style.org/docs/reference/compass/helpers/inli...](http://compass- style.org/docs/reference/compass/helpers/inline-data/#inline-image)

</comment><comment><USER16> Holy crap is that ever a slick technique.

And the ie6/7 stuff isn't much to worry about, either - you can just use conditional comments to include a traditional CSS Sprite-based file if ie6/7 is detected.

Yes, it means more overhead, maintaining two versions of your CSS file, but the improvements in speed might be worth it.

<comment><USER17> I seriously doubt it. You only remove 1 extra request with this technique. The main advantage is that you don't have to maintain a sprite image (but using this without some tool would also be cumbersome).

IMHO one saved request isn't work doing the same thing twice. And MHTML ([http://www.phpied.com/mhtml-when-you-need-data-uris-in- ie7-a...](http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and- under/)) doesen't come as a saviour either, as you have to duplicate all images in the CSS, which increases the size of the CSS significantly (if it doesn't you are probably better off using "old fashioned" techniques.

<comment><USER4> in defense of the technique: Parsing an existing CSS file, extracting the images, base64-encoding and embedding them is something that's very easily done programmatically and a script that does this on deployment is very easily created.

Assembling a huge sprite image and emitting offsets is harder. Still very doable though, of course.

<comment><USER18> To automatically assemble a huge sprite and emit the offsets is also easy.

Game engines has done this for almost 20 years.

<comment><USER5> One additional downside is that sprite atlases are annoying when you need to tile the image. Vertically repeating images can't be in the same atlas as horizontally repeating ones. X+Y repeats each need to be in a separate image altogether.

I'm also wondering if, to correctly emit the offsets in CSS attributes in all cases, you'll require some manually inserted placeholders.

</comment></comment></comment></comment></comment><comment><USER19> Mobile browsers tend to do less caching, won't cache larger files, and don't caches files for as long. Doing an end-run around their image caching seems prone to cause problems.

Has anybody tried this technique on a mobile browser, say Mobile Safari on iPhone, to see how it stacks up?

</comment><comment><USER20> Is anyone else but me worried about the legibility of the CSS with Data URIs? I mean, I can see how it can be useful, but I think the code is more readable with "spritesheet.png" than with: iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0 vr4MkhoXe0rZigAAAABJRU5ErkJggg==

Now if only there was a way to define a data URI in a similar manner to @font- face. Maybe @data-object or something like that.

<comment><USER21> I certainly wouldn't write it inline in the CSS. I'd use a preprocessor to keep the style itself readable and have the base64 inserted for the deployment version.

I personally like Sass, but for this purpose CPP or a knocked-together Ruby script would be just as good.

</comment></comment><comment><USER22> It would be useful to see a matrix of browser/version support for data URI's embedded in external stylesheets along with anticipated support in future versions.

</comment><comment><USER23> With data URIs, using the same image in two different CSS rules will result in two instances of the base 64 representation of the image in your CSS file. There are workarounds...none are pretty though. MHTML does not have this problem. In fact, in some ways I think MHTML is a more elegeant format for asset delivery.

</comment><comment><USER24> As I remember when a sprite was a hardware assisted moving image on a screen, I really dislike how this term has been adopted. The fact that it uses a section of a large image does not make it a 'sprite'.

<comment><USER25> A sprite is just a 2D image. Animation in old 2D games would usually store several frames of animation in a single image, similar to the current use in CSS.

<comment><USER24> So, where's the relation to animation here? I know what a sprite is, thanks. It sounds like you might want to go read the Wikipedia page, on the other hand.

<comment><USER26> _In computer graphics, a sprite (also known by other names; see Synonyms below) is a two-dimensional image or animation that is integrated into a larger scene._

<http://en.wikipedia.org/wiki/Sprite_(computer_graphics)>

This dates back to the Commodore 64, that said do we really need to down vote this guy so much. He was misinformed. This doesn't mean we have to be vindictive.

<comment><USER24> I still think it is all the 20 year olds who have never programmed or used a system with hardware sprites that have no idea what they're saying, but I do appreciate the generous sentiment. Sure, if one is perceived to be wrong AND jerky and insistent about it, as I was, people tend to downvote your comment.

Anyhow, it's just terminology. I still hate it.

</comment></comment></comment></comment></comment><comment><USER27> Cappuccino builds this idea in: [http://cappuccino.org/discuss/2009/11/11/just-one-file- with-...](http://cappuccino.org/discuss/2009/11/11/just-one-file-with- cappuccino-0-8/)</comment>


Zig Programming Language 0.1.1: First beta release - <AUTHOR> http://ziglang.org/download/0.1.1/release-notes.html <comment><USER2> I think it's great people keep experimenting with new languages. Sure many will die off and be forgotten, but the people involved will learn and create. If we keep waiting for someone else to make the perfect language we'll never get anywhere.

I like how error handling is structured, though I'm undecided on if I prefer a specific case of a more extensible system. Pretty sure it's right for 80% of cases though.

</comment><comment><USER3> There are two really interesting ideas in Zig that I'd like to find in Go:

\- The %% operator and the %return expression used to simplify error handling.

\- The concept of compile-time parameters used to implement generic functions and generic data structures.

<comment><USER4> I don't mean to troll here. Aren't generics officialy excluded forever from Go lang roadmap? I'm not following Go much, but that's what I recall from months ago.

<comment><USER5> I think they are still open to it, in a very sceptical way. Basically they are asking [1] the public/users for papers/documents/articles/blogs, describing the use cases of generics in Golang. How would they use it? Why is it required (as in can you not do it easily/better without generics)? Stuff like that. They basically aren't convinced that generics is something they need/want in Go, but if the users can convince them, they will still go for it in the future of Go.

[1]: [https://blog.golang.org/toward-go](https://blog.golang.org/toward-go)

       "I'm focusing today on possible major changes, such as
       additional support for error handling, or introducing
       immutable or read-only values,
       or adding some form of generics,
       or other important topics not yet suggested.

       We can do only a few of those major changes.
       We will have to choose carefully."

<comment><USER6> I find it interesting that they're asking the community what the use cases for generics are, when internally Go does support generics for its built-in collection types...hmmm I wonder why?!

Maybe because it provides compile-time type safety and reduces the amount of boilerplate that would otherwise be required. Yet they can't see the usefulness outside of this single case?

Seems disingenuous to me.

<comment><USER7> Basically it allows for any Gofer on HN and similar forums to defend the idea "they are working on it" without any actual visible action.

</comment></comment></comment></comment></comment><comment><USER8> Well, it certainly looks ambitious. But... It's not very pretty? Looks a bit like an unholy union of TeX and C?

[https://github.com/zig- lang/zig/blob/master/example/cat/main...](https://github.com/zig- lang/zig/blob/master/example/cat/main.zig)

<comment><USER9> Handling every possible error in a clear way isn't pretty, but somebody's gotta do it.

<comment><USER8> But do you have to use so many percentage signs to handle all the errors? :)

<comment><USER9> This is the ugliest thing about zig. Can you come up with a better proposal to capture the semantics? I'd love to see it. I've tried and this is the best I can do.

<comment><USER10> A keyword maybe?

For unary case:

      // original:
      %%io.stdout.printf("Hello, world!\n");

      // my favorite ideas:
      try io.stdout.printf("Hello, world!\n");
      dare io.stdout.printf("Hello, world!\n");
      // others:
      err io.stdout.printf("Hello, world!\n");
      ex io.stdout.printf("Hello, world!\n");
      bet io.stdout.printf("Hello, world!\n");
      bid io.stdout.printf("Hello, world!\n");

For the binary operator:

      // my favorite ideas:
      a yet b
      a odd b
      a but b
      a ex b // extra or except
      a err b
      a bail b
      // others:
      a else b // Would overloading the meaning have sense?
      a esc b // escape
      a alt b // alternate
      a aux b // auxiliary
      a sub b // substitute
      a prox b // proxy
      a then b
      a eor b // error or
      a repl b // replacement
      a supp b // supplemental
      a %or b

<comment><USER9> These are good ideas. we also need alternatives for these :

%defer %return

<comment><USER10> Some may fit previous propositions.

For %defer:

      error defer deallocateFoo(foo);
      but defer deallocateFoo(foo);
      ex defer deallocateFoo(foo);
      failsafe deallocateFoo(foo);
      bail defer deallocateFoo(foo);

For %return:

      fn doAThing(str: []u8) -> %void {
          const number = try parseU64(str, 10);
          // ...
      }

"try" could mean "return an error in case of an error" aka "%return". Then "dare" could mean "panic in case of an error" aka "%%foo();".

Or use "ex" or "but" everywhere:

      ex foo();
      const num = foo() ex 42;
      const num = ex foo();
      ex defer bar(baz);

      but foo();
      const num = foo() but 42;
      const num = but foo();
      but defer bar(baz);

<comment><USER11> Ex sounds a lot like example, rather than exception.

I really like the use of keywords, leveraging our extensive understanding and intuition of language to make a language more clear and intuitive.

Symbolic operators work well if they are borrowed from math (e.g. third grade), making up new ones often results in a painful learning phase.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> So why would I be interested in Zig rather than Rust, if I'm trying to replace C code with something safer and more modern?

<comment><USER9> [https://github.com/zig-lang/zig/wiki/Why-Zig-When-There- is-A...](https://github.com/zig-lang/zig/wiki/Why-Zig-When-There-is-Already- CPP%2C-D%2C-and-Rust%3F)

<comment><USER13> Lack of operator overloading limits the audience of a language to non- numerical applications (e.g. no gamedev).

<comment><USER9> One counter example: [https://youtu.be/rX0ItVEVjHc?t=589](https://youtu.be/rX0ItVEVjHc?t=589)

<comment><USER14> In that video he just said that operator overloading was good for math operations. That's not a counter example.

<comment><USER15> even for math operations, "we'll let it go" would seem to be a different sentiment than "good". :)

</comment></comment></comment></comment></comment></comment><comment><USER16> Congratulations Andy, I've seen you working on this for a long time and am very impressed by the rigor it takes to release a language this large on your own. I look forward to seeing cool projects built in Zig!

</comment><comment><USER17> Congrats on the release! Zig is not my cup of tea, but I'm glad it exists. I still owe you a full review sometime, Andy. Never enough hours in the day.

</comment><comment><USER18> Syntax looks almost exactly like Rust with some elements from Go and D.

What about memory management ? They say there is no GC so manual memory management? Any memory safety features ?

<comment><USER19> The "defer" statement makes it easy to ensure important code gets run once even if there are multiple returns (along with %defer for error cases). That covers at least 95% of fiddly manual allocation problems -- the kind of thing RAII helps you avoid in C++, or "using" in Python and C#.

<comment><USER20> Deallocating/RAII is not memory safety. Leaking all memory is, in fact, a tried-and-true way to get memory safety (GC'd languages are semantically doing this: GC is "just" an optimization), since it means problems like use-after- free are impossible. Memory leaks are great to eliminate, but they can't lead to the corruption that memory unsafety can cause. [http://huonw.github.io/blog/2016/04/memory-leaks-are- memory-...](http://huonw.github.io/blog/2016/04/memory-leaks-are-memory-safe/)

Rephrasing the parent's question: does Zig try to ensure memory safety (e.g. no use-after-free, dangling pointers, iterator invalidation, data races)?

<comment><USER21> Zig + borrow checker is my ideal language

<comment><USER22> Maybe look at the language that inspired Rust: Cyclone [http://cyclone.thelanguage.org/](http://cyclone.thelanguage.org/) . It's just a research language (which the site claims is "done") but maybe worth a look.

<comment><USER21> Seems pretty cool, too bad it's dead now though

</comment></comment></comment></comment></comment></comment><comment><USER23> the reference to a 5-bit number in the intro was intriguing; i don't think i've ever seen a language that would support that (maybe pascal with type subsetting).

this seems to be the best description of it: [http://andrewkelley.me/post/a-better-way-to-implement-bit- fi...](http://andrewkelley.me/post/a-better-way-to-implement-bit-fields.html)

<comment><USER24> Common Lisp allows integer types of however many bits you want using SIGNED- BYTE and UNSIGNED-BYTE (don't let the names confuse you; a byte isn't necessarily 8 bits):

        CL-USER> (the (unsigned-byte 5) 31)
        31
        CL-USER> (the (unsigned-byte 5) 32)
        ; Evaluation aborted on #<SIMPLE-TYPE-ERROR expected-type: (UNSIGNED-BYTE 5) datum: 32>.

</comment></comment><comment><USER25> Andrew Kelley makes some great projects! Some other ones are the libsoundio cross platform playback/recording library and the genesis DAW.

</comment><comment><USER3> Andy, is it a coincidence or have some features of Zig been inspired by Go? More specifically: defer, the syntax for the array type with [] as a prefix instead of a suffix, and the syntax for array literals.

<comment><USER9> Yeah both of those were inspired by Go, which I'm sure were inspired by older ideas.

There's nothing new under the sun. What Zig brings to the table is high quality engineering and bringing the ideas together in a way that makes sense.

<comment><USER3> Incremental improvements and cross-pollination are great! I don't need a language with manual memory management for my current projects, but I'll definitely keep an eye on Zig. It solves most things I dislike in C, and keeps the good stuff.

</comment></comment></comment><comment><USER26> Nice to see Windows support. I think first class Windows support is an underrated factor in Rust's adoption as opposed to other similar languages (i.e. it had pretty good Windows support very early).

</comment><comment><USER27> Feel free to help fill out the relevant details about it in our crowd-sourced feature comparison spreadsheet about statically compiled languages: [https://docs.google.com/spreadsheets/d/1BAiJR026ih1U8HoRw__n...](https://docs.google.com/spreadsheets/d/1BAiJR026ih1U8HoRw__nzbCSFnnHicWrjxpW5l6-O3w/edit#gid=0) :)

</comment><comment><USER28> I am still trying to learn Rust here and there, but Zig seems to click more with me. I love Rust's documentation. Is there a Zig book in the works? I will continue to use the site for reference, and translating C snippets of mine. I like the libc independence of it for my toy programs and game dev jams. I was using TCC64 for them before.

</comment><comment><USER29> Does Zig have a compile to C option? This would open it up to a massive embedded world.

<comment><USER9> No but we have the other way around - C to Zig. Why would you want to go to C?

<comment><USER29> Nearly every platform has a C compiler. Many embedded platforms have almost no language alternatives. No way Zig ( or Rust, or Go ) is ever going to target them all.

<comment><USER30> LLVM aims to solve this problem. (Side note: is there an LLVM backend for C?)

<comment><USER31> There was, but it was removed in LLVM 3.1 [1].

It seems as there have been some attempts to revitalize it [2] but these are targeting older versions and would probably require a lot more work to ever get back in-tree.

[1] [http://releases.llvm.org/3.1/docs/ReleaseNotes.html](http://releases.llvm.org/3.1/docs/ReleaseNotes.html)

[2] [https://github.com/JuliaComputing/llvm- cbe](https://github.com/JuliaComputing/llvm-cbe)

</comment></comment></comment></comment></comment><comment><USER32> But has every Zig taken off for great justice?

sorry

</comment><comment><USER21> this language is super cool. High hopes.

</comment><comment><USER33> I think that it is sad that we keep on creating new programming languages that are not radically different. The Zig language ecosystem faces the same problems as C and the compiler will preform many of the same tasks, lexing, parsing, optimizing, documentation, supporting all sorts of weird edge cases and use cases. From what I see in the introduction, I don't see a convincing case for a new language here. This kind of incrementalism is not worth another persons years of effort to create a parallel path.

I think that if you are going to spend years creating a new language, you ought at least to try something new. Otherwise, you become just another amateur landscape artists. Maybe you're paintings will look nice, but they'll never really be of any great value to society.

<comment><USER34> What languages were "radically" different when they were relased? My take: COBOL, C, SmallTalk, lisp, ML, prolog, Shell. I'm might be missing some, but I think the pattern is clear. Only C remains among the most popular languages.

Almost all widely used languages today (c++, php, ruby, java, python, javascript, etc...) are incremental improvements on old ideas.

I think your opinion that the most used programming languages today are not "of any great value" to be bumpkis.

<comment><USER24> What was radically different about C when it was released? It doesn't seem to stand out that much to me from the backdrop of BCPL, Algol, Bliss, Pascal, etc.

<comment><AUTHOR> I'd say you're right, it wasn't that different. I think what made the difference for C was Unix (and a very good introductory book).

</comment></comment></comment></comment><comment><USER35> I spent some time with Zig a while ago. Here are my conclusions:

\- The string handling is braindead

\- The compiler and stdlib is immature. This seems like the first programming language the guy has written. You should have a few failures to learn from before you make a Serious Programming Language imo.

\- Code run at compile time is a neat idea but has a weird syntax and really really complicates the internals of the compiler and related tooling.

Unfortunately this is no C replacement IMO.

<comment><USER9> Note: The set of people in the Zig community who are blocked is size 1 and it is Sir_Cmpwn. He is blocked for being rude, destructive, and making a large number of incorrect claims, which he ignores the rebuttals to.

<comment><USER36> Hey Andy,

I'm getting a 403 on your docs page: [http://ziglang.org/documentation/](http://ziglang.org/documentation/)

<comment><USER9> The link was outdated in the README. Fixed. [http://ziglang.org/documentation/master/](http://ziglang.org/documentation/master/)

</comment></comment></comment></comment><comment><USER37> We already have enough alternatives to C, and C itself is working pretty well for most OS-level developers.

<comment><USER38> We also have enough naysayers and party poopers trying to discourage language authors. Yet here you are...

<comment><USER39> I wish I could upvote this enough.

</comment></comment></comment><comment><USER40> So the idea is to build new languages instead of fixing/extending older ones and getting an existing user base immediately because...?

<comment><USER41> Can anyone even fix C, at this point? You can't break backwards compatibility and the last standard that is widely adopted is C89, from 28 years ago. C99 and C11 haven't been adopted by Microsoft, so as far as I know their adoptions among developers is somewhat low.

If big companies can't move the needle for C, how can a single developer do it?

<comment><USER40> A single developer can apparently create a whole new language, complete with a module system, a proof system, a constraint system, a parser/lexer, but can't extend C by adding new flags to the compiler that are optional and don't necessarily break anything from old code and lets you selectively upgrade your sources.

<comment><USER42> Maybe you want something like Babel JS but for C - i.e. a transpiler.

<comment><USER40> Pretty sure they had a similar idea in mind when they invented the C preprocessor.</comment></comment></comment></comment></comment>


Chocolatey - Windows Package Manager - <AUTHOR> http://chocolatey.org/ <comment><USER2>
        DownloadString("http://bit.ly/psChocInstall"))

I don't think that is the best idea ever had...

<comment><USER3> I understand your specific security concerns, but the whole line is offensive. Certainly not the fault of the Chocolatey authors, but this is what I'd call a massively over-engineered shell:

      iex ((new-object net.webclient).DownloadString("http://bit.ly/psChocInstall"))

<comment><USER4> That being different from using wget or curl in bash or easy_install how again?

<comment><USER3>
      wget http://bit.ly/psChocInstall

vs

      ((new-object net.webclient).DownloadString("http://bit.ly/psChocInstall"))

<comment><USER5> If you happen to have wget, sure. Windows doesn't, by default. It is far more likely that the machine will have powershell, and if it does, it has the .net frameworks.

But, with wget, the line is

      iex (wget -qO- http://bit.ly/psChocInstall)

which isn't too bad.

</comment></comment></comment></comment></comment><comment><USER6> This looks like a close competitor to CoApp (<http://coapp.org/>) - both are FOSS package managers for Windows, although it appears Chocolatey places less emphasis on libraries and other developer-focused packages. That is, CoApp is emphasizing shipping both source and binary packages, and provides more help to package maintainers still trying to make their programs build on Windows.

Chocolatey will probably get more users early on though, because of its association with the ever-popular NuGet (watch for the Scott Hanselman blog post...).

<comment><USER7> That and creating packages with chocolatey is stupid simple compared to what I've seen with CoApp. But CoApp also has source and WinSxS.

You can see how easy it is to create a package here: <https://github.com/chocolatey/chocolatey/wiki/CreatePackages>

</comment></comment><comment><USER8> Would recommend changing the "cinst" command to something more memorable like "choc".

<comment><USER7> And the uninstall command? :D

</comment></comment><comment><USER9> What benefits (other than what looks like a scripting language) does PowerShell give over regular command prompt?

<comment><USER10> Differences between PowerShell and other *nix shell variants are that PShell allows you to pipe full COM or .NET objects between processes or commends, rather than just piping the text files between different commands.

PowerShell vs cmd.exe PowerShell is actually a complete shell scripting language, that gives you full access to all of the .NET libraries and methods. It also has a rather nice IDE that ships with Windows as is. Also, you can use PShell of Exchange and other server automation, you can do remote scripting, and it has some pretty decent security controls baked into the system.

<comment><USER11> > _PShell allows you to pipe full COM or .NET objects between processes or > commends, rather than just piping the text files between different > commands._

Which is IMHO the best part about unix shell and the worst about PowerShell: being pure text, unix shell allows for very loose definition of the interface between the program and outside, allowing to connect stuff in creative ways with minimal plumbing; whereas PowerShell makes this interface definition quite stringent by comparison, hence needing theoretically less plumbing (at least for simple tasks) but requiring far more design in the interface, restricting connectivity which in turns generates more mediation and plumbing to connect foreign elements.

In short unix shell may seem archaic but its loose binding makes it very powerful and quick to solve problems, while PowerShell is, well, a chore.

<comment><USER12> I haven't used PowerShell (since I don't use Windows), but when using the Unix shell interactively every so often I find myself in a situation where the data is too complex for a shell command to be able to process it, or else running into some corner case of missing functionality. Usually I end up piping into python -c, but that ends up pretty gross... if PowerShell isn't the answer, what is?

I wonder how far you could get by sort of plopping PowerShell onto the Unix shell and supporting both structured and text data.

(Incidentally, one such corner case is summing a list of numbers - this sounds like it should be a short command, but actually requires a complicated command line using awk.)

</comment></comment></comment></comment><comment><USER13> I would recommend mentioning that one needs to run 'set-executionpolicy unrestricted' in the code box.

<comment><USER14> Thank you.

</comment></comment><comment><USER15> I had high hopes when I saw the title. I was expecting something for getting MinGW precompiled libraries like openssl, curl or boost; which I find needing more than often.

<comment><USER16> If you need a sane MinGW environment, the MSys Git dev environment is by-far the easiest way to do so, it will download and set it up all in one shot.

<comment><USER15> I am using the vanillia one and it is very good. The only problem I have with it is that I have to compile everything for it. Sometimes doing so is not so straight-forward and can take a lot of time, boost being one example.</comment></comment></comment>


How to find a submarine (2014) - <AUTHOR> https://phys.org/news/2014-10-submarine.html <comment><USER2> I am reminded of the chapter "How To Hunt A Submarine" by Phillip M. Morse and George E Kimball in James R. Newman's _World of Mathematics_. It's a classic in Operations Research and documents very effective analysis and hunting techniques from WW2.</comment>


Rietveld -I have resigned as the WordPress accessibility team lead. Here is why - <AUTHOR> https://rianrietveld.com/2018/10/09/i-have-resigned-the-wordpress-accessibility-team/ <comment><USER2> Why is "React" capitalized every single time?</comment>


Cheat sheet for Scala syntax - <AUTHOR> http://anyall.org/scalacheat/ <comment><USER2> I'm bookmarking this because it's interesting, and potentially useful, but it highlights one of things I really, really don't like about Scala. Namely, like C++, it feels like the Scala authors put absolutely everything in, along with a few bags of syntactic sugar.

Import renaming, lazy evaluation for function arguments, and variables for closures all use the exact same syntax. The glob operator for imports (_) is different than it is pretty much anywhere else, and it means something different in the context of an iterator.

I like static typing with type inference, and syntactic sugar for common operations. But Scala takes the latter way too far, and IMHO it drifts off to unreadability pretty quickly, especially because it introduces a lot of uncommon conventions for common tasks.</comment>


Snowbox - Sculpt and share your own snowthingie - <AUTHOR> http://www.snwbx.com/

<comment><USER2> Cool! Though, I think it would work better if items were placed on mouse up, that way you could tell if the user was just trying to rotate the display not and place something.</comment>


The Ultimate Challenge for Recommendation Engines - <AUTHOR> http://www.technologyreview.com/view/530196/the-ultimate-challenge-for-recommendation-engines/ <comment><USER2> I can't remember the exact article, but if I recall correctly there was a blog post by Derek Sivers [1] how at CDBaby he entered similar albums manually by listening to them all (I presume back when they didn't have so much albums). The blog post was about other large companies asked him for the algorithm he was using while he was just entering them manually. I believe he also wrote that if he'd have to scale that process up he would hire more staff to do it, instead of automating it.

But I'm not trying to make a point or anything here, I do believe that in time AI will keep improving to the point more and more can be automated. For those who like thinking about technology is improving and things like that, there are very interesting books written on the topic, like "The Singularity is near" [2].

[1]: [http://sivers.org/](http://sivers.org/) [2]: [http://www.singularity.com/](http://www.singularity.com/)

</comment><comment><USER3> Honestly, the paper wasn't bad, but I'm shocked they let this article get out.

Combine the author's incredibly poor understanding,shit link bait headline, and baseless article with ZERO results or novelty and this is 10 minutes of my life I want back.</comment>


Quicken Online is finally free - <AUTHOR> http://news.cnet.com/8301-17939_109-10065050-2.html

<comment><USER2> Good news, but a lousy article, doesn't really add anything. Direct link to Quicken Online: <http://quicken.intuit.com/online-banking-finances.jsp>

It's in JSP! Ok, well at least that page is. As a java web developer, it warms my heart ;)

<comment><AUTHOR> _"... Good news, but a lousy article, doesn't really add anything ..."_

Better than the exciting offerings from _'Barron Ernst Quicken Online Product Manager'_ and his cheery marketing advice for using Quicken.

        With 70% of Americans living paycheck to paycheck,
        we want to help everyone make it to payday successfully

So which information source do you choose from?

The cheery marketing drivel from SoftCo or the cheesy articles that add a little bit of extra info but not much because the _"cough"_ Journalist is lazy? The real bit that interested me was the article lists Quicken as free and the author compared a large company offering to some Startups (Mint, Geezeo, Buxfer, and Wesabe). Recognition from SoftCo. they have to respond?

The fact the url exposes its implementation says to me Quicken don't know or care about _"Cool urls"_ ~ <http://www.w3.org/Provider/Style/URI> nor understand this can be fixed using mod_rewrite ~ <http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html> The fact they use Java confirms this.

</comment></comment><comment><USER3> This won me over as soon as confirmed the feature of being able to add upcoming and recurring transactions.

</comment><comment><USER4> I love Quicken and I really really need web finances, but why on earth do they ask me for my banking username and password?

I just want to keep track of my finances without messing with my bank account, how hard is that?

<comment><AUTHOR> _"... I love Quicken and I really really need web finances... but why on earth do they ask me for my banking username and password? ..."_

It's free. Maybe the credit information is paying for the service? and room for a small profit.</comment></comment>


Trump Run – Toupee Chase HTML5 Game (1 Level) - <AUTHOR> https://mail.jeremybowne.com/tr/ <comment><USER2> Low energy</comment>


To Understand 'Brexit,' Look to Britain's Tabloids - open-source-ux https://www.nytimes.com/2017/05/02/world/europe/london-tabloids-brexit.html <comment><AUTHOR> There is a major design flaw in democracy.

Democracy works on majority votes which is a form of consensus.

\- If the majority believe that money is important, then they'll vote to reflect that

\- If the majority believe that God exists and rules on us, then they'll vote to reflect that

\- If the majority believe that paparazzi are smart, then they'll vote to reflect that

\- If the majority believe that the leaders have their best interests at heart, then they'll vote to reflect that

\- If the majority believe that Trump is smarter than Obama, then they'll vote to reflect that

\- If the majority believe that science and climate change are phony, then they'll vote to reflect that

The only and only way to mitigate the effect of this bug is to have a well- educated set of majority voters. Unfortunately, for far too many years, school-districting and "choice" of education to young kids has under-educated the masses...resulting in voters genuinely believing crap to be true.

The result is Brexit and Trump.

When the critical mass of our populace prefers news from tabloids and facebook and are unable to think for themselves, there's really not much democracy can do.

<comment><USER2> And if the left actually pushes the idea that free trade, global free movement of labor, financialization and asset inflation are good ?

Brexit is the first real anti-globalization decision made in decades. You'd think the left would be beside themselves with joy that finally, after all the shouting, demonstrations, activism, ... finally ONE correct decision was made. Finally.

If large amounts of the left are convinced this decision is wrong. Does that count as stupid as well ? The result of fake news ?

Newsflash: globalization, and the very existence of the EU, works against everyone but capital owners. It works against the working class, it works against the middle class, even against most of the upper class.

<comment><USER3> When did the left become pro-globalization? I didn't realize it happened until brexit/trump, was it a reaction to this or did it happen earlier?

All those young people protesting Trump and other similar issues, if they were born 15 years earlier they would have been at the battle of Seattle and Trump would be seen as the messiah.

<comment><USER4> I think in part the word 'globalization' has become too vague.

As far as I know, but correct me if I'm wrong, the left has always been pro- globalization, just in a different way ('workers of the world, unite!'?). When it comes to the EU, most (reasonable) left-wing people I know are 'pro', but with very mixed feelings.

But then I feel that a deeper issue is that the words 'left' and 'right' leave out so much information (these days) that they actively harm productive conversation. At the very least we disentangle the 'social' and 'economic' dimensions.

If we'd do that I think at least some of the confusion over the seemingly inconsistent attitudes towards globalization will make more sense.

</comment></comment></comment></comment><comment><USER5> even if you don't buy the tabloids, wouldn't seeing the headlines over and over in all newsstands while you are walking around still influence you more or less subliminally? And obviously since the point of a headline is to get you to buy the paper, the incentive is to make it as purchase-baity and truth- stretching as possible

Seems that for the press there can be influence even without an actual sale.

</comment><comment><USER6> I wonder what demographic buys the most tabloids, because AFAIUI the Brexit support was skewed hugely towards rural (and non-Scottish/NI) areas.

(I might have missed it in my _extremely_ quick skim, but I don't think the article actually touched on this... which is suprising. I mean, it did mention something about "outside London", but...?)

<comment><USER7> Note that the tabloids have different Scottish editions with radically different editorial policies; the Scottish Sun and the Scottish Daily Mail, while visibly close siblings of their English sister-papers, often cover headline topics (and editorialize) in diametrically opposite directions on key issues (such as Europe, England/Scotland relations, etc).

I can quite understand this distinction eluding a NYTimes reporter, though — it's not widely recognized even in England.

<comment><USER8> The same thing happens in Ireland with those newspapers.

For example, when Martin McGuinness died a few weeks ago, the newspapers had radically different front pages: [http://www.thepoke.co.uk/wp- content/uploads/2017/03/C7gsyt4X...](http://www.thepoke.co.uk/wp- content/uploads/2017/03/C7gsyt4XQAA-efu.jpg)

[https://1k95i3bqziq3bboq03r87f8x-wpengine.netdna- ssl.com/wp-...](https://1k95i3bqziq3bboq03r87f8x-wpengine.netdna-ssl.com/wp- content/uploads/2017/03/sunmail-960x718.jpg)

</comment></comment></comment><comment><USER9> Wonderful article, entertaining and well-written. I wish the NYT would publish more stories like this.

</comment><comment><USER10> To understand Trump, look at the NYT.

</comment><comment><USER11> > Mr. Johnson, wild-haired and witty

Boris has never struck me as witty.</comment>


Scientists Want You to Give Them Money to Study Psychedelics - <AUTHOR> https://www.wired.com/2017/05/scientists-want-give-money-study-psychedelics/ <comment><AUTHOR> I wonder why the NIH isn't funding the work. That does seem surprising. Presumably due to stigma, but I'm not sure.

Still, a very promising field.

Also is surprising that no "burning man billionaires" seem to have eased their fundraising issues. Larry and Sergey from Google, Eric Schmidt from Google, Elon Musk, etc are all notorious burners, and burners are notorious for loving psychedelic drugs. I guess there's a boundary between loving something and wanting to contribute $10 million to get it approved as a medicine, though, even if you are a billionaire.</comment>


Why we should abolish the weekend – and take our days off whenever we like - <AUTHOR> http://www.telegraph.co.uk/news/2016/05/30/why-we-should-abolish-the-weekend--and-take-our-days-off-wheneve/ <comment><USER2> > What is a weekend? Whatever you need it to be.

I need it to be a time, not too far apart, and regularly occurring, when I can have a fair certainty that friends and/or family will be available for activities together.

As a knowledge worker, it's easy for my work to bleed into my leisure time, and it's already hard enough to fight when I've got well-defined personal time. I feel like abolishing the weekend would be a bad idea for the same reasons that "unlimited vacation" policies are bad ideas.

<comment><USER3> Agreed. The problem with comp time and swing/night shifts have to do with the inability to have time with the REST of your friends/relatives.

Sure, an occasional Tuesday after a nasty weekend is nice, but I wouldn't want to make a habit of it.

</comment></comment><comment><USER4> I wish that were possible for everyone. Unfortunately that creates uncertainty in when people are available, which in many cases makes coordination difficult and working on projects slower.

And, you know, since studies have shown that uncertainty of pain is worse than inevitability of pain ([http://www.nature.com/ncomms/2016/160329/ncomms10996/full/nc...](http://www.nature.com/ncomms/2016/160329/ncomms10996/full/ncomms10996.html)), perhaps five-two is the least worst option, after all. ;)

<comment><USER5> That.

I still prefer the idea of 4/7 working days

</comment></comment><comment><USER6> I'm not sure what exactly is the alternative plan the author proposes with "Take days off spontaneously whenever you feel like it".

So basically just grant additional vacation days in exchange for the former weekend-days? (and maybe streamline the process to request days off)

This sounds like a recipe for the same psychological mechanisms and incentives of self-exploitation that are at play in "unlimited vacation" places: "Sure you can take a day off... but do you really want to let down your team in this critical phase of the project"?

Except now there you have literally no resting time unless you make the conscious effort to ask your supervisor for it (or invoke whatever other process is in place). Your supervisor doesn't like you? You want to do things that your current employer shouldn't know about yet? (e.g. applying somewhere else) Though luck!

</comment><comment><USER7> There is something healthy about having a rhythm in your life. I hope no company adopts an "unlimited time off" policy. Take off whenever you want but obviously only when your project allows for it.

</comment><comment><USER8> We should have to work far less days, all of the efficiency gains have gone to the top.</comment>


Brave Browser is hijacking links and inserting affiliate codes - <AUTHOR> https://mobile.twitter.com/cryptonator1337/status/1269201480105578496 <comment><USER2> Previous discussion - few hours ago

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

P.S. One would wonder, what's next on roadmap - monetizing Brave user base as bot net ?</comment>


Earth closest to sun for 2015 on January 4 - <AUTHOR> http://earthsky.org/tonight/earth-comes-closest-to-sun-every-year-in-early-january

<comment><USER2> > Earth is closest to the sun every year in early January

Earth is _currently_ closest to the sun every year in early January.

[https://en.wikipedia.org/wiki/Apsis#Perihelion_and_aphelion_...](https://en.wikipedia.org/wiki/Apsis#Perihelion_and_aphelion_of_the_Earth)

quote:

On a very long time scale, the dates of the perihelion and of the aphelion progress through the seasons, and they make one complete cycle in 22,000 to 26,000 years. There is a corresponding movement of the position of the stars as seen from Earth that is called the apsidal precession. (This is closely related to the precession of the axis.)

</comment><comment><USER3> Stupid question, but is the Southern Hemisphere summer (i.e., now) then, on average, hotter than it's northern counterpart?

<comment><USER4> Not a stupid question at all!

Find a radiant heat source (portable infrared heater) and stand one meter away from it. How warm do you feel? Now move closer by approximately 3cm. Feel noticeably warmer?

In fact, Southern Hemisphere summers are milder due to how much of the sun's energy is absorbed vs. reflected by the land and water. More water and less land in the Southern Hemisphere means that more of the heat energy from the sun (which is, basically, a form of light) is reflected away.</comment></comment>