Android Developers Blog: Exercising Our Remote Application Removal Feature - <AUTHOR> http://android-developers.blogspot.com/2010/06/exercising-our-remote-application.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog%29 <comment><USER2> This poses an interesting question. What's worse for Google: media claiming "Android is unsafe: Google refuses to remove malicious software" or raging users?

<comment><USER3> I don't know. For me this is very obvious proof that you can have all the freedom of Android and all the supposed security of Apple's app store all in once. It makes it harder for Apple to argue for their model without looking stupid.

</comment></comment><comment><USER4> Is this also available to developers ? For example, I would like to know I could remove remotely one of my applications if I wanted to.

<comment><USER5> Even as a developer, I hope to God that is _never_ available to anyone but Google.

If I've downloaded a free app, and the developer decides he wants money instead, I don't want him having the power to forcibly uninstall the free app from my phone as "incentive" to buy the paid version.

I could probably imagine other malicious uses of that feature if you need more proof that it's a bad idea.

<comment><USER4> What if, for example, I include by mistake confidential information that I am forced by law not to disclose, or media I don't have the proper copyright for?

For example, I make a statistical financial simulator for Android and by mistake the build includes my test data which is from some big bank ? Being able to pull the plug on that build would be really nice -- because I'm pretty sure nobody at Google would care to help you with that.

Or, I might do an audio player and I'm including some music whose copyright expired in the rest of the world, but not in US.

Indeed it might do more harm than good that normal developers have the right to do this, but if you assume developers are responsible about it, it might be a good thing. For example, Google could supervise this or charge a flat fee, etc.

<comment><USER5> Or don't include sensitive data in your test set or build system. If you include something in a release that you should not have included, then you are responsible full stop, and a revocation system is not a solution. This sort of functionality should not be used to fix developer mistakes; you can't do this sort of thing with desktop applications either, and once again, for good reason.

Even if Google initiates a mass revocation, that doesn't mean the application is no longer in the wild. Users who want to exploit your mistake could just as easily do one ogf the following:

\- Disconnect their phone from a data connection or wifi signal

\- Dump their current ROM/data to a backup image using a 3rd party bootloader

\- Extract the .apk from the phone using root access, using an app like Titanium Backup

\- Install the .apk from a source other than the Market, so that the revocation system will ignore it

Google's mass-revocation system only "works" because it is designed to remove malicious applications from the phones of unsuspecting users. If you make sensitive data public, it becomes public data, period; there's no going back.

<comment><USER4> Well, it was just an example and

>If you make sensitive data public, it becomes public data, period; there's no going back.

this is true, but it sure would be nice to do damage control no ?

</comment></comment></comment></comment></comment><comment><USER6> Here is more info from the security researcher who wrote the app that got removed:

[http://jon.oberheide.org/blog/2010/06/25/remote-kill-and- ins...](http://jon.oberheide.org/blog/2010/06/25/remote-kill-and-install-on- google-android/)

</comment><comment><USER7> This reminds me of when Amazon removed 1984 and Animal Farm from their users' kindles. It seemed to just piss users off, and is kind of a scary feature.

</comment><comment><USER8> My big question about the ability to remove apps from phones, is if a malicious party will be able to impersonate Google and send the "kill" signal?

</comment><comment><USER9> So, after it's too late, we'll remove the app to make it seem like nothing bad really happened.

<comment><USER10> "If an application is removed in this way, users will receive a notification on their phone."

And honestly, you're trying to spin the removal of malicious apps as something _bad_? Really now?

<comment><USER11> They can remove things, that is the point. Today something bad is malicious software. Tomorrow it will perhaps be depiction of two men kissing or political satire as seen on the iphone, who knows ?

<comment><USER12> > Today something bad is malicious software.

Or it might be, it happens that it isn't:

> These applications intentionally misrepresented their purpose in order to > encourage user downloads, but they were not designed to be used maliciously, > and did not have permission to access private data — or system resources > beyond permission.INTERNET.

<comment><USER11> I can read good sir, but I wasn't talking about that. I do think the application they removed was pretty useless (the experiment it was designed for seemed to be over). What they said is that they removed it in order to test their system, which, according to them, will be used to remove malicious software.

So what's labeled at bad is malicious software. And if I am wrong and the experiment wasn't over, then it just makes my point as it is already (in some meanings of the term) abusive :)</comment></comment></comment></comment></comment>


Who tweets about xkcd? - <AUTHOR> http://www.thetwoweeker.com/blog/2014/6/30/kkbbwyicx0nwlprkn7yh2edsiwlrw2

<comment><USER2> That looks like data about

People who read xkcd AND have twitter AND feel compelled to tweet about xkcd.

I suspect that's a small subset of the total people that read xkcd.

<comment><USER3> Maybe the people at "thetwoweeker" only spent two weeks learning logic and statistics.

<comment><AUTHOR> you give us too much credit...finals week at our school was only 1 week long

<comment><USER3> Probably.

</comment></comment></comment></comment><comment><USER4> Recently I enjoy Abstroose Goose [http://abstrusegoose.com/](http://abstrusegoose.com/) a bit more than the recent XKCD strips. If you enjoy XKCD it's probably worth for you to check Abstroose Goose out.

<comment><USER5> Seconded, although they're rarely as concise as xkcd.

</comment></comment><comment><USER6> Assumptions in this post:

>Who reads xkcd?... In the process, we've scraped 20,000+ xkcd tweets

>Although Twitter doesn't contain gender data for tweeters, we were able to identify the gender of each user by their first name.

>We again applied fuzzy string matching to match a reference set of time zones/countries/continents to each tweeter's self-reported time zone.

>We had to make one critical assumption here - namely, that people will tweet shortly after reading.

>We measured this on Twitter by defining: Popularity = # of Followers Likability Ratio = # Followers / # Following

The likability one takes the cake though. Celebrities would be popular _and_ likable. So would people who bought fake followers. People who like to follow a lot would be _unlikeable_.

</comment><comment><AUTHOR> Phew looks like we generated some statistical controversy here....so re: the complaints that our sample doesn't actually capture "who reads xkcd" but rather "who tweets xkcd" \- we hear you. Unfortunately the crux of the problem is that there doesn't appear to be an easy way to draw a random sample from the xkcd population, unless you are Randall Munroe or have access to xkcd traffic logs. Any API you use will probably lead to a biased sample, and given that there's no physical location it's not like we can check who checks into xkcd on foursquare either. But that being said, if anyone knows of a better way to sample "who reads xkcd", please hit is up!

</comment><comment> Dorian-Marie I expected to see XKCD-style graph, like this: [http://mathematica.stackexchange.com/questions/11350/xkcd- st...](http://mathematica.stackexchange.com/questions/11350/xkcd-style-graphs)

</comment><comment><USER7> One of the problems with assuming male/female within datasets is that typically more females keep their gender information confidential, which ends up skewing the dataset significantly.

Also it would have been interesting to compare some of these charts to the overall sample set of Twitter, considering that it also skews more towards "geek", "student", "developer" as well.

</comment><comment><USER8> I'm surprised more people don't find xkcd author's obsession with his ex more disturbing, especially when he makes passive aggressive comments about it in his comics.

I also personally don't find the formula of 'ha ha some science reference I know of!' or graphs in comic form to be humorous.

</comment><comment><USER9> At first I missed the links "Nerd talk" (as I usually don't click on -potentially external- links). They add quite interesting insights!

</comment><comment><USER10> >>They are fathers, husbands, and software engineers. They love, and they like. But above all, they read xkcd.

What about female followers?

</comment><comment><USER11> the "Are they male or female" link is wrong

<comment><AUTHOR> Thanks for the catch, fixed now

</comment></comment><comment><USER12> The headline and pitch are misleading (clickbait?). This is an article about _people who tweet about xkcd_. Which is a combination of people who read xkcd and people who think "Oh, look at this cool comic my friend showed me. I should tweet about it!"

It isn't accurate to extrapolate data from such a specific group to the whole.

[Also, privacy badger blocks squarespace on this site, which breaks the styling ]

Edit: Relevant SMBC comic: [http://www.smbc- comics.com/index.php?id=3374#comic](http://www.smbc- comics.com/index.php?id=3374#comic)

<comment><USER13> I was going to make the same comment. Not everyone who reads xkcd tweets about it, or even uses twitter.

<comment><USER14> And?

You could say that the people who tweet about xkcd are not a representative sample of the people who read xkcd. However, I don't see this as something absolutely intuitive -- my intuition is that it's a slightly distorted sample, but should not be _that_ off. I don't see why the people who tweet should have different characteristics to the people who read.

The thread is full of comments complaining about why the OP took this particular set -- I don't have too much problem with it. It's a sample, and quite a large one.

<comment><USER15> > You could say that the people who tweet about xkcd are not a representative > sample of the people who read xkcd. However, I don't see this as something > absolutely intuitive

That a sample drawn from a group distinct within the target universe by a common factor (as "people who tweet XKCD comics" is within the universe of "people who read XKCD comics") is otherwise representative of the target group is a point which must be justified when using analysis of the sample group to draw conclusions about the target group, not something to be assumed unless there is evidence to reject it.

Because the distinction is, _in and of itself_ , a manner in which the sample group is _not_ representative of the target group.

</comment></comment></comment></comment><comment><USER16> For anyone trying to make sense of this post in the future, the permalink for this blog post is [http://www.thetwoweeker.com/blog/2014/6/30/kkbbwyicx0nwlprkn...](http://www.thetwoweeker.com/blog/2014/6/30/kkbbwyicx0nwlprkn7yh2edsiwlrw2)

(I actually had to view source to find that - it's not visibly linked anywhere on the [http://www.thetwoweeker.com/blog/](http://www.thetwoweeker.com/blog/) page)

(stable links are important, people!)

<comment><USER17> A good trick to get this information without viewing the source code is to simply hit the tweet button ('Share' on the bottom of the page). It will open a popup window with the static URL of the page as a template tweet. Works on most pages and without a twitter account.</comment></comment>


Android user who tried the Apple Watch- it's now the only I'll recommend - <AUTHOR> https://www.androidpolice.com/2019/11/08/im-an-android-user-who-tried-the-apple-watch-for-a-month-its-now-the-only-smartwatch-ill-recommend/ <comment><USER2> Yeah - I envy those with Apple Watches since that's the best one on the market (IMO). I've been waiting to pull the trigger on jumping ecosystems but it's a _big_ change.

Android warning: I've used a Samsung Galaxy smart watch and it was horrible. Messages wouldn't actually notify etc. I used it for a day and never touched it again after spending probably 4+ hours searching forums on how to fix the multiple issues I was having. The breaking point for the Galaxy watch was when I saw people installing dodgy 3rd party apps to get simple stuff like text message notifications working. That experience was bad enough that I have actively been avoiding purchasing Samsung anything, it showed me that they'll ship a buggy product without a second thought.

\---

I can however definitely recommend the Garmin Fenix - I've been wearing a Fenix 3 HR Sapphire for three years now and although it's a VERY simple device (limited colors, very few apps, etc.) it's also very effective. I will go as far to say the simplicity is a feature! It's not as smooth as an experience as the Apple Watch, but it's _very_ solid in comparison to other Android options... It's also insanely durable and something I can work on a car with, go hiking with, etc... it should be WAY more dinged up than it currently is (I attribute this to the whole "sapphire face" thing). I will likely continue to stay in the Android/Garmin ecosystem for the time being.</comment>


Ask HN: How close are we, really, to general AI? - <AUTHOR> I'm curious how close the research community really is to general AI.  And, are there good books or courses that dig into the first principle points of general AI? <comment><USER2> I work closely with applied semantic reasoning, deep learning and other related technologies. I am not an AI expert, or at least I try to dodge that title - I make stuff, and sometimes AI is among the tools I use when doing that.

Ray Kurzweil is an expert though, and 2045 is his estimate of when the Singularity will happen. The Singularity involves a lot of stuff, but basically is Artificial General Intelligence (AGI) applied to human cognition. This will likely happen very quickly after AGI is developed. I think current politics may have pushed that out a bit to 2050-2055, but otherwise I think Kurzweil's prediction is spot on.

Kurweil's book: [https://en.wikipedia.org/wiki/The_Singularity_Is_Near](https://en.wikipedia.org/wiki/The_Singularity_Is_Near)

A dissenting opinion: [https://pando.com/2014/02/03/the-singularity-is-not- near/](https://pando.com/2014/02/03/the-singularity-is-not-near/)

</comment><comment><USER3> _I 'm curious how close the research community is to general AI_

Nobody knows, because we don't know how to do it yet. There could be a "big breakthrough" tomorrow that more or less finishes it out, or it could take 100 years, or - worst case - Penrose turns out to be right and it's not possible at all.

 _Also, are there useful books, courses or papers that go into general AI research?_

Of course there are. See:

[https://agi.mit.edu](https://agi.mit.edu)

[https://agi.reddit.com](https://agi.reddit.com)

[http://www.agi-society.org/](http://www.agi-society.org/)

[https://opencog.org/](https://opencog.org/)

[https://www.amazon.com/Engineering-General-Intelligence- Part...](https://www.amazon.com/Engineering-General-Intelligence-Part- Cognitive/dp/9462390266/ref=sr_1_1?crid=1BJIMVBAWJVFB&keywords=engineering+general+intelligence&qid=1565026386&s=books&sprefix=engineering+general+%2Cstripbooks%2C131&sr=1-1)

[https://www.amazon.com/Engineering-General-Intelligence- Part...](https://www.amazon.com/Engineering-General-Intelligence-Part- Architecture/dp/9462390290/ref=sr_1_2?crid=1BJIMVBAWJVFB&keywords=engineering+general+intelligence&qid=1565026386&s=books&sprefix=engineering+general+%2Cstripbooks%2C131&sr=1-2)

[https://www.amazon.com/Artificial-General-Intelligence- Cogni...](https://www.amazon.com/Artificial-General-Intelligence-Cognitive- Technologies/dp/354023733X/ref=sr_1_3?crid=1BJIMVBAWJVFB&keywords=engineering+general+intelligence&qid=1565026386&s=books&sprefix=engineering+general+%2Cstripbooks%2C131&sr=1-3)

[https://www.amazon.com/Universal-Artificial-Intelligence- Alg...](https://www.amazon.com/Universal-Artificial-Intelligence-Algorithmic- Probability/dp/3540221395/ref=sr_1_3?keywords=universal+artificial+intelligence&qid=1565026451&s=books&sr=1-3)

[https://www.amazon.com/How-Create-Mind-Thought- Revealed/dp/0...](https://www.amazon.com/How-Create-Mind-Thought- Revealed/dp/0143124048/ref=sr_1_1?keywords=how+to+create+a+mind&qid=1565026488&s=books&sr=1-1)

[https://www.amazon.com/Intelligence-Understanding- Creation-I...](https://www.amazon.com/Intelligence-Understanding-Creation- Intelligent- Machines/dp/0805078533/ref=sr_1_1?keywords=on+intelligence+hawkins&qid=1565026533&s=books&sr=1-1)

[https://www.amazon.com/Society-Mind-Marvin- Minsky/dp/0671657...](https://www.amazon.com/Society-Mind-Marvin- Minsky/dp/0671657135/ref=sr_1_1?keywords=society+of+mind&qid=1565026555&s=books&sr=1-1)

[https://www.amazon.com/Unified-Theories-Cognition-William- Le...](https://www.amazon.com/Unified-Theories-Cognition-William- Lectures/dp/0674921011/ref=sr_1_1?keywords=newell+cognition&qid=1565026597&s=books&sr=1-1)

[https://www.amazon.com/Master-Algorithm-Ultimate-Learning- Ma...](https://www.amazon.com/Master-Algorithm-Ultimate-Learning- Machine/dp/0465094279/)

[https://www.amazon.com/Singularity-Near-Humans-Transcend- Bio...](https://www.amazon.com/Singularity-Near-Humans-Transcend- Biology/dp/0143037889/ref=pd_sbs_14_22?_encoding=UTF8&pd_rd_i=0143037889&pd_rd_r=d79ecb55-96c1-47ca-a44f-90251a9c02ec&pd_rd_w=o8qSq&pd_rd_wg=p9Chz&pf_rd_p=43281256-7633-49c8-b909-7ffd7d8cb21e&pf_rd_r=Q4P18WFPACP5RADGC3P5&psc=1&refRID=Q4P18WFPACP5RADGC3P5)

[https://www.amazon.com/Emotion-Machine-Commonsense- Artificia...](https://www.amazon.com/Emotion-Machine-Commonsense-Artificial- Intelligence/dp/0743276647/ref=pd_sbs_14_30?_encoding=UTF8&pd_rd_i=0743276647&pd_rd_r=d79ecb55-96c1-47ca-a44f-90251a9c02ec&pd_rd_w=o8qSq&pd_rd_wg=p9Chz&pf_rd_p=43281256-7633-49c8-b909-7ffd7d8cb21e&pf_rd_r=Q4P18WFPACP5RADGC3P5&psc=1&refRID=Q4P18WFPACP5RADGC3P5)

[https://www.amazon.com/Physical-Universe-Oxford-Cognitive- Ar...](https://www.amazon.com/Physical-Universe-Oxford-Cognitive- Architectures/dp/0195398955/ref=sr_1_3?keywords=anderson+human+mind&qid=1565026631&s=books&sr=1-3)

See also, the work on various "Cognitive Architectures", including SOAR, ACT-R, CLARION, etc,

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

"Neuvoevolution"

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

and "Biologically Inspired Computing"

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

<comment><AUTHOR> These are useful references, thanks.

</comment></comment><comment><USER4> "5 years tops."

\- every AI experts since 1960

<comment><USER3> On a related note: "The AI effect"

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

Loosely paraphrased, as soon as something is working using AI techniques, it's no longer considered AI anymore. Taken to it's logical conclusion, we will never have AI, since any AI - no matter how intelligence - is simply redefined as "not AI".

This is very annoying to people working on AI, by the way. :-)</comment></comment>


Epic Forum Thread on Concorde (2010) - <AUTHOR> http://www.pprune.org/tech-log/423988-concorde-question.html

<comment><USER3> Enjoyable, nostalgic thread. Later on one member (age 78) of the core Concorde design team even appears. Here's an amusing anecdote from early in the thread:

</comment><comment>==

Whilst on the Concorde conversion course at Bristol, occasionally crews would have the privilege of meeting some of the original design engineers and draughtsmen who had worked on the Concorde project.

...

Suffice to say that the senior fire officer who misread litres-per-minute as gallons-per-minute during an Olympus water ingestion test probably would not want any further publicity, likewise the apprentice who didn't defrost the chicken before firing it into an engine running at full power in the bird ingestion test. My favourite was the supersonic hailstone story, fired as part of a hailstone ingestion test, but with uncertain results, the final resting place of said hailstone still being slightly obscure to this day. If anyone in the greater Bristol area got hit by a particularly hard snowball in the early sixties, the Filton test engineers are very sorry, and would like to apologise!

However, it is often the little insights into the past that amuse one the most and stick in one's mind. During one such conversation, with a couple of thermodynamicists, I ventured to ask how they had settled on the (rather difficult to memorise) various temperature limits associated with Concorde.

For instance, why a nose temperature limit of +127°C, why not +130°C, much easier for a pilot to remember?

 _"Isn't it obvious?"_ one replied politely, genuinely puzzled by my question.

 _"Computer generation,"_ replied his colleague to him, pointing his pipe stem at me.

 _"Ah yes,"_ said the first, _"that would be it."_

They then went on to explain, in ever such a kindly manner, that, in thermodynamics, apparently the square, and the square root, of the absolute temperature of a material are terms used in many equations. Being armed mostly only with slide rules (and as they were in the vicinity of 120°C to 130°C as a limit anyway) it had been decided to make life easy and settle on +127°C as the limit, a temperature for which they could easily calculate the square and square root in their heads.

Noticing my bewilderment at the thought that anyone might be able to calculate the square or the square root of 127 in their heads, they proceeded to explain it to me still further, very slowly; in the manner that one would speak to an aged and rather deaf great aunt!

        • Absolute zero = -273°C = Zero Kelvin = 0K
        • Max Nose temp = +127°C equal to 400K
        • √400 = 20
        • 400² = 160,000.

These are the people with the amusing stories to tell!

<comment><USER4> I thought it'd be 127°C to avoid 8 bit signed overflow...

<comment><USER5> That was my first thought, too. Gives the "Computer generation" pejorative a new meaning…

</comment></comment></comment><comment><AUTHOR> This starts off as a discussion of APUs but turns into a Q/A with participation by Concorde pilots, designers, and even a flight attendant who all clearly pine for their favorite plane ever. I couldn't pick one of the many anecdotes to highlight, so I posted a link to the entire monster thread. It rewards digging.

<comment><USER6> What was an APU?

<comment><USER7> On the Concorde, the APU did not exist. On both contemporary and modern planes, the APU is the Auxiliary Power Unit, which is a fancy way of saying electric generator. Basically a moderate-size internal combustion engine (relative to the plane; big planes have big APUs) with the usual arrangement to generate electricity.

Why? Well, it's handy if a plane can start its own engines, and big engines can't usually be started by batteries, so batteries start the APU and the APU starts the turbines. The APU is also used to drive climate and entertainment systems when on the ground (and not connected to the Ground Power Unit, also mentioned early in the thread).

Finally, the APU can provide fault tolerance: if the turbines are disabled in flight, the APU can provide hydraulic pressure for the control surfaces, as well as electricity for safety systems and the potential to restart the turbines. There is some correlation in turbine failures (flying through something, fire, one turbine blade flies out and destroys a second engine), but the APU is inside and less likely to fail at the same time.

Related is the Ram Air Turbine, which is basically a small wind generator that can pop out of the fuselage if needed to provide some power to critical system when really nothing is working.

<comment><USER8> Minor addition: engines need compressed air to start and APU provides that, too (used for engine starting, cabin pressurization and some anti-icing systems).

</comment></comment></comment></comment><comment><USER9> If you're wondering why the air isn't full of supersonic passenger aircraft, one of the main reasons is that high bypass turbofan engines are much more efficient than turbojet engines like the Olympus engines in the concord. (And way quieter)

Turns out a lower volume or air in a gas turbine engine moving at supersonic speed is much less efficient than a large volume of air moving at lower speed.

<comment><USER10> Really, it had a great deal more to do with politics: specifically, the Europeans had a supersonic airliner and the US didn't, so there was no way in hell the US government was going to do anything other than make it as difficult to use as possible.

<comment><USER11> > the Europeans had a supersonic airliner and the US didn't

Technically no, but the 747 is fast, almost too fast in these days of fuel economy.

The 747 was designed by Boeing to do M.87 (Pan Am wanted M.9) , though it now sits around M.855 (913 km/h) [1] due mainly to the requirement of fuel efficiency over raw speed. Almost Mach 1. How did Boeing designers get this speed? Hint: The hump and _area rule_ (min drag > M.8) [2] Now a DC8 was pushed to M1.012 under special conditions. [3] And as a point of interest, Air Force One (VC-25A) is rated at M0.92 (1015 km/h). [4]

[1] [http://www.boeing.com/boeing/commercial/747family/pf/pf_400e...](http://www.boeing.com/boeing/commercial/747family/pf/pf_400er_prod.page)?

[2] [http://www.aerospaceweb.org/question/performance/q0150a.shtm...](http://www.aerospaceweb.org/question/performance/q0150a.shtml)

[3] [https://en.wikipedia.org/wiki/Douglas_DC-8#Production_and_te...](https://en.wikipedia.org/wiki/Douglas_DC-8#Production_and_testing)

[4] [https://en.wikipedia.org/wiki/Boeing_VC-25#Specifications_.2...](https://en.wikipedia.org/wiki/Boeing_VC-25#Specifications_.28VC-25A.29)

<comment><AUTHOR> The high speed of the 747 is a function of its wing sweep. The hump and area rule have nothing to do with it.

<comment><USER11> _"... The fastest airplane out there today is the 747. Not one of them has been able to match the cruise speed of the 747. That indicates to me that it's a high-technology airplane ..."_ Joe Sutter [0]

wing sweep alone doesn't explain why the 747 is the fastest subsonic transport to date. If it did, competitors would have copied the idea. I'm curious why? Boeing describe it as a combination of wing design, engine, electro-mechanical systems. Maybe I should ask Boeing.

[0] [http://www.boeingblogs.com/randy/archives/2006/08/father_kno...](http://www.boeingblogs.com/randy/archives/2006/08/father_knows_best.html)

<comment><AUTHOR> Because the penalty for that speed is higher fuel burn. That's why Boeing is having trouble selling the 747-8, and why four-engine airliners in general are getting phased out.

My source for the wing sweep thing is also Joe Sutter, in his wonderful book. Also highly recommend Widebody, by Clive Irving, which is sadly out of print.

</comment></comment></comment></comment></comment></comment><comment><USER12> I lived in London in the early 2000's before Concorde stopped flying; I was in Fulham so happened to be under one of the Heathrow approach flight paths.

I remember seeing and HEARING the Concorde coming in for landing at Heathrow. Absolutely the loudest thing in the sky! (apart from the occasional RAF flyover for Her Maj's birthday or some such...) You couldn't mistake it for anything else.

<comment><USER13> The Concorde engines were apparently based on the Vulcan Bomber's engines. There's still one of those that flies, and you can see it at airshows in Britain once in a while. I saw it at this year's Farnbourough which was an awesome experience (as was seeing the Airbus A380 take off at an extremely short distance -- when it's not loaded with fuel and cargo it's incredibly powerful and agile). The Vulcan was load, and has an incredible "howl": [https://www.youtube.com/watch?v=H_ARSE8jEHQ](https://www.youtube.com/watch?v=H_ARSE8jEHQ)

</comment></comment><comment><USER14> From wikipedia:

"The only thing that tells you that you're moving is that occasionally when you're flying over the subsonic aeroplanes you can see all these 747s 20,000 feet below you almost appearing to go backwards, I mean you are going 800 miles an hour or thereabouts faster than they are. The aeroplane was an absolute delight to fly, it handled beautifully. And remember we are talking about an aeroplane that was being designed in the late 1950s – mid 1960s. I think it's absolutely amazing and here we are, now in the 21st century, and it remains unique." —John Hutchinson, Concorde Captain, "The World's Greatest Airliner" (2003)[114]

I really hope we get to fly in one of these, or a modern version, someday.

</comment><comment><USER15> I noticed in the second post how the MEPU was developed by Sundstrand - <USER2> same company that made calculators in the 70s. (I, as a vintage calculator collector, actually have one.) On HN we hear about pivots all the time, typically not too drastic, but imagine going from manufacturing MEPUs for the Concorde to manufacturing calculators!

</comment><comment><USER16> Here is a thought, Imagine if a Concorde got hijacked? An F16's top speed is approx 1320 mph and the Concorde's is 1350 mph per wikipedia. I feel like there might have been some government pressure to take this plane out of service with all the fear mongering post 9/11

<comment><USER17> A concorde going 1350 mph still has less kinetic energy than a 747 going 600mph. Also, I'm not positive, but I'd suspect that the concorde couldn't hit 1350mph at only a few hundred feet due to the really soupy atmosphere down here.

<comment><USER18> > A concorde going 1350 mph still has less kinetic energy than a 747 going > 600mph.

Not really no. Remember that Ek grows with the square of speed, so you need 4.5g of 747 for each gram of Concorde, something you only get when closing in on a 747 at MTOW (400t for a -400, 440t for a -8i) and a completely empty Concorde (80t).

Comparing the 747-400 and Concorde using maximum takeoff weights, the 747 comes out at 15GJ[0] when Concorde is 33GJ[1]. Using empty weight has roughly the same ratio. Even swapping the -400 for a -8i yields only marginal improvements to 17GJ[2].

With a loaded but dry plane (simulating the arrival at the end of a flight, under the assumption that fuel is a much bigger part of a Concorde than a 747) and maximum fuel load at takeoff, Concorde comes out at 16GJ[3] and the 8i at 10GJ[4].

Even if we use the same route, halve the 8i's fuel load (to account for twice the range) and replace it all with additional payload (which I'm not sure makes any sense), it's still only 13GJ.

Going back to the first paragraph, fully loaded 747's 15~17GJ[0][2] would indeed beat a completely empty Concorde's 14GJ[5], but that's about it.

[0] [http://www.wolframalpha.com/input/?i=1%2F2+*+396890+kg+*+%28...](http://www.wolframalpha.com/input/?i=1%2F2+*+396890+kg+*+%28988+km%2Fh%29%5E2)

[1] [http://www.wolframalpha.com/input/?i=1%2F2+*+185000+kg+*+%28...](http://www.wolframalpha.com/input/?i=1%2F2+*+185000+kg+*+%282158+km%2Fh%29%5E2)

[2] [http://www.wolframalpha.com/input/?i=1%2F2+*+442253+kg+*+%28...](http://www.wolframalpha.com/input/?i=1%2F2+*+442253+kg+*+%28988+km%2Fh%29%5E2)

[3] [http://www.wolframalpha.com/input/?i=1%2F2+*+%28185000+-+956...](http://www.wolframalpha.com/input/?i=1%2F2+*+%28185000+-+95680%29+kg+*+%282158+km%2Fh%29%5E2)

[4] [http://www.wolframalpha.com/input/?i=1%2F2+*+%28442253+-+216...](http://www.wolframalpha.com/input/?i=1%2F2+*+%28442253+-+216840+*+0.81%29+kg+*+%28988+km%2Fh%29%5E2)

[5] [http://www.wolframalpha.com/input/?i=1%2F2+*+78700+kg+*+%282...](http://www.wolframalpha.com/input/?i=1%2F2+*+78700+kg+*+%282158+km%2Fh%29%5E2)

</comment></comment></comment><comment><USER19> that's a cool thread, and a cool website to discover. Thank you.</comment>


Heatwave in Europe set to push up UK food prices - <AUTHOR> Heatwave in Europe set to push up UK food prices<p>https://www.theguardian.com/business/2018/aug/03/heatwave-in-europe-set-to-push-up-uk-food-prices?CMP=Share_AndroidApp_Submit_to_HN <comment><USER2> You should put the link in the "URL" field and leave the "Text" field blank. This types of submissions get a penalty here.

Also, what is "CMP=Share_AndroidApp_Submit_to_HN"???</comment>


Ask HN: Why is codemill not gaining momentum? - <AUTHOR> If any of you are unfamiliar with codemill its a new market place for pull requests (http://codemill.io). It gained momentum and hit the front page of hacker news but  lost the appeal pretty soon. Do you guys have any thoughts on why people aren't using it to complete their tasks. <comment><USER3> A third reason: when I go to the page, I see a single task with $20 offered as the pay. From the description, There seems to be a reasonable chance that it takes me 3 hours to complete from start to finish. Given that it is not guaranteed that I get paid, why would I write code for US federal minimum wage?

If I'm going to submit a pull request to the marketplace and I see that this is the sort of thing on offer, I become skeptical that a skilled person who can deliver solidly readable code on-time is going to spend their time on this site. That means it is probably not worth the work it takes to package up a task for a total novice. If I don't have many of these sort of easily- packagable tasks, then I'd just do them myself. If I do, then it makes a lot more sense for me to go and hire a junior engineer who can actually learn my app/data model/domain and be 6x as efficient tackling them as a random person who doesn't have an ongoing relationship with me.

Companies often lose money hiring interns who have a whole summer to ramp up, but make up for it in the recruiting benefits. Why would they hire an intern for 4 hours.

</comment><comment><USER3> A couple things:

1) This is a two-sided market problem. In order for a two-sided market to succeed, you need to jump-start it with either a bunch of chickens or a bunch of eggs. See [http://www.joelonsoftware.com/articles/fog0000000054.html](http://www.joelonsoftware.com/articles/fog0000000054.html)

2) It takes time and effort for someone to package up a task such that a total novice to the project can pick it up and work on it.

<comment><AUTHOR> I agree with your second point, but in case of codemill, the stats are that 2000 developers have already signed up to work on tasks.

<comment><USER3> Meaning, that 2000 people have entered their email into a webform? How many of those have github accounts which indicate they are active? How many of those are regularly active on the site on a weekly or daily basis?

<comment><AUTHOR> I at least check it everyday and I am confident a few hundreds do so too.

</comment></comment></comment></comment><comment><USER4> Did it gain momentum before HN front page?

<comment><AUTHOR> I think it was launched from HN

<comment><USER4> If they launched on HN I would not call that momentum, just a curious spike in visits. It seems like a normal thing.

Are you affiliated with the site? You're on a new account and it just kind of.. feels like it. The reason I am asking is that if this is the case - <USER2> don't you just email the people who signed up and ask them.

<comment><AUTHOR> No, but I was planning to build some thing similar with bitcoins. They also have gitter [https://gitter.im/CodeMillApp/support](https://gitter.im/CodeMillApp/support)</comment></comment></comment></comment>


Meet the Shaggs (1999) - <AUTHOR> http://www.newyorker.com/magazine/1999/09/27/meet-the-shaggs <comment><USER2> This is by the author of The Orchid Thief, of which Charlie Kaufman's film Adaptation is supposedly an adaptation.

Edit: Jon Ronson on The Shaggs: [https://www.youtube.com/watch?v=HhtDf82a3pM](https://www.youtube.com/watch?v=HhtDf82a3pM)

<comment><USER3> I'm a big fan of Ms. Orlean's. She wrote a wonderful profile piece called "The American Male at Age Ten"[0] that, for very good reason, tends to find its way into many undergrad lit/journalism survey courses.

[0] [http://m.learning.hccs.edu/faculty/scotty.moore/anth2351/ant...](http://m.learning.hccs.edu/faculty/scotty.moore/anth2351/anth-2301-summer- readings/the-american-male-at-age-10)

</comment></comment><comment><USER4> Love it. My awareness of The Shaggs comes from an Alarm Will Sound concert. Alarm Will Sound is an ensemble that performs contemporary "classical" music, and they're incredibly highly skilled and accomplished musicians. They arranged one of The Shaggs' songs for their ensemble, complete with the poor tuning--and complete lack of rhythmic unity of the original--and perform it at concerts.

As you might imagine, performing something out of rhythm and out of tune requires extremely good musicianship and ultra-tight focus by the performers. And Alarm Will Sound can pull it off. Here's a recording: [https://www.youtube.com/watch?v=E_NJNR3hvTk](https://www.youtube.com/watch?v=E_NJNR3hvTk)

</comment><comment><USER5> It's kind of cool that The Shaggs made it to the front page of hacker news, but a bit weird. Love this band.

</comment><comment><USER6> Wow! Takes me back to my college days watching "Taco the Wonder Dog" music videos, one which which sampled "My Pal Foot Foot", which I only just now discovered is by the Shaggs.

Too bad Taco has long since departed the Internet; his music videos were a superb curation of such eclectic music. I similarly discovered Isotope 217 through Taco's samples of "Harm-O-Lodge" and "⏪".</comment>


TeamBox new beta is now open (with Trello-like task lists) - <AUTHOR> https://beta.teambox.com

<comment><USER2> How can I sign up? I do not see a sign up button anywhere...

<comment><AUTHOR> Sign up at their main site: <http://teambox.com/> And then log into the beta version.</comment></comment>


Your ATM does not use transactions - <AUTHOR> http://ayende.com/blog/155969/your-atm-doesnrsquo-t-use-transactions <comment><USER2> I support ATM client software for a large Bank. I want to make just a couple of points regarding this article and comments.

First, the article is correct, no distribution transaction coordinator like you would find in a Java application server is going to be involved here. Still, the authorization server maintains a session state and will ensure correct messages are sent to the downstream accounting systems.

Keep in mind, there are many downstream systems. There is at least one direct deposit system for standard bank accounts, often there is a linked money market account, brokerage account, and then there are all the gateways for the acquired traffic like Pulse, VISA, etc. The ATM's back-end authorization system will generally send the same sort of messages to these providers and they are responsible for both authorization and transaction recording.

What shows up on your statement has nothing at all to do with the ATM or the authorization system. It will depend on the deposit accounting system. These systems are probably pretty old; likely COBOL apps using VSAM (flat files) or IMS databases. They are mostly batch-mode systems which means reconciliation happens once a day and everything intra-day is posted to a memo file. These days those memo-file entries can be queried and a web app like online banking can show you entries that have memo-posted. But the next day, what you may see may look a little bit different. The message the authorization system sent would be clear that for example no deposit actually succeeded, that there should be a reversal. How exactly that is recorded and what you see in your statement is another matter and there certainly are advantages to simply posting it as an offsetting credit.

<comment><USER3> COBOL...

      *Shudders*

</comment></comment><comment><USER4> Actually they don't need to use transactions at all in accounting. All they need is a debit history and a credit history. Using transactions locally could be done but the resulting software would be far too complex for ATM hardware. Using transactions globally would be a huge performance sink considering their frequency over the world.

The only time I can think of that would involve a transaction (with a lock) would be when naming a credit movement or a debit movement for future reference (compensation for example), and even that can be "solved" using UUIDs with carefully chosen machine identifiers.

The result is a very asynchroneous, very distributed and eventually "consistent-enough" logging system. Just pick the right time to do your reporting (end of the month, end of the year etc), and accept that some figures won't reflect exactly the reality of the balance, since some compensations are done immediately (automatically) while others are performed, manually, days or week later.

The whole system makes it very hard to catch transactional events with certitude, that's the main drawback, since nothing proves that a given transaction was "real" and won't be compensated later on.

<comment><USER5> > _Actually they don't need to use transactions at all in accounting. All they > need is a debit history and a credit history._

If by "debit history" and "credit history" you're thinking of how your bank transactions are recorded, then you may wish to look into the concept of accrual accounting.

Merely tracking cash in and out doesn't give you a full view of what the business is up to.

> _accept that some figures won't reflect exactly the reality of the balance, > since some compensations are done immediately (automatically) while others > are performed, manually, days or week later._

Well good luck with selling your "eventually consistent" accounting system.

While I would prefer if accounting systems could be improved to record and aggregate uncertainty for those places where values entered are based on what is realistically an estimation rule (eg depreciation, stock valuation rules etc), the fact is that all such rules are stated as part of the reports. Within that framework, you report as correctly as possible to the cent or better.

Otherwise bad things happen. Accountants lose their charters. Executives go to jail. That sort of thing.

Serious business is ... serious business.

<comment><USER4> Isn't accrual accounting the use of an account to log transactions at the time of sale rather than at the time of payment? If so the same technicalities apply, you can log your credits and debits in different accounts, no need for ACID transactions here, unless my experience in this area is flawed.

> Well good luck with selling your "eventually consistent" accounting system.

There's a reason why "eventually consistent" works in accounting, and that's the cut-off time. You don't require from your data to be consistent _at every instant_ , but rather require that your accounting be guaranteed consistent _at cut-off time_ , because that's the data that you base your reporting on. One way to guarantee that is to use only ACID transactions, but it's only one of many ways, and it has flaws (that might or might not be blocking depending on how distributed your architecture is).

<comment><USER5> > _you can log your credits and debits in different accounts, no need for ACID > transactions here,_

Um, yes. There is. There totally is.

There's a reason ACID is illustrated with examples based on debiting one account and crediting another at what is a logically simultaneous instance (Atomicity).

Because if you do one and not the other, your accounts are now Wrong-with-a- capital-W-for-legal-consequences (Consistency).

We need these to happen in some sort of order, so we pretend only one such entry happens at a time (Isolation).

It would also be jolly nice if we didn't lose the records (Durability) every time the RAM lost its juice.

> _You don't require from your data to be consistent at every instant_

Again: yes. You do. That's literally the _entire purpose of double-entry bookkeeping_ : to guarantee that the books are always consistent.

</comment></comment></comment></comment><comment><USER5> ATMs have an offline operation mode (CAP blah blah) that is quite permissive with what you can withdraw. This is for the obvious reason that the mainframe is not always reachable and available; but to halt the operation of all cash machines is generally considered less than ideal.

I don't have a firm line on the etymology, but it seems to me that what we computer science types call a transaction is so called because of the accounting concept of a transaction.

In book entry you must always enter two items: a credit and a debit. Always. Before you make the transaction, the books are supposed to be consistent. And after, they are consistent.

One thing accountants do differently is that there are no deletes. You may only update. There are specialised transactions for correcting errors. Again: even if an error has been made, the erroneous state is still consistent before and after an erroneous transaction. And it is consistent before and after the correcting transaction.

<comment><USER6> Double entry accounting <http://en.wikipedia.org/wiki/Double- entry_bookkeeping_system>

Simply put if you make a mistake you don't correct it with tipex but with another entry to adjust the mistake. This means all mistakes are accounted for and balanced back to normality.

Also worth noting that banks love to process debits before they process credits so you could have 100 units of money in yoru account with another 200 going in and 200 going out. You will then see that on your statment that they have the 100 then the -200 and then the +200, so indicating that you are -100 for a period, evil are they not.

<comment><USER7> Any modern bank will process deposits before withdrawal, or process them in order of entry. With the introduction of ATMs, the order of operations during the day by the customer could have been:

        Opening Balance: 100
        Withdraw 50 --> 50
        Deposit 200 --> 250
        Withdraw 150 --> 100

At no time were they overdrawn. Evil Bank® would have done as you suggested, with the reconciliation at the end of the day being the old paper-based approach of:

        Opening Balance: 100
        Subtract sum of Withdrawals: 200 --> -100
        Subtract penalties: 50 --> -150
        Add sum of Deposits: 200 --> 50

<comment><USER8> KeyBank assessed me $360 of overdraft fees for a single day for a similar thing, where a check/cash was deposited (and it wasn't related to check deposit policy, that much was multiply verified in the arguments with various managers), and I went shopping with my partner for Christmas afterwards.

I'm no longer a KeyBank customer (in between that and them cancelling my card for a $1 Roku pre-auth charge as 'suspicious' - but not notifying me, calling, etc, just popping a letter in the mail which arrived three days after I discovered for myself it was cancelled), unsurprisingly, as they refused to budge on waiving the fees (except for one - "you get one courtesy fee waiver per calendar year". The mind boggles).

</comment></comment></comment></comment><comment><USER9> I wouldn't have expected something as slow and clunky as an ATM to actually enlist in a distributed transaction - so it hardly surprises me that they might not.

There is a moderarely interesting article linked to in one of the comments that sort of sums my expectations up "Accountants Don't Use Erasers":

[http://blogs.msdn.com/b/pathelland/archive/2007/06/14/accoun...](http://blogs.msdn.com/b/pathelland/archive/2007/06/14/accountants- don-t-use-erasers.aspx)

<comment><USER10> Most modern ATMs are actually PCs running Windows. Not sure if that qualifies as "slow and clunky".

<comment><USER9> I was thinking about the actual mechanism that counts and ejects the notes - which is pretty slow by computing standards!

<comment><USER10> I heard an urban myth the other day that the cash-counting noises are fake and are computer generated to cover the time it takes the ATM to communicate with the mainframe.

I spoke to our ATM dev and test team here, and they told me this is not true.

</comment></comment></comment></comment><comment><USER11> It's called roll-forward compensation transaction. It's still a transaction because at the end your account is still consistent, wrt to its balance.

The bank logs all the operations including the mistake and the compensation (debit) to make your account whole again. The bank is showing you the transaction log which is usually hidden in a database transaction you normally encounter in RDBMS.

</comment><comment><USER12> Financial transactions are different from database transactions despite using the same word; hackers shocked at the discrepancy. Film at 11.

<comment><USER13> Not really, and as someone who works on just such a system, please let me assure you that you simply cannot design a reasonable system without DB transactions for at least certain processes.

I'm more than happy to go into significant detail here, but I think it will just get lost in the shuffle of hacker news comments (at some point I should do a proper article on this stuff). Long story short, you simply cannot make things reliable without having a balance change and its corresponding state update happen atomically. There's other parts you would be well advised to do within that same transaction (ledger entries being the most notable) but you could get by doing that separately if you really hate yourself.

<comment><USER5> I think his point is that the nomenclature is overloaded.

What accountants call a transaction is similar to, and probably inspired, what computer scientists call a transaction. But they are not strictly isomorphic.

</comment></comment></comment><comment><USER14> Eric Brewer[1] describes why ATMs are not designed for consistency[2] at [3] (scroll down to the last two sub-headings).

[1] <https://en.wikipedia.org/wiki/Eric_Brewer_%28scientist%29>

[2] <https://en.wikipedia.org/wiki/CAP_theorem>

[3] [http://www.infoq.com/articles/cap-twelve-years-later-how- the...](http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules- have-changed)

</comment><comment><USER15> jeremyjh did a good job explaining this. I work for a company that supports the card issuance side and previous to that I worked for one of the largest drivers of ATM's for small and regional banks.

This has nothing to do with transactions in the sense of database transactions or a transaction manager managed by an app server, these may still be used behind the scenes.

jeremyjh did a good job explaining this. I work for a company that supports the card issuance side and previous to that I worked for one of the largest drivers of ATM's for small and regional banks.

This has nothing to do with transactions in the sense of database transactions or a transaction manager managed by an app server, these may still be used behind the scenes.

What happens here is the ATM sent a withdrawal request over the network, that was recorded by the issuing bank - a memo to that account - the bank recorded a debit. Subsequently, the ATM/network/something failed and a second 'reversing' request was sent over the network to the issuing bank, this reversal credit rollsback the initial credit - this may or may not get memo posted to the bank account in real time because reversal transactions can be processed at a lower priority.

During the end of day settlement process, the ATM network 'settles' up with each Bank, during this time the debit/credit markup transactions are dropped and replaced by the REAL activity posted by the ATM network (STAR/Pulse/Cirrus/etc).

ATM systems are a lot more complicated than a simple database transaction, and even I left out several of the steps and possible events that could occur during the process.

During the end of day settlement process, the ATM network 'settles' up with each Bank, during this time the debit/credit markup transactions are dropped and replaced by the REAL activity posted by the ATM network (STAR/Pulse/Cirrus/etc).

ATM systems are a lot more complicated than a simple database transaction, and even I left out several of the steps and possible events that could occur during the process.

</comment><comment><USER16> I always thought they use transactions but in a different way :

Atm debits an account first using a transaction and after that if something wrong happens atm credits an account with "second" transaction. If second transaction fails, bank can always check the situation and credit later if it's necessary.

Maybe somebody with an experience elaborate how the process works ?

<comment><USER17> That is exactly what I've always though happens. I'd argue that, with ATMs, since you're dealing with software that after a transaction has passed commands hardware to mechanically dispense pieces of paper that there are two different processes going on.

If the transaction passed (the human facing ATM part at least) you effectively withdrew the money, software wise you actually _took_ it. If something happens in the procedure of actually giving you the money the machine informs something the likes of: "hey Mr. Software, something went wrong here, credit that back please". I'd argue that if everything was enclosed into one transaction you could have an edge case in which the "money transaction" passed, the cash was dispensed, something went wrong just after and you get a roll back of everything but the money was still physically withdrawn.

ATMs have cameras, so in the case that the cash was not dispensed, they can manually fix the problem and credit your account in case of a claim (they have the camera footage and the ATM's paper trail). On the other hand if everything was enclosed into one transaction, it might be a bit awkward for a bank to tell you a week later: "Hey man, we made a mistake and we now need to take out 500 dollars out of you account, but be assured we're right about this here..."

Hell people see the bank crediting you something you did not take as good customer service, but I'm pretty sure that people will complain about the bank taking money from them if it's not done at the exact moment where they took the action of taking said money out of their accounts.

</comment></comment><comment><USER18> I'm sure banks do use transactions, just not in a distributed system. It's hardly possible to use transactions when multiple entities are involved and you wouldn't want to anyway because you want a record of the failure, and that money actually moved.

I suspect they do use transactions when, for instance, inserting two rows in a double-entry register.

<comment><USER4> In practice you can work around transactions in double-entry registers with UUIDs, and then fixing the inconsistent edge cases at reporting time.

<comment><USER5> In practice doing this for a banking account system will land you in jail.

Banks follow the IFRS or GAAP rules and they follow them because to do otherwise is just a bucket full of indictment.

<comment><USER4> IFRS and GAAP require real-time consistency? Because that's what I meant with edge cases, entries that are split between two accounting periods. You deal with them in eventually consistent systems just as you would in an ACID system: wait and interpret it when the data is complete.

<comment><USER5> Transactions that span two periods basically don't exist in accounting. It's assigned to either side, or you do two different transactions. One way or another, the goal is to ensure that you don't have uncertainty.

Ever dealt with a company that's "closing the books?"

</comment></comment></comment></comment></comment><comment><USER19> There seems to be a few people who work with ATM software here at the moment, so perhaps one of you could answer a usability question that bugs me about ATMs:

\- On entering my PIN and selecting the option to withdraw cash, I'm presented with a number of choices (e.g., €20, €50, €90, €200 etc.).

\- I select €90 and wait the ~10-20 seconds for the ATM do do whatever it needs to do.

\- I'm presented with a message telling me that the machine can only dispense multiples of €50, obviously because it's run out of smaller denominations.

\- I'm returned to the 'amount-selection' screen and presented with the same set of choices, including the invalid ones.

I've now wasted almost a minute. Why doesn't the ATM just limit the list to what it's capable of dispensing? Is there some weird security consideration I'm missing?

<comment><USER20> The cash dispenser part is probably just a black box with a simple interface that accepts a message to "dispense some amount of cash" and that can respond "request failed" or "request succeeded". It may even have no concept of inventory and just knows that it tried to dispense X bills and it only got X-1 of them.

Yes, it could have a query function added, and yes the GUI could dynamically respond to that, but it's a bit of an edge case since the assumption is that the ATM is well stocked if it's got mixed bills.

<comment><USER19> What drives me nuts is that it knows the smallest denomination at the end of the transaction but out doesn't remember this for the next transaction.

</comment></comment></comment><comment><USER21> I think this kind of makes sense. Think about it the other way, if it were to use transactions the flow would be like this:

[Assuming you've entered the PIN, and you've pressed the 2000 button to withdraw cash]

a) Check the cash dispenser has enough funds to withdraw 2000

b) Contact bank, reserve 2000

c) Tell cash dispenser to dispense 2000

d) Contact bank, commit 2000

Now for newer ATMs I'm assuming it is a bit different, but older ATMs used dial up modems which I'm guessing were pretty slow and unreliable. Ping times in the hundreds of milliseconds wouldn't have been uncommon. During the time taken to dispense it, you could even yank out the telephone cable. My point is, if the ATM failed to send the commit message, the bank would have just given out 2000 to someone for free.

<comment><USER22> This is not how transaction work, that's exactly the type of failure they protect against. In fact, the behavior you describe is possible now, without transactions (it even happened to me a few times).

</comment></comment><comment><USER23> This may be an overinterpretation of the bank statements. They are _a representation_ of what happened, but do not necessarily accurately reflect the steps that happened.

For instance, it is entirely possible the 'withdrawal' action was logged before it was actually committed and that it subsequently was never committed, because of a transactional failure. The 'deposit' action was then logged by the rollback code, to create the necessary illusion of restoring balance, while in fact the money never left the account.

<comment><USER24> If a tree falls in the forest...

"the money never left the account" is not really the way to think of this. The bank does not move around piles of cash when you withdraw money, or keep some gold set aside in a vault for your use. "The account" is the amount of money that the bank attributes to you when it is drawn upon.

Basically, I think you are mixing up cause and effect. The log of debits and credits _is_ the account. The balance is some derived number that represents all of the cleared transactions in the account. It is useful because it determines policy around your account (how much interest to give, how much to let you withdraw from an ATM), but it's not the fundamental building block of banking.

<comment><USER23>
      "The account" is the amount of money that the bank
      attributes to you when it is drawn upon.

Yes. And the scenario I propose is that your bank statement says you withdrew an amount and later regained that amount, while in the intermediate time the actual amount attributed to you by the bank was always the original amount. If a significant other was withdrawing from the same account at the same time, it may have been possible to overdraw beyond the usual limit. As long as that would eventually come to light, due to eventual consistency, that's not a problem (and undoubtedly something you contractually agreed to take as a risk).

Transactional algorithms usually require logging to be able to recover from failures. A conclusion of the recovery process can be that certain actions did _not_ take place. A bank statement is a rather sparse log that underspecifies what actually happened.

</comment></comment></comment><comment><USER25> Red herring? I imagine the bank is still using transactions when it debits your account and credits some internal ATM-withdrawals account, and again when it reverses the process.

</comment><comment><USER26> I deal with loyalty programs on a daily basis. While they have much more leniency in terms of fraud and security, you still want to know what happened at every interaction with the main balance.

A rollback is dangerous in a loyalty program because when scams happen they become very difficult to trace. I totally agree with the policy of never erasing a monetary debit or credit.

</comment><comment><USER27> Sabre, the airline reservation system, doesn't use transactions either, for very similar reasons.

</comment><comment><USER28> "I just got a series of SMSes from my back"

Not bank?</comment>


The Solvers' Manifesto - <AUTHOR> http://www.solversmanifesto.com/ <comment><USER2> This is not something that anyone should aspire to. You are proud of mediocrity, desperation, and identity crisis?

"We are experts in nothing, yet we know a great deal about almost anything."

"But most of us are exploited, doing odd jobs for you just because we are the only ones that know how to do it."

"We are not jobless, yet there is no name for what we do. And because of that, our craft hasn't earned any respect."

This is just emotional, self-satisfying bait for unsuccessful freelancers and cheap employees to feel good over. You should not feel good about being a struggling freelancer (I certainly don't!) or a cheap employee - and you should work hard to develop skills that transcend such a state.

You should NOT be reading this garbage and feel part of a "tribe" and get comfortable.

All of you who upvoted: Do better.

<comment><USER3> Though I agree that the manifest is worded a bit negatively in a few places, being somewhat of a generalist does not mean that you're mediocre in everything, or a cheap employee.

"We are experts in nothing, yet we know a great deal about almost anything." to me, seems to imply that you know a lot about a lot of things, and have developed your skills, though have not dived deep enough to be considered expert in some narrow area.

It's the kind of person I've always aspired to be, as I have very wide interests. Also: technologies come and go, which means that, if you're invested too much in a specific niche, you might find yourself "useless" some day.

<comment><USER2> "being somewhat of a generalist does not mean that you're mediocre in everything, or a cheap employee."

No, it doesn't.

<comment><USER4> It's very important that you're not mediocre in absolutely everything. There should be at least one field you know in depth. As far as I know, this is the only way anyone ever gets a good feel for what it means to know anything in depth. It's much better to know two or more things in depth. Then the generalizations you make about deep knowledge in areas where you're not an expert will be operating on more data.

It's also common to know one thing in depth, but then fail to realize what this implies about every other field of knowledge. It's not a good thing, IMO.

</comment></comment></comment></comment><comment><USER5> Being able to solve problems outside of your domain knowledge is a very good skill to have. Especially, in start ups.

This manifesto implicitly states that you're either an expert, or a person with broad skills. Why can't one be both: an _expert with broad skills_ ?

<comment><USER4> It's very important to be both. One needs to be aware of the breadth of knowledge. One also needs to be aware of how deep knowledge in one small area can go. Being an expert in a few things with broad familiarity in other fields is the only practical way to accomplish this.

</comment></comment><comment><USER6> Sorry for offending anyone but this came off to me as pompous and somewhat pathetic.

</comment><comment><USER7> Clicking the link I was hoping for a "get shit done" type of manifesto, i.e. "Stop complaining things are impossible, and try, fail and try until you succeed", not a "You shouldn't be doing this, but if the client's paying, what the hey!?" type of thing. Now I want to write that former manifesto.

</comment><comment><USER8> I certainly know people that would fit into the category that they describe. I consider them massively underpaid given the amount of value that they bring to any project they work on. They act as the glue and enablers for product developers, designers, front end coders and developers whilst being able to act partially or fully as many of these roles. They all started as designers but have become much more. I recognise the need for this role to be named but Solvers definitely isn't it. I've often pondered what this role should be called but I'm still at a loss. Hopefully we can find it so that these guys can begin to be awarded the respect and pay that they deserve.

</comment><comment><USER9> "Webmaster" or "Web Developer" were the terms I remember people like this having back in the pre-bubble days. They didn't have to know so much about video back then, but otherwise "Solvers" sound the same.

</comment><comment><USER10> Nice words, though personally I don't like the sound of "We are a tribe" and "Just show some appreciation once in a while." Both seem kind of negative in one way or another, though maybe it's just me.

</comment><comment><USER11> I like to call it being an "Intelligence worker" as opposed to a "Knowledge worker"</comment>


Ask HN: Is Blockchain GDPR compliant by default? - <AUTHOR> <comment><USER2> Not sure, but Microsoft seems to believe that a blockchain-based identity system would be more privacy-friendly for users and would remove many of the compliance issues for companies, because they wouldn't have to handle the PII themselves.

[https://cloudblogs.microsoft.com/enterprisemobility/2018/02/...](https://cloudblogs.microsoft.com/enterprisemobility/2018/02/12/decentralized- digital-identities-and-blockchain-the-future-as-we-see-it/)

Before GDPR passed I was actually arguing that the EU should increase liabilities and penalties for companies that store any information outside of the data that's strictly necessary for the functioning of the service _and_ suffer a data breach exposing all of that data. This would have encouraged companies to encrypt the data end-to-end so they wouldn't be liable in case of a data breach. Plus, if they did that, there wouldn't be any data to steal in the data breach anyway.

I don't think they ended up pursuing that goal per se, maybe because the technology wasn't quite there, either, but perhaps GDPR will indirectly end-up having much of that effect anyway, especially with blockchain technology kind of showing the way for building those sort of systems now.

Plus, the GDPR does require consent for much of the data that you store, unless it's strictly necessary for the functioning of the service, it's just that it's not quite the same as outright banning the practice, because companies could always do what they did with the EU cookie and come up with a solution where basically 95% of the users end-up giving their "consent" automatically. It's probably not going to be as easy as it was for the EU cookie this time around, but I'm still expecting some of that to happen.</comment>


Elasticsearch Raises $70 Million - <AUTHOR> http://www.elasticsearch.com/blog/press/elasticsearch-raises-70-million-series-c-financing/

<comment><USER2> I'm sitting in Elasticsearch training right now (during a caffeine break). These are some really great guys that know their stuff, and they're committed to contributing back to the OSS version everything that makes sense. They contribute a ton of code back to Lucene and employ a lot of the brightest minds in this space.

On the product side, I'm sitting here being amazed at some of the problems they've solved very elegantly. Elasticsearch has a bright future.

<comment><USER3> How is it better than Solr?

I havent looked at Elastic Search in a long time, so I really do want to know. Not trying to pick a fight. ;)

<comment><USER4> * Kibana on ElasticSearch. This is huge. You get a polished Search & Graphing UI with very little effort.

* Much more approachable config.

* Its clustering is easier to setup.

* Eventhough logstash is a bit heavy for my taste, the whole ELK stack is really nice for aggregating server logs.

<comment><USER5> Agreed about logstash being too heavy for your app servers. It would be nice to have the functionality in a trim, native binary.

As things are, one can always direct an app sever's syslog to a logging fleet running logstash (or elasticsearch running embedded logstash): [http://cookbook.logstash.net/recipes/rsyslog- agent/](http://cookbook.logstash.net/recipes/rsyslog-agent/)

<comment><USER6> I think that's what Heka is supposed to be.

It looks pretty promising, but I have yet to meet anyone who uses it.

[https://blog.mozilla.org/services/2013/04/30/introducing- hek...](https://blog.mozilla.org/services/2013/04/30/introducing-heka/)

<comment><USER5> Oh, that looks very nice. Neat to embed Lua as a sandboxed plugin environment.

</comment></comment></comment></comment></comment></comment><comment><USER7> If people are curious as to why VCs are interested in open-source businesses:

[http://indexventures.com/news-room/blog/a-perfect-storm- now-...](http://indexventures.com/news-room/blog/a-perfect-storm-now-is-the- time-for-multibillion-dollar-open-source-companies)

<comment><USER8> Open-source is becoming the only way to develop (and, _especially_ , maintain) complex software. The fact that the engineers can gain employer-independent reputations gives them an incentive that's astronomically expensive (as hedge fund compensation goes) to replicate otherwise.

The world is finally figuring out that it's impossible to _employ_ top talent, but that it can be quite lucrative to _sponsor_ it.

<comment><USER9> It's not impossible to employ top talent. That is a very ignorant statement.

<comment><USER10> Top talent has access to thousands of other well paying roles. You cannot treat them the same way companies treat regular employees (badly). If you give them pointless work, or work without career growth, they can up and leave in a heartbeat. If you try and bully them or pressure them to work long hours or place pointless restrictions (dress code, start times, vacation policy, etc) on them they will leave.

<comment><USER9> That is a statement I think most people on here would agree with. The original statement wasn't. A company can be a joy to work for. You can also make some really good cash.

</comment></comment></comment></comment></comment><comment><AUTHOR> What I find interesting about the Elasticsearch story is the success it has given that the core product (the search server) is completely open source.

<comment><USER11> My fear is that with money comes an 'Enterprise' edition.

<comment><USER12> I don't think the "open core" model is in their best interests. Look at a company like Zenoss, where their OSS version is their biggest competitor. It doesn't make sense for ES to do that.

Now marvel[1] is where they've started monetizing and I'm sure they make a good bit of money from "professional services" teaching companies how to deploy ES at scale. Hopefully they pull it off, as the world needs a good competitor to splunk. ES has the backend tech, but kibana has a loooooong way before it rivals the interface for searching splunk. Here's to hoping!

[1] [http://www.elasticsearch.org/overview/marvel/download/](http://www.elasticsearch.org/overview/marvel/download/)

<comment><USER13> Marvel is quite interesting. It is a product everyone _could_ build on their own (basically, it is Kibana over their own metrics data), but at that price point, there is no reasonable reason to do so.

</comment></comment></comment></comment><comment><USER14> We love Elasticsearch. It's fast and accurate for huge amounts of data, super easy to scale, and incredibly easy to get started. That cash can only make the product better. Good for them!

</comment><comment><USER15> Hopefully this means that the documentation gets some help, especially some of the official libraries. So far working with ES has been a mixed bag… seems good in theory but I've had a hard time getting over the learning curve.

<comment><USER16> Want to highlight some of your specific pain points?

<comment><USER15> I guess I'm in the minority based on the other comments here…

After spending a few hours with the documentation, I felt like I had a generally good feel for how you would interact with ES through curl, but then jumping into using the Ruby library there seemed to be a big leap and I felt like I needed to have a much more intimate knowledge of how ES worked to "get" it. A lot of guess and check before I figured out how to query properly. I've also been unsuccessful in figuring out how to implement accent folding. At this point I assume that this has something to do with "mapping", but I couldn't figure out where that was supposed to be set up (again, through the Ruby lib, but I was also unsure where to start to just accomplish that via curl…).

Who knows, maybe I just need to spend more time reading the docs, and maybe the information that I need is in there somewhere, but to me it felt incomplete or disorganized. I'd love to stop using Solr for document search, but making ES do things that I know how to do in Solr ended up being too time consuming.

I ended up feeling like I probably had to go to a training session to really get it, which is a shame…

<comment><USER17> I found the elasticsearch tutorials on youtube by Clinton Gormley pretty helpful in understanding the concepts. Also came across this book (which I haven't really read so I don't know how good it is, just posting it here) [http://exploringelasticsearch.com/](http://exploringelasticsearch.com/)

</comment></comment></comment></comment><comment><USER18> Elasticsearch is great. I have spent the last 6 months working on a project using it as the primary search technology, it has been nothing but great. I have not had any training and tried to figure it out through the online docs (which in the last overhaul have gotten much better) so forgive me if any of what I'm about to say is wrong, or better yet please correct me so I can learn :)

here's the things I noticed when using it: \- Since it's schemaless by default it will guess the data type of a document based on the first value it sees, as far as I'm aware you're not able to change a data type later on, so I found it best to create a schema (aka mapping) being explicit about the fields data types up front. I think explicit is better anyway (Zen of python ;) )

\- It's blazingly fast. Like crazy quick.

\- Use the geo data type if you're going to be doing radius queries. I've got 50M documents in the index and it queries insanely fast. It's been just as fast as PostGIS (which I also love)

\- Use this as the GUI: [http://mobz.github.io/elasticsearch- head/](http://mobz.github.io/elasticsearch-head/)

\- Do some proper research on filtering before you start, start here: [http://www.elasticsearch.org/guide/en/elasticsearch/referenc...](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis- snowball-tokenfilter.html)

the correctly configured snowball filter will make sure things like "rückwärts" will match "ruckwarts",

</comment><comment><USER19> Could someone explain in a few lines why & how is elasticsearch a revolutionary thing (technically) ?

<comment><USER20> Do you need something beyond "highly scalable search solution"? A lot of enterprises (and I'd guess startups too!) need good search solutions and your two players in the Java space (that I know of) are Solr and Elasticsearch. We are using Solr in our product, but the more I hear about Elasticsearch the more I want to give it a serious try.

My reason for not using it originally was that we had prototyped our solution using Compass (which was the project before Elasticsearch) only to have it abandoned to work on Elasticsearch. So I was concerned about the "one dev" model and losing something that was a key component of what we needed.

Since then I've not been impressed with SolrCloud (would love to hear good experiences, but it seems their distributed model isn't right) and have been giving Elasticsearch serious thought again.

<comment><USER21> "In the Java space" meaning deployed in a Java servlet container. Both are stand-alone search servers, exposing their API for search and indexing through HTTP using XML and/or JSON.

<comment><USER20> > "In the Java space" meaning deployed in a Java servlet container.

I didn't say nor mean to imply that. Technically, Solr _is_ based on servlet technology whether stand-alone or not, you can choose to deploy it in a web container of your choice or use the Jetty instance it comes with for the "stand-alone" experience. I don't know much about Elasticsearch's architecture personally.

<comment><USER13> Elasticsearch is very component-based and can be deployed as a servlet if you really wish.

Just use a different transport implementation:

[https://github.com/elasticsearch/elasticsearch-transport- war...](https://github.com/elasticsearch/elasticsearch-transport-wares)

</comment></comment></comment></comment></comment><comment><USER22> I have been prototyping with Elasticsearch for the last couple of months. I have nothing but great things to say about the software and documentation. Several other partner teams have taken notice of my work and will likely incorporate the software as well. Very exciting!

</comment><comment><USER23> Awesome! I make heavy use of elasticsearch and am very happy with the performance.

It's typically the rest of the pipeline now that causes most of the latency whereas search used to be the bulk of the duration of a request.

It has also spurred other entities to improve their search performance :)

</comment><comment><USER24> I saw these folks at gluecon. Haven't looked at a ton of dashboard solutions, but I found Kibana to be pretty compelling, simply because it was trivial to get the elk stack up and running and input arbitrary data. I am not as interested in log data, more in business metrics.

</comment><comment><USER25> I always thought that Elasticsearch was something provided by Amazon, and hence not really interested in it. So I was rather surprised to see in the title that they raised money.

Apparently what Amazon provides is called Elastic _MapReduce_ , not Elastic _Search_.

</comment><comment><USER26> Maybe they can finally write some docs

<comment><USER27> The docs are pretty good and have been for a while:

[http://www.elasticsearch.org/guide/](http://www.elasticsearch.org/guide/)

Admittedly they were pretty poor early on, but they've matured with the product.

</comment></comment><comment><USER28> Great product and wish them best of luck. Had great success using with Hive with their Apache Hadoop plugin for doing quick analysis.</comment>


Oracle Compute Pricing - <AUTHOR> https://cloud.oracle.com/en_US/opc/compute/compute/pricing <comment><AUTHOR> Oracle made big claims this week about beating AWS in both price and performance.

[http://www.computerworld.com/article/3122424/cloud- computing...](http://www.computerworld.com/article/3122424/cloud- computing/oracles-infrastructure-business-focuses-on-bare-metal-to-go-after- aws.html)

As for performance, you'll just have to take their word for it. The user agreement prohibits disclosure of any benchmark or performance testing results without Oracle's prior written consent.

[http://imgur.com/a/kXWRH](http://imgur.com/a/kXWRH)

<comment><USER2> Where is the 36 core machine they so proudly boasted about?

How come compute/core is 0.10/hr instead of the 0.075/hr they announced?

What a load...

<comment><AUTHOR> Oracle claims that one of their CPUs is equivalent to two vCPUs. If this is true, then their rack rate is a little less than EC2 per instance hour, and block storage looks like it's half the cost.

But with Amazon, all my instances are either reserved or spot, so I'm paying far less than rack rate.

It all comes down to price per performance. You can't tell anything from these headline numbers. But since we're prohibited from disclosing results of any performance testing, there's no easy way to know.</comment></comment></comment>


Using EventEmitters in Node.js + CoffeeScript to decouple modules - <AUTHOR> http://pragprog.com/magazines/2011-08/decouple-your-apps-with-eventdriven-coffeescript

<comment><AUTHOR> "I'm the author, ask me anything," as they say.

One of the interesting and/or frustrating things about Node.js is that, although it's based on a very dynamic language where you can modify (nearly) any object at any time, it also encourages strict modularization where, if "x" requires "foo," "bar," and "baz," then it's got to explicitly `require` all of those scripts.

Bringing dependencies in with `require` makes testing a pain. I don't think anyone's quite cut the Gordion knot of how testing should be done in Node; it's an open problem, and I certainly don't think I have the full solution. My intent with this article is to get people to realize just how much flexibility they have in organizing their Node apps. The "best practices" haven't emerged yet, and that's kind of cool.</comment>


Reactive and Component Frameworks for "Old Fart" Programmers - <AUTHOR> https://blog.codesolvent.com/2019/08/reactive-and-component-frameworks-for.html <comment><USER2> > Vue is the most Javascripty of these frameworks

I'm not sure the React folks would agree to that :)

<comment><USER3> They could, but common use of React requires JSX, which means you need to transpile to use it. Not very "javascripty" in my opinion, at least compared to Vue, where you can include Vue via a script and be off and running.

<comment><USER2> > _Not very "javascripty" in my opinion_

Oh I agree, but the React guys are always bragging that JSX is just JavaScript.

</comment></comment></comment><comment><USER4> If this page is about components then there is a major omission here: Web Components. HTML custom elements are the way to go if you want to build reusable components that work in any framework. Custom elements are easy to write and are the way to go going forward, especially when Edge switches over to Chromium.

[https://developer.mozilla.org/en- US/docs/Web/Web_Components/...](https://developer.mozilla.org/en- US/docs/Web/Web_Components/Using_custom_elements)

<comment><USER5> I have yet to see any success story involving web components or even a convincing article that explains what they bring to the table. I am not sure what would be the added value of a component usable by all frameworks given the variety of programming models out there.

<comment><USER4> Compatibility, longevity, reliability and simplicity are what they bring to the table.

Compatible because it is a W3 standard implemented natively by all browsers (including upcoming Edge). Even if your company has applications built using multiple frameworks (including future frameworks) you can write a component once and reuse it in all applications regardless of framework.

Longevity because this is a W3 standard. Frameworks come and go, but things built natively into the browser are here to stay.

Reliability because of Shadow DOM. You don't have to worry about id clashes, CSS classname conflicts etc when you add a component to an existing page.

Simplicity because there is no SDK or library or framework involved. It takes just a few lines of code to write a web component.

Regarding programming models, it doesn't matter. Web Components behave like built-in HTML elements, and all programming models support HTML Elements.

</comment></comment></comment><comment><USER6> I have always found the big 3 JavaScript frameworks to be three versions of the same thing with slight differences. As someone who as worked in frontend for a while I am vexed in why people think the skills from one framework don't translate to the others.

I remember talking to someone about working on a project and they asked me if I had worked in Angular and I said no but I have worked in Vue and React to which I got a reply of "you should really learn angular."

<comment><USER7> Speaking as an old fart, it's not about getting one framework but not the other, it's about the concept of the framework.

For me, coming from a heavy Ruby on Rails background, I learned to just "trust the magic" with Angular (which is what I've used). Change the variable here, trust it will update in the component on the screen. Don't ask why.

The other part about frameworks that was hard for a bit was, "But what part runs on the server?" \- as in, that idea that the code on the browser is generated by something on a server, and whatever that server part is actually talks to the API.

</comment></comment><comment><USER8> I was really hoping this was just gonna be about backbonejs

<comment><USER9> And I was missing flutter, which is more grey bearded than react.

<comment><USER10> I second this!

</comment></comment></comment><comment><USER11> Component based frameworks are nothing new.

Does anyone remember Java Server Faces? I hope not.

<comment><USER12> I remember tapestry, which was heavily component based (but still compiled down to servlets).

Heck, I remember ATG Dynamo, where everything was a javabean, including all the server side components.

</comment></comment><comment><USER13> Where does the author get the idea that it's ok to refer to people as "Old Fart" Programmers?

<comment><AUTHOR> OP here. I am an "Old Fart" Programmer myself, no offense intended :)

<comment><USER14> Good lord, don't worry about this BS, it's clearly fine outside the world of fringe complaint-seeking Internet loonies. Or well-attuned trolls, which I'd say is more likely in this case (in which case: well done troll, I mean look at this thread! But then HN's got some of the worst troll defenses around, so, middling victory).

Anywho, unless you're punning with "brought to bare" it should be "brought to bear", as in "bearing", as in the direction of something.

[https://en.wiktionary.org/wiki/bring_to_bear](https://en.wiktionary.org/wiki/bring_to_bear)

<comment><USER13> Hi, the fringe complaint-seeking internet loony here. Ageism is a real thing with consequences affecting the very livelihood of millions of people. I don't know the author's age, but people in their thirties sometimes think calling themselves old farts is cute. My bet is they'll change their minds once they hit their fifties, if they don't exit the industry by then. But dismissing all that as trolling is certainly the easy way to go.

<comment><USER15> Ah, but you're mixing industry with skill here. I can be an old-fart surfer and not be a paid surfer, for example.</comment></comment></comment></comment></comment>