HTTP "Prefer:Safe" – Making Online Safety Simpler in Firefox - <AUTHOR> https://blog.mozilla.org/privacy/2014/07/22/prefersafe-making-online-safety-simpler-in-firefox/ <comment><USER2> Soooo.. This is sending "Hey, this is a kid on a restricted machine" to all servers now?

I mean I fail to understand the original idea, obviously. It makes no sense to me. But I question the value of the above - basically now the server can _just as easily_ do crap with that information. You can now identify minors (using that feature). Beautiful.

The server operators cannot decide what 'parental control' would mean for parents, they cannot decide what is ~okay~ or what isn't. Referencing a random US regulation/law (COPPA?) in a discussion about international traffic, international browser products seems crazy.

If you want to prevent your kids from accessing 'stuff', make sure that 'stuff' is filtered on their machine or better on the edge of your network. Don't believe that random guys on the net will correctly guess what you find questionable content for kids and hide it, because .. your kid's browser sent a friendly "My parents didn't allow me to see unspecified things" header.

Edit: I reread that thing over and over again. Something else that utterly blows my mind is this:

 _Users won't find any UI in Firefox to enable or disable Prefer:Safe, which becomes one less thing for kids to try to circumvent to disable this control._

Newsflash: That includes the parents. Unless that is utterly misleading (or my English as a second language parser fails) this means that I, as a parent [1], can NOT

\- activate parental control features that are somehow detected by Fx

\- opt out of that idiotic header that announces decisions from my private household to each and every server, starting with Google for example

1: Hypothetical example. While I've got two kids, but both are too young to operate a computer yet and I probably won't buy into standard 'parental control' solutions anyway.

<comment><USER3> I exactly had the same idea... I would also add that this thing is going to be useless anyway because not all the websites are going to implement it. So you will have this header + the traditional blocker...

It's totally unrelated but something I would really like to have right now would be a header with the average connection bandwidth (or just thresholds). This could be really useful to reduce the amount of data sent if the connection is really bad.

<comment><USER4> _I exactly had the same idea... I would also add that this thing is going to be useless anyway because not all the websites are going to implement it. So you will have this header + the traditional blocker..._

It's not useless, since it allows the site to avoid being blocked by hiding the "bad" content. Ideally blockers would be smart enough to recognize and block only the "bad" DOM elements, but they usually just block the whole page, if not the whole site.

<comment><USER2> That is absolutely meaningless. What is bad content? The header doesn't tell what the client considers 'bad' or not 'safe', it's a bool.

Given that, I see these possible outcomes

\- the client's admin might not care about this site at all (effort to hide stuff would be wasted?)

\- the client's admin might consider content 'unsafe' that seems fine/okay to the site operator => Blocklist, failed to archive what you suggest

\- the client's admin might consider content 'safe' that the site now refuses to share => Curse site and Mozilla, switch browsers and/or consider that site broken and the operators morons (similar to 'breaks zoom on mobile devices' today, for example)

<comment><USER5> Your comment about the bool, got me thinking. This would have been better implemented if it was thought of along the lines of movie rating system.

[http://en.wikipedia.org/wiki/Motion_picture_rating_system](http://en.wikipedia.org/wiki/Motion_picture_rating_system)

However, this got me thinking that across cultural lines there are a lot of shades to what is "safe". So a website based in Austria might want to restrict different content than a website based in Australia, and who knows where the "browser" is based.

Of course your comments about the site actually implementing anything/correctly still apply.

<comment><USER6> I vaguely remember in the early days of the web (95-96?) there was a hopeful rating system very much like what you get for movies. I can't remember what the header was, but it was formatted something like "Violence 1; Sex 10; Drugs 5; Gambling 0". For obvious reasons it didn't catch on.

</comment></comment></comment></comment></comment></comment><comment><USER7> I have to say, I don't really care much for this, and I'm surprised to see it coming from Mozilla.

"Prefer:Safe" is rather vague-sounding. I was expecting something about incorporating something like "HTTPS Everywhere" into Firefox.

I understand the appeal of something to prevent kids from stumbling across porn or violence online, but let's not muddy words like "trust" (which mean something very different when talking about security and privacy) with the concept of age-appropriate content.

<comment><USER6> I think the idea isn't so much a porn filter as it is a "treat this user as a child" request. So, for example, social networking sites might work in restricted mode.

I do agree "prefer safe" is a very poor way of expressing that desire, though. Maybe "child-safe", but not just "safe", which implies a related but different idea.

<comment><USER8> If this takes off at all, I can see the sites reacting by altering the advertising group selection based on the presence of the header.

"Cool, an under-10 browsing. Let's push all the autoplay toy videos we have in rotation."

I already get the creeps from the toy ads squeezed between and in the middle of children's TV shows.

</comment></comment></comment><comment><USER9> "Won't someone think of the children?" comes to the HTTP standard.

Seriously though, this seems totally reasonable although "safe" does seem like an odd word choice. Maybe "modest" instead?

<comment><USER10> I'm thinking it's in the same category as "Safe For Work" and "Not Safe For Work".

But yeah, I expected a HTTP header that would, say, redirect to an encrypted version of the webpage, sort of like HTTPS Everywhere, but on the browser- server level.

<comment><USER2> NSFW is just another undefined concept. It depends on your work, on your culture/upbringing and the society you live in.

If I stumble upon pictures of tits because someone posted a link to a yellow press newspaper site or a random celebrity scandal, I .. misclicked because that wouldn't interest me in the slightest. But it wouldn't be unsafe, not even for work. On the other hand, I wouldn't exactly want to end up on a nazi propaganda page (even if I'm merely looking at current splitter groups/facts around news reports about these sort of braindead idiots). I would feel very bad about leaving a trace like that - even if I don't think I'd have to face any sort of consequences.

Point being: Safe™ is undefined, for minors or employers. You can try to find a GCD, a common global set - and you'll fail/end up with a balance act between false positives and misses.

</comment></comment></comment><comment><USER11> I was with them until they mentioned "one less thing for kids to try to circumvent to disable this control". If a kid is actively trying to circumvent the parental controls, this is no longer about "protection" but about control.

In other news, the Feynman lectures on QED are blocked in "safe" mode. [https://www.youtube.com/watch?v=yvl6TBGEoO0](https://www.youtube.com/watch?v=yvl6TBGEoO0)

</comment><comment><USER12> A header Id rather see is Cookies: I-know-what-they-are-for

"don't show me information about cookie usage".. )

<comment><USER13> That would be against the law. Talk to your MEP, not browser maker, if you want to change it.

<comment><USER14> This is what websites want you to think.

Do it badly -> annoy users -> no more laws that protect users.

</comment></comment></comment><comment><USER15> Can I start sending "Prefer: Unsafe" headers and expect to see a difference, too?

</comment><comment><USER16> Sounds like a great way for kids to learn how HTTP debugging proxies work.

<comment><USER17> Was just gonna say that; "Users won't find any UI in Firefox to enable or disable Prefer:Safe, which becomes one less thing for kids to try to circumvent to disable this control."

That's good, make them hackers instead by making them implement their own HTTP-proxy :)

</comment></comment><comment><USER18> "Strengthen the online trust and safety model" is a weird way to say "no porn."

<comment><USER19> It has many other uses, IMO.

\- Disable signup/require COPPA form to be mailed & signed

\- Filter out explicit content from user-generated content

\- Disable vulgar sections from a blog

\- Prohibit downloading software

etc

<comment><USER20> > \- Disable signup/require COPPA form to be mailed & signed

Somewhat off topic, but I think 13 is considerably above the age where kids have a reasonable interest in being able to actually use the web. When I was a few years younger than 13 (10 years ago...), I once accidentally put my true birthday into AIM, and was subsequently banned from the service I used to communicate with friends from school. Recently, the same happened with one of my sister's friends and Gmail. Does anyone actually think these forms are a good thing?

<comment><USER19> I don't think forms are the answer. I think it should be around 9 or 10, honestly. I'm not too sure what would replace forms though.

</comment></comment></comment></comment><comment><USER21> Just wtf is this. Mozilla now jumping on the "omigod teh childr0n" bandwagon, too?

Any reasonably educated child can easily disable all of these "safety features" (e.g. boot the machine at night from USB stick...). These "features" are nothing but placebos for parents too incompetent to educate their children.

<comment><USER22> >(e.g. boot the machine at night from USB stick...) Well it does not work, if I use a transparent proxy at home which injects "Prefer: Safe" in every HTTP request header.

<comment><USER2> In which case the browser support and whole article is useless and nothing new for that kind of weird setup.

Although I'd recommend being a responsible admin/parent in that case instead and, with the _correct_ infrastructure for this scenario already in place, define filters for things you don't like or white lists for things that are okay for your network, instead of begging the internet to correctly guess your moral boundaries.

</comment></comment></comment><comment><USER23> > designed to simplify and strengthen the online trust and safety model.

Is this intended for the publisher to implement filtering, or for the publisher to declare semantic labels which can be filtered by 3rd-party sites with consistent editoral viewpoints?

</comment><comment><USER24> The Web is about statelessness and hyperlinking, so I'll note that:

1) Javascript breaks stateless linking.

2) Mobile versions and browser detection breaks stateless linking.

3) Censorship headers like Prefer:Safe, and censorship in general, breaks stateless linking.

And the list goes on. Some state and inability to link is inevitable, but this is not.

Mozilla: please get back on track for a strong/stateless and cite-able web. Headers are not the place to build a censorship "UX."

Also, "safety"? That's not helping. Almost no one uses NetNanny, or similar software and, while I'd like to think we've grown as a species, even if we haven't, it doesn't make sense to force something most Web surfers have already rejected back down their throats. (And it is forcing them, even if it's optional. The social implications of even "optional" headers will be with us for a very long time.)

A browser especially should strive to be neutral, unless you want to start getting requests from governments and industry to block sites directly in the browser. Google handles a million or more every day and they are just and index list... You can't expect a different fate without discarding neutrality as a core principal.

Cite-ability requires _availability_ , and censorship - the Web-equivalent of a frontal lobotomy - contradicts the very essence of your product. I'm starting to feel ashamed to be using a browser made by an organization that doesn't understand that.

</comment><comment><USER25> My feeling is that most of the people talking here do not have children yet. As a father, I would be really pleased to have such header accepted by many providers to just filter out content which is clearly not for kids.

A small example, I am French living abroad, if I want my kids to read a bit the news, I cannot send them on one of the 3 "major" French newspaper to read a bit. Why? Because at the bottom of the first page, they put a lot of sexual content like fully naked women wresting. If this header could remove such content, together with videos where people are beheaded. I would be pleased. Really.

If you start to think that this is censoring content, it is not, it is journalist work, that is, providing adapted content to the visitor.

<comment><USER2> How can the sites tell that this content isn't okay?

I posted an example elsewhere in this thread: I might want to limit a 16yo with parental controls to avoid having them use the computer the whole night, but I wouldn't mind them seeing (naked) girls on a yellow press site, if that's what they stumble upon.

I'm also reasonably sure that your particular problem could already be solved on the client site, today, and that would even make sure that your personal take on moral values is respected. Plus, as others have stated, 'parental' controls might be used for a "kiosk mode" in a hotel or elsewhere (for .. whatever reason). Would you really want these scenarios to result in the same thing ("Content filtered on a news site"), both for your personal kids and for random mature people elsewhere?

</comment></comment><comment><USER26> I wonder how they're going to implement the "no circumvention" part.

Surely there's an option in about:config that affects the new behavior? Is about:config disabled too?

There are also dozens of add-ons that lets you control every single header. Are add-ons disabled too, or is there going to be a blacklist of header- modifying add-ons?

It will take less than a week for point-and-click circumvention tools to become available all over the place. Just download this little .EXE that makes a small change to your Firefox profile and might or might not also contain malware! Should Google block searches like "how to disable Prefer:Safe" if such searches come from a browser that already has "Prefer:Safe" enabled?

<comment><USER4> _It will take less than a week for point-and-click circumvention tools to become available all over the place. Just download this little .EXE that makes a small change to your Firefox profile and might or might not also contain malware!_

This is supposed be activated by Windows Parental Controls, which already allow you to block the user from running unknown .exe files.

</comment></comment><comment><USER27> It's up to content providers to honor the header. I can't expect that to happen very easily when explicit content is involved, although the avenues to find that content (such as Google) might be amenable.

<comment><USER4> _I can 't expect that to happen very easily when explicit content is involved_

Why not? Porn sites aren't interested in appearing to kids, which are unlikely to pay for their stay.

</comment></comment><comment><USER28> Looks like they just enabled phishing / malware / etc sites that can target unsupervised kids and show innocuous content to everyone else.

</comment><comment><USER29> I prefer to be safe. Can I be safe while browsing porn?

</comment><comment><USER14> Why isn't there a space before "Safe"? New compact http headers saving one character?

<comment><USER30> I used to think so. Then I read the spec: [http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2](http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2)

 _The field value MAY be preceded by any amount of LWS, though a single SP is preferred._

For the definition of SP and LWS, see: [http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2](http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2)

For the definition of MAY, see: [https://www.ietf.org/rfc/rfc2119.txt](https://www.ietf.org/rfc/rfc2119.txt)</comment></comment>


I give you permission to no longer ask for permission to code  - <AUTHOR> http://joshuakemp.blogspot.com/2013/11/i-give-you-permission-to-no-longer-ask.html?m=1 I give you permission to no longer ask for permission to learn to code <comment><USER2> As a fellow programmer who just learned to code, I also find the lack of feeling "I-know-how-to-do-this" disconcerting. But turning around when one isn't finding progress is also how you avoid getting stuck in cul-de-sacs. Keep it up!</comment>


AI is hard, so just outsource the I - <AUTHOR> http://www.ericbeland.com/2008/2/1/outsourced-robot-brains

<comment><USER2> He is not the first one to think about this. John McCarthy put in around his page long time ago on his future. <http://www- formal.stanford.edu/jmc/future/index.html>, Remote service <http://www- formal.stanford.edu/jmc/future/teleserve.html>

</comment><comment><AUTHOR> Another interesting possibility, which I almost wrote about, is robotic warfare. If there are truckloads of robot shells in the combat zone and US troops who clock into at an office building in the US to pilot them, how can an enemy fight that? Every time you destroy a bot, another one walks out of the warehouse. Our soldiers are already trained for this. Just like a video game, you get 'killed' then respawn.

<comment><USER3> Actually, you can do better than that. Having a one brain:one robot shell doesn't scale as well as having one brain:many robots. There is currently work in DARPA on getting one person to manipulate swarms of robots, instead of micromanaging them all.

<comment><USER4> Sounds like RTS for the battle field. Can't wait for they day when teenage Supreme Commander experts take out entire countries using point and click control of swarms of robots.

<comment><USER5> The only problem is that South Korea will rule the world - StarCraft is the national sport.</comment></comment></comment></comment>


Writing Varnish modules in Rust - <AUTHOR> http://info.varnish-software.com/blog/writing-vmods-in-rust <comment><USER2> I'm really excited to see rust in more places. I think that the lack of a "runtime" and interoperability with C were great design choices.

</comment><comment><USER3> I've recently been using Rust to write a small instrumentation runtime for a project that I would normally have written in C++. The FFI is surprisingly easy and I really love that I can compile down to libfoo.a with no other Rust runtime required. Lack of GC is essential in this space. It really can do anything C can. (I know it didn't always work this way -- there used to be an N:M threading runtime, for example, and a built-in GC for the old @-pointers -- so I'm glad they've gone this way!)

</comment><comment><USER4> I'm so happy that a safe language is (very) slowly starting to creep its way into where I normally would have had to use C++.

Rust isn't my favorite language, but it's a substantial improvement, at least in my goober opinion, over C and C++.

<comment><USER5> What sort of features would you like to see in a C/C++ replacement?

<comment><USER4> I would like a better type system, immutability, and a better guarantee of memory safety.

I'm totally aware that C++ has unique_ptr which can give you something relatively comparable to the Rust memory management, but I personally think that if the compiler doesn't have any kind of official idiom on the subject, it'll probably end up in the codebase. C++ kind of prides itself on being able to "write however you want", which is fine, but then that means that people might start using raw pointers, unchecked arrays, and mutation.

Could a vigilant C++ programmer replicate every feature of Rust? Absolutely, not denying that for a second. Rust doesn't _give_ you anything as much as it enforces a paradigm.

At least that's my two cents.

<comment><USER5> Oh, yeah, definitely. I guess I was responding more to the "Rust isn't my favorite language" part of your comment- what would you like a language in that niche to do differently than Rust? Or do you just prefer when you can get away without a C replacement? :)

<comment><USER4> Oh, my bad, I misunderstood.

Lemme first state that I am _not_ a systems developer; I mostly do servers.

That said, some stuff that keeps Rust from being my favorite is a lack of tail-call optimization, the lack of the ability to say that a function is pure and impure (and have that enforced), and not having some concept of a green- threading library built-in.

I realize that the last point can fairly easily be implemented with a library, but the first two points keep me using Haskell.

And evidently, if I'm wrong about any of these points, don't hesitate to correct me! I'd love to have a chance to get better with the language.

EDIT: Just a note, I know that Haskell isn't a systems language and not a direct replacement for Rust. That said, I find that a lot of the features I want in Rust are things I like in Haskell.

<comment><USER6> Green threads are probably not going to be as useful in Rust as in other languages. Having something like await/async built into the compiler that transforms into state machine (like in C#) would be more powerful it seems.</comment></comment></comment></comment></comment></comment>


Ask PG: Why dont you hire someone to run HN? - <AUTHOR>

Today, HN is slow as hell again.<p>I wonder: Why dont you hire someone who cares for HN fulltime or part time so it runs smoothly all the time? <comment><USER2> Now, I can't profess to know pg's reasons for not doing that, but he definitely shouldn't! Why? This would start him on that long, slippery slope of becoming a manager, i.e. the sad metamorphosis from a hand-on, still living technology throughly person, to one who interacts it secondhand, through ideas only.

Look around in any large company, you will see these guys who were once brilliant engineers but now just don't have the time to code.

Unfortunately, with YC getting bigger and more prominent by the day, I think this may be inevitable.

</comment><comment><USER3> Maybe pg considers HN essential. You don't outsource your main business.

</comment><comment><USER4> Maybe developing and mantaining HN is one of pg's few connections to his developer side.

</comment><comment><USER5> Then where would he go to do his share of procrastination for the day?

</comment><comment><USER6> I tend to think that PG considers maintaining HN as his hobby, he enjoys keeping this knowledgable piece of work for himself.

</comment><comment><USER7> What revenue stream would he pay this person from?

<comment><USER8> Well, YC does make money from their investments, so revenue stream likely isn't the problem.

My question would be what would be the benefit of hiring a person to run YC?

If it grows to the point that it needs a dedicated manager, I'm sure PG would have no problem getting a great person to do it.

But from the sounds of things, PG really enjoys the day to day operations of YC and keeping deep contact with companies in the fund.

<comment><USER9> The question is about hiring someone to run HN, not hiring someone to run YC..

<comment><USER10> Well, HN arguably accounts for a proportion of YC's deal flow...</comment></comment></comment></comment>


Curious accidental snowflake lensing artifact filmed on iPhone in City of London - <AUTHOR> https://www.youtube.com/watch?v=qNkKEilV-MM&feature=youtu.be <comment><USER2> It looks more like the water drop after the snowflake melted.</comment>


Show HN: Clok - An unconventional garbage collector - <AUTHOR> https://github.com/raystubbs/clok <comment><AUTHOR> Hey @MobiusHorizons, thanks for the suggestion; was planning on adding to the readme... just haven't found the time to commit to it, so hoped the header comments would be sufficient for a while. It'll take me some time to try and translate my thoughts into something understandable since I'm kinda' bad at communication, but will get around to it sometime soon.

</comment><comment><USER2> This looks very interesting. You should document your API in the readme. honestly just excerpts from the header with a little documentation would be enough. I look forward to testing it out.

<comment><AUTHOR> Quoting from my root level comment: "Hey @MobiusHorizons, thanks for the suggestion; was planning on adding to the readme... just haven't found the time to commit to it, so hoped the header comments would be sufficient for a while. It'll take me some time to try and translate my thoughts into something understandable since I'm kinda' bad at communication, but will get around to it sometime soon." Sorry, new to HN; didn't notice the 'reply' button.</comment></comment>


Ask HN: Living/working in Cupertino? - <AUTHOR>

There exists a possibility that we'll (wife and I) be relocating to the Cupertino area from the Boston suburbs in the next 6 months.
Knowing very little about the area, I was hoping that somebody could offer some insights or recommendations on the local housing scene.
Would like to keep the commute <40 minutes (let's just use 1 Infinite Loop as a theoretical destination).
We have 2 properties currently that are valued at about $750K together, so would like to stay in that price range +/- maybe $100K.  Less dense/populated is better, but flexible on that.
Any suggestions or thoughts? <comment><USER2> My office is in Cupertino and I live on the Peninsula. It is a great commute if you can take 280 (always against traffic) and it is about 30 minutes door- to-door (say, up to the Redwood City/San Carlos area).

Anything in Cupertino will very likely be over $1M, mostly because it is a nice area and also because it has a much sought after school district, one which can command a couple of hundred thousand dollar difference for otherwise like houses that are even across the street from one another.

There are homes in the South Bay that are in the range you indicate, and perhaps some nice ones, but you will likely be disappointed by what you will find in that range. If you go too far east, the prices might go down but the commute will likely be miserable if you drive during peak hours.

Going north, Palo Alto is beautiful but way out of range, as most of Sunnyvale and Mountain View will likely be as well.

Going further north, you can find some reasonable suburban homes in the San Carlos/Redwood City area that are within range and the commute fits so long as you can take 280 for the drive down (not so with 101, where the commute is often bad, even going south in the a.m.; the area, btw, is quiet and the neighborhoods nice, lots of younger and 40ish-type couples). The weather around the Valley is very consistent and temperate year-round - it averages perhaps 10 degrees cooler up toward the mid-Peninsula and so you should like it slightly on the cooler side (still 60s to 70s year round, on average) to live up there.

Note: not written from a hacker perspective (I am not a hacker) but from that of someone who has been in Silicon Valley for 40+ years.

<comment><USER3> The Mountain View area is nice and will give you a very sweet reverse commute. I would suggest putting that high on the search list. Another possibility is Campbell, the commute will involve heavier traffic, but it is a shorter trip than Willow Glen or LG.

<comment><USER3> Another factor that I should also probably add to this is that if you and your wife are looking for convenient night-life and a less suburban existence you are probably better off looking hard at the Mountain View & Palo Alto area. Some of the areas we have been talking about (LG, Willow Glen, Campbell, etc) are much more suburban house-with-a-small-yard and might be a better fit for a family that is considering kids in the near future. If this is not something you see in the short-term then MV and PA will give you access to more activities and events for singles and young couples. Castro St. in MV and University Ave. in PA have more bars/clubs/restaurants and both areas are more convenient for trips into SF including the option of taking the train in.</comment></comment></comment>


Artificial consciousness and the nature of reality (Joshua Bach) - <AUTHOR> https://youtu.be/P-2P3MSZrBM <comment> Funes- Already on the front page: [https://news.ycombinator.com/item?id=23923183](https://news.ycombinator.com/item?id=23923183)</comment>


The Library of Scott Alexandria - <AUTHOR> https://www.lesswrong.com/posts/vwqLfDfsHmiavFAGP/the-library-of-scott-alexandria <comment><AUTHOR> There's something wrong with scrolling on android. Returning to this page with back button resets the scroll. Sometimes scrolls back to previous section.</comment>


Sample admissions interview questions released - <AUTHOR> http://www.ox.ac.uk/media/news_stories/2011/111004.html

<comment><USER2> Somewhat surprising that they don't do consulting cases in their undergraduate admission procedure. I mean you can't start with these early enough, right? ... .. .</comment>


Markov Chain Monte Carlo Without Jargon - <AUTHOR> http://jeremykun.com/2015/04/06/markov-chain-monte-carlo-without-all-the-bullshit/

<comment><USER3> A couple of problems with the authors definition:

> Let D be a distribution over a finite set X.

In statistics, the space is almost always continuous (i.e. non-finite), typically some moderate-to-high-dimensional Euclidean space (or subset thereof).

> You are given black-box access to the probability distribution function f(x) > which outputs the probability of drawing x \in X according to D.

If you know the distribution function, you can do inverse transform sampling. MCMC is typically used when the _density function_ is only known up to proportionality (which seems to be what he actually means).

> Design an efficient randomized algorithm A which outputs an element of X so > that the probability of outputting x is approximately f(x).

Now, here's the problem: MCMC doesn't actually give you this. What you get instead is a sequence of random elements, which (given some minor conditions) will converge to the target distribution.

</comment><comment><USER4> The author draws a distinction between computing expected value of a random variable and computing the volume of a convex set, but from the point of measure theory, both are computations of integrals. So maybe the definition given from the encyclopedia wasn't so bad, given the right prior knowledge.

<comment><USER5> Well, come on. Lots of things are integrals. The Riemann zeta function is an integral. But I don't think MCMC has anything to say about that.

There is no obvious "measure" in the convex set example, so it's not clear how MCMC applies. And, there are not good MCMC convergence results, so even if you apply it, it's not obvious you'd be able to prove anything.

If you think of the set as being defined by an oracle (a function that reports whether its input is inside or out), then it looks like it will require exponentially many probes (in the dimensionality "d" of the space) to get its volume. Basically, a curse of dimensionality argument -- you have to sample independently along each of "d" axes. But it turns out there is an MCMC that is polynomial-time. (Now, granted, IIRC it is like n^17, but...)

<comment><USER4> The Lebesgue measure could be a candidate for the measure you are asking for. Creating a bounding box around the convex set in question and then scaling, we get a probability measure (measure of the entire set is 1). Some sorts of random walks inside this bounding box will converge to this scaled Lebesgue measure. I think this is the main idea behind the convex volume estimation algorithms.

The oracle you mention is the indicator function of the convex set. Instead of integrating this indicator function directly over Lebesgue measure to get volume, we can use MCMC to get the "expectation" of the oracle.

It's not obvious if we can realize the Riemann zeta function as an integral over a finite measure space, but if we could, I think MCMC could be used to evaluate it.

<comment><USER5> Yes, what you just wrote is evident. I'm saying, in response to your assertion above, that it is _not trivial_ to derive a useful result about approximating the volume of convex sets with MCMC, and _not at all obvious_ that anything smarter than independent probes will be useful. I happened to read the original 1991 paper on this topic during my PhD, so I'm still vaguely familiar with it.

To clarify: It's clear than you can approximate a convex volume with exponentially-many independent (random or deterministic) probes. That's therefore not an interesting problem.

Surprisingly: there is NO deterministic algorithm that can solve this problem in polynomial time. But, surprise #2: a randomized algorithm using MCMC can. Pretty cool.

So, this is the relevance of MCMC to the convex volume problem. Used cleverly, it can take you from exponentially-many probes to polynomial.

And in particular: You talk about "creating a bounding box" for the reference Lebesgue measure -- saying that this first step is easy is basically assuming the whole problem is solved. Because: How do you create a bounding box around a convex set in R^d, with polynomially-many probes, so that the error is bounded? You can do it with exponentially-many probes (just go out along each orthogonal axis). But that's not interesting -- if you have that many probes, forget about MCMC, just use a deterministic algorithm.

Here's a short summary: [http://www.cs.berkeley.edu/~sinclair/cs294/n16.pdf](http://www.cs.berkeley.edu/~sinclair/cs294/n16.pdf)

</comment></comment></comment></comment><comment><USER6> I'm a scientist who uses MCMC to sample the parameter space of a model and dataset, to get some idea of the uncertainties on the models parameters. These parameters are all continuous (albeit at the finite resolution of floating point numbers). Can someone from a CS background explain how this set approach connects to my idea of MCMC?

For any scientists, I'd heartily recommend emcee [1] as a sampler. This uses Goodman-Weare instead of Metropolis-Hastings, which works a lot better in practice, without having to figure out proposal distributions and so on.

[1] [http://dan.iel.fm/emcee/current/](http://dan.iel.fm/emcee/current/)

<comment><USER7> This is something addressed by probability theory, not CS. While MCMC is easier to explain and understand for discrete spaces, it can also be used for continuous spaces. As a non-mathematician I just think about this as "discretizing at an infinitely high resolution", but of course to an actual mathematician/statistician this is nonsense.

</comment></comment><comment><USER8> MCMC is waaay more general than metropolis-hastings, which is what all that "bullshit" is about.

</comment><comment><USER9> Let me make this easier:

Lets plug a bunch of numbers into a function and sum them all up. That sum is the integral of the function that we plugged all the numbers into. That's the Monte Carlo method part.

To get the Markov chain part, we just randomly produce a new number based on the one we just got out of the function, to plug back into the equation.

</comment><comment><USER10> That post was still quite full of equations my brain didn't feel like processing at this time of night.

Used some google and found a stackexchange answer that I thought was clearer

[https://stats.stackexchange.com/questions/165/how-would- you-...](https://stats.stackexchange.com/questions/165/how-would-you-explain- markov-chain-monte-carlo-mcmc-to-a-layperson/207#207)

</comment><comment><USER11> Ok, instead of reading a Wikipedia page or two, or the most elementary chapter in a probability/statistics textbook and gaining a bunch more skills (among them the tools needed to reason about whether your MCMC is doing anything close to reproducing the original distribution), I can peruse a huge blog post filled with patronizing language and it doesn't even have the Metropolis- Hastings algorithm listed out even in pseudocode. Got it, this is what progress looks like.

<comment><USER12> I feel as though your comment comes very close to "gratuitous negativity" of the type mentioned recently on the YC blog.

[http://blog.ycombinator.com/new-hacker-news- guideline](http://blog.ycombinator.com/new-hacker-news-guideline)

Clearly, a blog post primer it is not an alternative to an encyclopedia article or a textbook chapter. Rather it provides something not fulfilled by either: a brief introduction to a technical subject that relies on very little prior knowledge.

I am sure that Jeremy is well aware of the challenges involved in writing in a style that is straight-forward without being "patronizing". Perhaps you don't like the balance that he has found, but is that a good enough reason to outright dismiss his efforts?

Lastly, much of the post is in fact a plain-language explanation of the Metropolis-Hastings algorithm, and he adds: "... if demand is popular enough, I could implement the Metropolis-Hastings algorithm in code"

<comment><USER13> I was really surprised to view the comments, and find the attitude expressed in the GP's post #1.

If anything, I read this and thought something along the lines of, "I wish some of the subjects I learned in college were explained this way, at least to start."

Now, I fully appreciate understanding fundamentals, and not black boxing things (see the ongoing framework debate posts), however I didn't read that article looking to be spoon fed a black box for ML or anything...I was just bored and curious. So it made for good reading.

Perhaps I'm generalizing too far, but it reminded me of when I was presented with the classic Lamport paper on "Time, Clocks, and the Ordering of Events in a Distributed System" in undergrad. This would have been around 2004. I had been working (i.e. coding for money) for some time by then, but back then, you could still build a lot with a relatively stock LAMP stack (or similar.) MongoDB, Riak, Redis, Cassandra, DynamoDB, etc. were not all commonplace (much less things you could have a cluster ready to play with by means of a simple 'vagrant up'.) So when I was given the paper, without much context, I had a hard time really "getting it", or how it applied to me. I'm pretty sure I eventually got some commentary on it from the professor in class, while hurriedly going through powerpoint slides, probably anxious to get back to his research. Then a test question or two about it later.

Years later, after working more, and "distributed systems" becoming more of a tangible thing, I re-visited it, and it made more sense. Anyway, my point is that had I gotten some sort of a, "and here's what the paper is talking about, and how it applies to something tangible, in plainspeak", it would have been useful - so we shouldn't groan about an article like this. Someone out there is going to understand the subject much better thanks to that post.

[Note to the reader that's very familiar with the vector clocks paper - <USER2> realize it's not written with that much jargon, and DOES do a decent job in the introduction section of using plain language, but the purpose was just lost on me. I mean, it makes reference to ARPA Net, and then goes on to determining event ordering. It just didn't equate to any thing in my world view, and I had done a decent bit of multi-threaded/process programming by then too.]

<comment><USER8> It would get a better reception without the intro paragraph and if it were titled "an introduction to Metropolis Hastings." The post really doesn't even give you a taste of the most common MCMC algorithms, and what they are useful for.

For instance, sampling from complicated Bayesian models, and Gibbs sampling are the two most important things to introduce to roughly cover MCMC and those are in the paragraph he calls "bullshit" because he doesn't know the words.</comment></comment></comment></comment>


Ubuntu 10.04 Appearance Changes vs Ubuntu 9.10 - <AUTHOR> http://beginlinux.com/desktop_training/reviews/ubuntu-1004-appearance-changes <comment><USER2> As a huge fan of Linux, I have to say the modern Apple and Microsoft operating systems look significantly better.

<comment><USER3> I agree. I find the new kubuntu with kde 4.4 much nicer.

<http://www.kde.org/announcements/4.4/plasma.php>

<comment><USER4> The engine/mechanics/code in KDE 4.4 are great, but I hate every single KDE theme. Way too much candy, way too cheesy. I personally kind of wish the two projects would merge in just the right way.

<comment><USER5> very true - take a look at the Klassik theme combined with Skulpture.

I really wish someone would make a better theme - gnome themes look so much better.

</comment></comment></comment></comment><comment><USER6> I think it's a big step backwards. It just doesn't fit. The selling point of Linux, as a desktop OS, would be its stability, reliability, flexibility, etc. I don't think using these weird exotic colors in such inconsistent ways sells those points very well. It looks very amateurish. Of course the point is made you can change the colors/theme easily but let's face it -- lots of people are going to look at the screenshots and make huge irrational assumptions based on them. Something cleaner and more professional looking would capture the essence of desktop Linux better in my opinion. I've always liked the default CentOS theme:

[http://upload.wikimedia.org/wikipedia/commons/7/7e/Centos41-...](http://upload.wikimedia.org/wikipedia/commons/7/7e/Centos41-desktop- en.jpg)

<comment><USER7> But you could also argue it the other way.

Staying with a stereotypical light gray desktop theme is easy and doesn't distinguish it from anything else out there. Mac and windows both made bold decisions with their UI, not all of which may have appealed to a lot ot people (remember "pinestripes" on mac? remember the cartoonish look of XP?).

While I do see this theme as slightly unual (in that it's a "dark" theme), I do applaud them for taking a risk.

</comment></comment><comment><USER8> For as much complaints that people had for this x button being on the wrong side, I have to say that I am really impressed with the growth between these two releases.

I understand where Ubuntu was when it came up with the brown design, but they hit a cord with the linux community and realized that they outgrew what they originally set out to do. I think the design shown in 10.04 really shows that understanding.

<comment><USER9> Agreed, I personally moved the window controls back, but otherwise 10.04 is a huge step forward.

</comment></comment><comment><USER10> I installed the beta a few days ago, while it isnt an overnight, omg this is better than osx, it certainly is a big improvement.

the default menu bar is incredibly nice, very similiar to osx, and glad to see the new weather icons that have a great finish (the old ones were so bad they were often confused as a bug)

The rest of the changes arent that significant, the new buttons and scrollbars are nicer but arent a huge improvement. I quite like the toolbar text, dark themes have always been my preference.

nautilus is still godawful, I am not a particularly huge fan of finder but nautilus does obviously lack here.

but I did take the time out to try xmonad and I am loving it - <http://junk.arandomurl.com/xmonad.png> , ill probably write it up soon.

</comment><comment><USER11> The big question for me is: if I upgrade to 10.04, will it by default overwrite my colour scheme and other things I've set up on my desktop?

Because it took me time to set up the colours / fonts / effects / etc the way I like them, and I'm buggered if I'm going to let some arrogant bastard tell me I have to either (i) have my desktop they way he wants it not the way I want it, or (ii) re-do all that work.

<comment><USER12> Nop, I did that and it will keep all your changes... you'll just notice the improvements over the notifications area.

</comment></comment><comment><USER13> Looks to me like an unfortunate step sideways in usability. Hopefully I'll be proven wrong when I try it myself.

<comment><USER14> Are you referring to the positioning of the window control icons?

</comment></comment><comment><USER15> It's much more important to me to be able to change the resolution on my monitor (impossible to do anything other than 480x640 on 9.10) than what color the default theme is. What I mean to say is that for Ubuntu to displace Windows in any measurable amount, the things that users expect to work have to work. While I am happy to edit my xorg.conf file because ubuntu doesn't recognize certain graphics card/monitor combinations, my mother would not. My office laptop was recently upgraded from Windows XP to Windows 7. The background colors and overall theme changed. After a few days, I didn't notice it any more, nor was there a HN post about the color scheme change. What I did notice was that offline folders worked a lot better than with XP. Those are the changes that actually make a difference to users. Users adapt to different themes and visuals pretty quickly. Ubuntu has made huge strides in desktop linux usability, but Canonical needs to continue to focus on ironing out the last remaining kinks so it "just works."

</comment><comment><USER16> While I really like what they're doing design-wise in ubuntu, the second screenshot makes me kind of sad. I really think they should strive for less administration applications, instead of adding more.

<comment><USER17> All the ones showing are the ones that show up in a default 9.04. The 9.04 example, for some reason, has hidden a few.

</comment></comment><comment><USER18> Yeah well the more important thing seems to be that they changed gnome-over- compiz setting to gnome 3.0 w/ gnome-shell, which means the compositing window manager is now part of the gnome. While some ideas in gnome-shell are quite cool (though obtainable in gnome 2.x as 3rd party stuff like gnome-do project), the stability on some GPU hw/firmware/driver configurations may be sucky.

And if you care about your current gnome2+compiz configuration, it will be most probably messed by upgrading.

</comment><comment><USER19> The nice thing about Ubuntu/Gnome is how easy it is to customize. As long as Emerald Theme Manager still works on 10.04, this release should be great.

I also prefer the window buttons on the right and it's good to know that we have a choice. On my MacBook I just have to accept it as is.

One thing I would love to see from Ubuntu is clean fonts working out of the box like Windows and Mac. I think that would be game changer for desktop Linux.

<comment><USER20> _One thing I would love to see from Ubuntu is clean fonts working out of the box_

Sounds like a matter of difference in personal preference. I'm pretty sure that the way fonts look out of the box is intentional, not a deficiency for which devs are actively seeking a solution.

</comment></comment><comment><USER14> I've noticed the window manager under Lucid is much more responsive. I'm not sure if that's just me though, because I'm unfortunately damned with SiS graphics drivers, and I had to update those manually.

</comment><comment><USER21> Still using those ugly orange folders, though. Hrm.

</comment><comment><USER22> Will they ever get rid of the dual task bars (or panels or what they are called)?

<comment><USER20> They're panels. There's one task bar (window list) on the bottom panel by default. And you can get rid of them now if you want. I'm reading comments like above mentioning how Linux Mint's look is aesthetically pleasing. Really? It's almost all GNOME. Why discuss a whole change of distro to get a different theme/look? Just change the theme.

It's not even like you're downloading third party apps or doing registry tweaks/resource hacks on Windows 10 years ago. Context menu→"Delete this panel". It's less of a hassle than managing your desktop icons. It's just like making sure Firefox's "Always show the tab bar" preference is set to the value you want it to be.

More broadly, it seems like any level of hullaballoo about Ubuntu's default theme is too much. Who actually sticks with the default theme?

<comment><USER22> I usually stick with the default theme, except for reconfiguring the panels. Why change the default theme? Last time changing themes excited me was when I had an Amiga 500.

<comment><USER20> There's hardly excitement from me. My choices are mostly functional; I think skinning culture is kind of silly (e.g., especially so with the hype about Mozilla Personas). There are things that I _could_ do to make things look nice or gimmicky, but I'm definitely happy to do without for functional gains, and I do.

Here's the end result of my "theming": <http://i42.tinypic.com/2r5b0pi.jpg>

<comment><USER22> Is it easy to exchange themes? I might be bothered to theme if there is an easy way to set the theme on every computer I use. I suppose some productivity enhancements are possible, I just never took the time.

<comment><USER20> System → Preferences → Appearance to tweak installed themes and create new ones. There's a link there to get more, but there's also <http://gnome- look.org>. The ones from gnome.org are easier to install, because they send the "Content-Type: application/x-gnome-theme-package" header, while gnome- look.org just does plain ol' gzipped tarballs. (Actually gzip vs. bzip vs. raw tarballs might be up to the uploader, I don't know.) You can also save the theme packages, and drag and drop them in the appearance preferences window.

Also, terminology. I think "theme" refers to a packaged deal, which can include window borders, gtk controls, icons, colors, desktop background, maybe more. So the frustrating thing you might find is that you see a theme you like, but it changes your colors and gtk controls, and uses an incomplete icon set, when really all you wanted was the window borders. If you install it, you can do something like revert back to the default Ubuntu theme, click "Customize", and change the window border to the one installed by the theme. This is is probably easier than trying to customize the new theme itself, especially since if you're used to the Ubuntu theme, you'll probably find that your desired look has more in common with it than the new one you just downloaded.

My enhancements are pretty low key. I mute the colors, scale down the font size to 9 to make more use of screen space, and use the SlicknesS window border, which has a smaller footprint than the Human window border.

Something else that's mildly frustrating is that the window borders' colors have almost (completely?) nothing to do with the color scheme. If you think, "Oh I like this, but I'm going to get rid of the insane colors.", you're probably out of luck.

</comment></comment></comment></comment></comment></comment><comment><USER23> I totally can't wait! 7 days left!

<comment><USER14> I already upgraded, and I'm quite pleased with the changes. Unfortunately, the new default theme is slightly buggy; for example, when you open gvim from a terminal, you get various error messages show up which are to do with the window manager. I swicthed back to the "Human" theme, and the error messages disappeared.</comment></comment>


Apple has built an office for grown-ups - <AUTHOR> https://www.ft.com/content/6e873378-5d68-11e7-b553-e2df1b0c3220 <comment><USER2> man, i'm not subscribing to read some clickbait bullshit.</comment>


An overview of direct memory access (2014) - <AUTHOR> https://geidav.wordpress.com/2014/04/27/an-overview-of-direct-memory-access/ <comment><USER2> Cool! I hadn't realized that PCI and PCIe were successors to DMA, and it's nice to see an overview of how application processors shuttle data around quickly.

If you want to play with DMA concepts on a less complex level, most modern microcontrollers implement it in some form or another. If you write a program that needs to move a lot of data quickly, like drawing to a display or using an SD card, the difference in speed and reduced overhead is dramatic.

I guess it's a basic concept that most people here will find pedestrian and unremarkable, but I really appreciate how flexible and powerful it can be. You just have to configure a DMA channel pointing at two memory addresses, and then the data moves in the background while the CPU goes off to do other things. You can send data from memory to an external device, or vice-versa, or within the chip's internal memory. You can usually wire two peripherals together to implement 'dumb pipes' which require almost no intervention from the CPU to keep working. Most chips will also let you trigger DMA transfers from arbitrary signals such as hardware timers, so you can also 'set and forget' things like sending audio data to a DAC at a specific bitrate.

I can see how it would be inadequate for the enormous bandwidth required to host multiple devices like GPUs and Ethernet ports, but DMA is still fun. A more elegant protocol for a more civilized age :)

<comment><USER3> DMA originates from a time when the CPU accessed memory via the North Bridge chipset; in effect, the CPU was just one of many peers in accessing memory, and data could be transferred between memory and devices without ever touching the CPU.

These days, RAM hangs off the CPU -- and even "DMA" involves data passing through the CPU.

<comment><USER2> >These days, RAM hangs off the CPU -- and even "DMA" involves data passing through the CPU.

Not for the microcontrollers I was talking about, it doesn't. They have built- in bus arbiters to manage access to the internal RAM across the CPU and each DMA channel.

Not every "CPU" is an application processor. But thank you for the history lesson! I guess the term "DMA" has become sort of generic these days.

</comment></comment></comment><comment><USER4> The author states:

>"Virtual memory is continuous as seen from a process' point-of-view thanks to page tables and the memory management unit (MMU). However, it's non-continuous as seen from the device point-of-view, because there is no MMU between the PCIe bus and the memory controller (well, some CPUs have an IO-MMU but let's keep things simple). Hence, in a single DMA transfer only one page could be copied at a time. To overcome this limitation OS usually provide a scatter/gather API. Such an API chains together multiple page-sized memory transfers by creating a list of addresses of pages to be transferred."

So a DMA controller accesses physical memory pages and not virtual memory pages? Is there a reason why it doesn't go through the MMU like everything else? Is this something historical?

If a IO-MMU is present would there be an reason to use a scatter/gather API?

<comment><USER5> It would be expensive as the DMA's MMU would now have to maintain a large TLB to be performant, and there would be a startup overhead as new page information is loaded.

</comment></comment><comment><USER6> Is RDMA the same as kernel bypass?

<comment><USER5> Generally RDMA implies kernel bypass as the point is to write into a process' address space efficiently, but you could conceivably implement RDMA in a way that goes through the kernel, e.g. by using a conventional NIC and doing a copy into the corresponding address space manually. Note that there are many other things using kernel bypass that are not RDMA.

</comment></comment><comment><USER7> This author needs to spend some time looking at ARM, AARCH64, RISC-V etc, as the entire article has a heavy Intel/AMD/PC bias.

<comment><USER7> because, yes, "computers" still contain DMA controllers.

we use them all the time.

<comment><USER7> [https://www.st.com/content/ccc/resource/technical/document/a...](https://www.st.com/content/ccc/resource/technical/document/application_note/47/41/32/e8/6f/42/43/bd/CD00160362.pdf/files/CD00160362.pdf/jcr:content/translations/en.CD00160362.pdf)

[https://www.sifive.com/soc-ip/dma-controller](https://www.sifive.com/soc- ip/dma-controller)

These are far from "legacy" applications, I can assure you. Very little to do with the ISA bus, I can assure you.

The author neglects to mention how DMA works, nor discuss Stride size, etc.

Additionally, the topic of how the MMU integrates with DMA and the issues raised are merely glossed over. [https://patchwork.kernel.org/patch/10671331/](https://patchwork.kernel.org/patch/10671331/)

and yes, "address translation"... as DMA needs physical addresses.

to be sure, stuff like the R-Pi confuses people, as the CPU is a "device" to the broadcom GPU that drives the boot process/show, and hence "bus addressing" internal to the CPU...sigh.

<comment><USER8> Rather than casting scorn why not step up to the plate and do what the author has done here but for the architectures that you know?

I spend a fair bit of time in the Arm space and didn't find the article incorrect, just PC focused. I don't think the author claimed to be the authority on everything DMA.

<comment><USER7> Having thought about it a bit, despite my admitted lack of expertise, I guess I left the OP article wondering what DMA actually does, rather than how it historically worked on a given architecture and dismissing it as passe. Some explanation of the actual workings of it would go a long way towards explaining DMA, vs this article on bus mastering.

1) a description of the dma state machine and what it does over and over again. "so look, you configure xyz and then it copies from A to B over and over again in x sized chunks" etc... maybe a mention of the general moving parts you may find in some kind of dma system... channels, multiplexing, etc. (i got something about an interrupt out of the op article, which is definitely true but not the main story)

2) the concerns this naturally raises, when discussing memory management, virtual memory, etc. (thus, the discussion of paging would then make sense after #1)

3) the particular implementations and their locational/positional implications. devices, busses, host, addressing schemes, etc. (here is where the bus mastering could be best contextualized)

I basically think that it wasn't about DMA, as such, and by ignoring the "how DMA works and is used" part, it basically then didn't provide any means for technical analysis of bus mastering, etc.</comment></comment></comment></comment></comment>


On Downloading Files - <AUTHOR> https://maheepk.net/on-downloading-stuff.html <comment><USER2> It still amazes me why this has not gotten better. I had gotten used to presuming that there was a better ecosystem of tools that connected curl, wget or aria2c to the browser that I was incapable of finding. None of the extensions I've tried provide anything close to reliable performance.

The problem with using curl and wget directly is encountering websites that generate a one-time, non resumable link which they then communicate to the browser. In most of these cases, it requires a fair bit of reverse engineering and mocking requests to get the link in bash, in an unspoiled state so curl can download it.

The best option I've found at the moment is JDownloader2. It's been the most reliable downloader for complex files while being simple enough to use with its integrations.</comment>


New Asus 'gaming' phone has more USB ports than 13" Macbook Pro - <AUTHOR> https://arstechnica.com/gadgets/2018/06/asus-insane-gaming-phone-has-3-usb-ports-clip-on-cooling-fan/ <comment><USER2> And exposes a common flaw in phones, cant run at full speed without throttling due to heat. It has to have a fan to be used at its advertised available performance.

If I buy a car, and expect to do the speed limit on the highway, but it will only do the speed limit for a few minutes, then needs to slow down due to heat, that sounds like fraud.

<comment><USER3> Wouldn't a more fair comparison being buying a car, doing the speed limit on the highway all day but also going much faster on the track? But of course you can't drive at full-tilt on a track all day without additional parts?

<comment><USER4> I think the original comparison is more valid. If you follow the prescribed maintenance schedules, new cars are designed to run to the edge of their operational envelopes for their warranty period. Note this isn't usually dictated by engine power, but suspenstion and tire speed ratings.

Cars are incredibly over engineered machines.

<comment><USER3> There are performance limits reached where the brakes will overheat and you'll need to give it a rest before having another go. Even built-for-purpose race cars have these limits and drivers carefully conserve their brakes so they don't go bad before the race is over.

I think you might be terribly disappointed if you tried to stress your new car all day long on the edge of its suspension, braking and engine limits.

<comment><USER4> Your example of a race car being driven to complete a race isn't a valid comparison. It's designed and driven to complete that race. Which is vastly different operating conditions than what a consumer car is built for.

Consumer cars are not built to run race courses. I think you're confusing my statement of operational envelope with abusive behavior that it wasn't designed for. Consumers cars are built to be driven on the street in a wide variety of environments. From mountains to Autobahn to temperature extremes, etc... All within the advertised operational specs.

This is actually about the comparison the OP made that you disagreed with. A consumer car is able run at its designed and advertised speeds all day on the Autobahn, without overheating or having to stop and cool down, provided some other variable isn't out of spec. This phone isn't able to run at its advertised speeds continually, the same as a car could. Shocking as it may seem, cars are built to run on roads and at speeds in excess of what the US limits are.

<comment><USER3> Edit: Life is too short to argue about this kind of thing on the internet. Have a nice day.

XKCD386.

</comment></comment></comment></comment></comment></comment><comment><USER5> I wonder if they will provide an option to run Linux when it's plugged into the display. It seems like they're giving it quite the bandwidth to drive a 4K display and fast charge power through the multiple connectors, so it would be nice to see the ability to have this to use as a portable development machine.

At least this is the main selling point for me, coming from iPhone I really do want one to see about doing that on. Of course, being Android/ARM, the kernel might not be the friendliest of all things to be running for development and it might not be updated after a few years. I could imagine that some development would be needed to make the transition from dock to phone more smooth, but I think they could make it work.

I do quite like the attention paid to thermals and power in this device, the 20W power supply surely solves the 'drains when using and charging at the same time' issue unless they decide to throttle current draw when the screen is on like Samsung used(?) to? Seems like the fan might help, given that desktop workloads might push the processor hard.

</comment><comment><USER6> There seems to be a lot of criticisms about this phone that I've seen on reddit, here, and elsewhere.

Personally I would LOVE to have a phone with a USB c port on both sides of the chassis so that I could charge while using a USB-audio jack converter or doing something else with it. Multiple USB ports would offer functionality to people that has not previously been possible with these devices.

I see this as a super innovative product in a market segment that is seeing stagnation. The customers are screaming for bigger batteris and instead we get thinner fragile phones made of glass. People want more jacks sdcard slots and other features, but OEMs are taking features away. All the while, prices are being jacked up, and triple junk cameras are being added.

I think the smartphone market is ripe for a shakeup. If not from some real innovation, from the customer base just refusing to upgrade to more expensive fragile phones that don't offer the features they want at an outrageous price.

</comment><comment><USER7> Because it is marketed towards people who buy a spec sheet, not a user experience. Personally I love the fact that one single USB-C port + a decent dongle can replace lots of ports.

</comment><comment><USER8> It also has the same amount of RAM. :)

</comment><comment><USER9> I personally can't remember however when I cared about the amount of USB ports in my Mac.

</comment><comment><USER10> Looks like they may as well have put a sim card in a Nintendo Switch cartridge and called that a phone.

I can't see it gaining any adoption when all the add ons make it a worse phone, it's too bulky to carry around and probably unsupported by most developers.

I'm pretty confident this will end up on top of the increasingly large pile of failed convergent devices, because convergence is a fundamentally flawed idea.

<comment><USER11> > Looks like they may as well have put a sim card in a Nintendo Switch > cartridge and called that a phone.

It's the exact same size as a pixel 2 XL, so I have no idea what you mean. A switch is twice the size and thicker too. This isn't actually bigger than a normal phone.

</comment></comment><comment><USER12> Cool fake notch

</comment><comment><USER13> Ugly generic Android ((gaming)) phone has more USB ports than beautiful slimeline 13" Macbook Pro.

 _𝐁𝐫𝐞𝐚𝐤𝐢𝐧𝐠 𝐍𝐞𝐰𝐬_ We have yet to find a use case for full sized USB ports on a phone. Hence why most OEMs would never do something so redundant to begin with.

For anyone that really wants to plug their keyboard into their 5 inch phone, here's a solution [https://www.amazon.com/dp/B01GGKYYT0/ref=asc_df_B01GGKYYT055...](https://www.amazon.com/dp/B01GGKYYT0/ref=asc_df_B01GGKYYT05500367/?tag=hyprod-20&creative=394997&creativeASIN=B01GGKYYT0&linkCode=df0&hvadid=167151358503&hvpos=1o1&hvnetw=g&hvrand=18314643098739460435&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9007562&hvtargid=pla-490647422152)

<comment><USER6> This phone doesn't have full-sized USB ports.</comment></comment>


Amazon's house-brand products become a target for regulators - <AUTHOR> https://www.axios.com/regulators-amazon-house-brand-products-385ac5c1-e3e8-4c5f-b7fa-40beca19ceb3.html <comment><USER2> I have noticed that most name-brand electronics products such as Apple, Logitech, etc. are RoHS compliant because they sell internationally. Thus the european standards for toxicity get exported.

House brands from companies with large sales volumes in the U.S. such as Amazon and Wal-Mart frequently don't have RoHS labels.</comment>


Ask HN/PG: What's with the influx of "Here's how I got into YC"? - <AUTHOR>

<comment><USER2> Writing startup anecdotes for HN has always been a tiresome form of marketing various startups choose to do, but I believe the increased rate at the moment is because YC applications are closing soon.

</comment><comment><AUTHOR> Here's 3 examples in the last 24 hours:

Zappier: <http://news.ycombinator.com/item?id=4718595> MakeGamesWith.us: <http://news.ycombinator.com/item?id=4715627> PayDragon: <http://news.ycombinator.com/item?id=4714859>

</comment><comment><USER3> Zappier explains that the influx is part of the "tradition of recapping YC experiences, especially around the acceptance process during the beginning of a new YC batch..."

I read every post like Zappier's and found them all to be immensely useful. I personally would like to read more.

<comment><USER3> Sorry the startup name is spelled Zapier

</comment></comment><comment><USER4> It's just because today YC applications were going to close. Because of storm 'Sandy' PG has pushed de deadline to Friday but don't worry because when the application closes no more info about "How to get into YC" will be published

</comment><comment><USER5> Would be entertaining to me if each of the douchewattles who wrote these would have their offers revoked.

Fuck you if you "hacked your video". You didn't "hack your video". What could that possibly mean? Just listen to yourself.

</comment><comment><USER6> An attempt at some subtle publicity.</comment>


C64 Yourself: Browser-based image converter to C64 color palette - <AUTHOR> http://c64.superdefault.com/ <comment><USER3> Have you considered adding the ability to use dithering on this site? I made a similar tool a while back (to convert an image to an arbitrary color palette), and one of the main things I learned was how powerful dithering can be.

For example, here are two images I created using my old tool to convert an image to the C64 color palette. Unlike the website, my tool isn't currently capable of doing the double-wide horizontal pixels, but it still illustrates the effect I think:

Without dithering: [http://imgur.com/nQL0y6i](http://imgur.com/nQL0y6i) With dithering: [http://imgur.com/jfwUgnC](http://imgur.com/jfwUgnC)

If you're interested, Wikipedia has a great example (with code) of the Floyd- Steinberg dithering algorithm, for example: [https://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dither...](https://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering), which I imagine wouldn't be too hard to integrate into your site.

</comment><comment><USER4> What a great idea! I would love to see a "save AS disk" option that would let you download a D64 disk image containing the rendered graphics in some appropriate format like KoalaPainter or Amica Paint.

<comment><AUTHOR> There are some good cross-dev C64 graphics editors out there on the PC - <USER2> think most of them will let you import pictures, convert them, then save as PRG (etc) executables you can run on a real C64.

PC:

\- Timanthes: [http://csdb.dk/release/?id=75871](http://csdb.dk/release/?id=75871)

\- MultiPaint: [http://csdb.dk/release/?id=156376](http://csdb.dk/release/?id=156376)

\- ProjectOne: [http://csdb.dk/release/?id=86776](http://csdb.dk/release/?id=86776)

\- PixCen: [http://csdb.dk/release/?id=149752](http://csdb.dk/release/?id=149752)

OSX:

\- [http://csdb.dk/release/?id=156376](http://csdb.dk/release/?id=156376)

</comment></comment><comment> bump-ladel There is also Retrospecs, an iOS app, that can simulate many retro computing looks. It's a lot of fun.

[http://8bitartwork.co.uk](http://8bitartwork.co.uk)

</comment><comment><USER5> Would love to try this but limiting the upload to drag and drop makes it hard for me. Not everyone uses Windows or Mac you know. Is there any way to upload stuff to these without having graphical file manager?

<comment><USER6> welcome to the app-ification of the web...

<comment><USER7> Not the problem here. A file input control would do the same job and be usable on mobile devices; this isn't "web apps lol", it's a straightforward UI design error.

</comment></comment></comment><comment><USER8> As a ZX Spectrum user I was always jealous of the C64 colour palette. It had a single colour per pixel vs the ZX Spectrum's 1 colour per 8x8 pixel.

[https://en.wikipedia.org/wiki/ZX_Spectrum_graphic_modes](https://en.wikipedia.org/wiki/ZX_Spectrum_graphic_modes)

<comment><USER9> The c64's bitmap mode could either be 320x200 with color allocated in an 8x8 grid, much like the Speccy, or 160*200 with three selectable colors per 3x8 block, plus one background color shared across the whole screen.

It did, however, also have sprites, which could float over or under the main screen.

(If you're willing to dedicate pretty much all of the CPU time to flipping stuff around while the video chip is rendering the screen, you can have finer- grained color selections on the c64, but that's mostly the domain of demos.)

</comment></comment><comment><USER10> here is the same concept, but i use vegetables instead of the c64 color palette [http://veganizer.veganblatt.com/](http://veganizer.veganblatt.com/) never bother to publish or promote it somewhere, should work on mobile, creates huge images.

<comment><USER10> it's MIT, most of the magic happens here [https://github.com/franzenzenhofer/veganizer2/blob/master/js...](https://github.com/franzenzenhofer/veganizer2/blob/master/js/veganizer2.coffee)

</comment></comment><comment><USER11> Not having an alternative method using a file selection dialog is extremely annoying on some platforms.

</comment><comment><USER12> does this include the ones made by color switching?

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

<comment><USER13> Unfortunately, no. But thanks for sharing that, that's really cool!

</comment></comment><comment><USER14> Cool! I've got an urge to go out and take some photos, run them through this and create a retro adventure game.

Do you think it would be possible to do the image conversion in Javascript so it does not need to be uploaded to the server?

<comment><USER15> The "C64ication" (if that's what you mean by conversion) actually happens purely in JavaScript - if I understand the source correctly, the image is only _resized_ on the server.. but the whole shebang can be done client-side.

Yep. Would be awesome if the author(s) released this as a MIT licensed JS lib. Would love to use and credit it myself! :-)

</comment></comment><comment><USER16> Does it limit character cell (8x8) to 2 (or 4?) colors?

</comment><comment><USER17> Needs upload button (viewing on tablet)

</comment><comment><USER18> That name is so, so good.

</comment><comment><USER19> ok dis hard</comment>


What really happened to the software on the Mars Pathfinder spacecraft? - <AUTHOR> http://www.rapitasystems.com/blog/what-really-happened-to-the-software-on-the-mars-pathfinder-spacecraft?reposting <comment><USER2> _Engineers later confessed that system resets had occurred during pre-flight tests. They put these down to a hardware glitch_

This doesn't really ring true to me. Sounds like the sort of programmers who are inclined to blame "cosmic rays" for odd behavior that they don't understand.

I would think on a mission as expensive as the pathfinder, and knowing that once the hardware is launched you will never have physical access to it again, ANY anomalous behavior would have been tracked down to root causes during testing.

<comment><USER3> >\Sounds like the sort of programmers who are inclined to blame "cosmic rays" for odd behavior that they don't understand.

In fairness, they go out of their way to harden they computers against cosmic rays. I am sure that they make a decision about what an acceptable amount of cosmic ray induced error is, and design the system knowing that it will happen. Having said that, I agree that having unexplained problems on the ground should get an explanation before being launched. Even if it was a hardware glitch, they should either have told the hardware people that there was a glitch, or the level of error was within the designed for range and they should not have been suprised when it happened in space.

<comment><USER4> In further fairness, Pathfinder's name was also its job description. It was built on a relative shoestring and in a way, fulfilled its most important function the moment Sojourner rolled onto Martian soil. It was basically a combination prototype/advance scout.

<comment><USER5> Absolutely correct. More context: Pathfinder was done during the Goldin era of better, faster, cheaper.

</comment></comment></comment></comment><comment><USER6> Seeing this article reminds me of [http://www.fastcompany.com/28121/they- write-right-stuff](http://www.fastcompany.com/28121/they-write-right-stuff)

<comment><USER7> Interesting read.

Though correct me if I'm wrong, but I find the article rather biased against iterative/agile way of writing software. Don't get me wrong, I believe there's a time and place for over-2500-pages-of-specs-for-6000-LoC kinda process, but the article seems to be saying that quick iterations are of the stone age/how little children do it and that the way the on-board shuttle group software team wrote their software is the "perfect" way.

<comment><USER6> It's been a while since I've read the article, but I skimmed over it and didn't really get that vibe from it.

I felt it was more "these guys are extreme outliers in terms of software quality, but also extreme outliers in terms of process."

</comment></comment></comment><comment><USER8> For a (much) more detailed story, go here: [https://www.cs.duke.edu/~carla/mars.html](https://www.cs.duke.edu/~carla/mars.html)

<comment><USER5> Thanks for this. It gets in to details about how e fix was deployed and says more about why it was not caught during testing.

</comment></comment><comment><USER9> Did anyone else notice the "?reposting" in the URL? It looks like someone else submitted this 8 hours earlier ([http://news.ycombinator.com/item?id=5991503](http://news.ycombinator.com/item?id=5991503)).

<comment><USER10> none of us are trawling /new and upvoting anything, sadly. Great posts regularly don't get a single click the first time through the HN mill. To be on the front page an article needs to be 1) clickbait title, 2) good content, 3) lucky, 4) posted when the Americans are awake.

Oh well.

<comment><USER11> The last bit is the main thing I think. The original has exactly the same title and original poster has a lot higher karma.

</comment></comment></comment><comment><USER12> I've been using OCC to avoid this problem with my apps, and I couldn't be more happy. It mostly voids issues with priority inversion. (Not exactly, if using pre-emtive scheduling and long running high priority tasks.) It doesn't matter if something is stuck, looping, crashes or so, it still won't bring down the whole system. + Offers great parallel performance as long as resources aren't too widely shared. I got sick'n'tired administering (and creating) systems as DevOp, when I were using traditional locks and all the problems which those caused, even on top of poor performance.

<comment><USER13> What's OCC?

<comment><USER6> Took quite a bit of Googling, but it looks like it's optimistic concurrency control.

</comment></comment></comment><comment><USER14> There were rumors that older generations of spacecrafts fly on lisp systems. Nevertheless, you see, they had C-interpreter (REPL) there.))

<comment><USER15> You're likely thinking of this essay: [http://www.flownet.com/gat/jpl- lisp.html](http://www.flownet.com/gat/jpl-lisp.html)

<comment><USER16> Or this: [http://www.youtube.com/watch?v=_gZK0tW8EhQ](http://www.youtube.com/watch?v=_gZK0tW8EhQ)

<comment><USER14> Thank you for this. This is almost a meta-story, how "politicians"/"managers" are always ruining everything that is good and true, meaning of which they genetically incapable to grasp.

</comment></comment></comment></comment><comment><USER17> I did some embedded sw on vx works based systems back in the day. Any embedded engineer we interviewed had to know what priority inversion was.

<comment><USER18> Yeah, this has been a common topic in any embedded job interview I've had since the 90s, and not just on VxWorks jobs. The Pathfinder case study is pretty well known.

</comment></comment><comment><USER19> TL;DR concurrency is hard</comment>


Ask HN: Single book/video/article to give my developers? - <AUTHOR> I have a small team of developers with very diverse backgrounds and skill levels. We do simple web applications for internal customers that are database backed (basic CRUD work).
I would like to give the whole group one thing to read or watch to use as a common basis for future discussions.
In my head I'm imagining a book with end-to-end best practices for web development. Something that would provide a jumping off point for the lesser skilled and an area of focus for those more skilled.
I've found a lot of book recommendations but I guess I'm probably looking for that Holy Grail development book. <comment><USER2> Steven McConnell's "Code Complete" or perhaps Robert Martin's "The Clean Coder" would be my recommendation. Granted, they're not web development specific but cover important general aspects of software engineering.

<comment><AUTHOR> Thanks. I've read everything by McConnell and I remember Code Complete as a good book, and the closest I came to an answer as well. I'm familiar with Martin but haven't read The Clean Coder. I'll check it out.

</comment></comment><comment><USER3> The Hitchhiker's Guide to the Galaxy by Douglas Adams.</comment>