Electricity-free air conditioning - <AUTHOR> http://www.economist.com/news/science-and-technology/21634992-new-materials-may-change-way-temperatures-are-regulated-cool-idea <comment><USER2> Existing passive solar air conditioning is underutilized.

Some ideas are very old, for example: [http://en.wikipedia.org/wiki/Solar_chimney](http://en.wikipedia.org/wiki/Solar_chimney)

<comment><USER3> I can see how something like that would work in arid conditions, but in areas where it is humid, it seems like you would get a lot of problems with mold and dampness.

<comment><USER4> None of the A/C alternatives I've seen on HN in the last couple of years even try to tackle the problem of humidity. They only focus on lowering the temperature, and sometimes even increase the humidity while doing so.

Maybe this has something to do with the fact that a lot of U.S. tech startups are located in relatively arid parts of the country, such as the Bay Area. I'd like to see what they can come up with if they were all relocated to Florida, or even better, Southern China.

</comment></comment></comment><comment><USER5> Not sure why everyone is trying to couple this to solar panels. The TL;DR for the article is a material that is 97% reflective to incoming light and also a heckuva radiative source. As such, it bounces away all the sunlight and radiates additional energy out into the void. The international space station uses a similar setup to achieve this- there's nowhere for waste heat in the space station's solar panels to go (there's no air to accept it) so radiation is the only method of dumping it. Nobody does this on Earth, because radiators are heavy and take up a lot of space. It'd be far cheaper to just install more solar panels.

Solar panels try to absorb all the light they can; that 10-20% is sunlight to electricity, and most of the rest is absorbed as heat.

If you tried to combine the two by stacking, a reflector/radiator with an absorber, you'd render one or both useless. The radiator would block the solar panel's light, or the solar panel would block and reflect the radiated light from the radiator. You could point the radiator down, which would cool the solar panel a bit (making it more efficient), but you'd be heating up whatever was beneath the solar panel. That'd be great in an open field but awful on a rooftop.

This invention's biggest application is in the existing situations where you want to dump heat. Air conditioners have large radiator sections (not sure why they call them radiators because they do not radiate so much as conduct and convect the heat away) which would be able to dump a lot more heat with a properly oriented coating using this novel material (also potentially eliminating blowers and fans).

I'd really like to see a graph of heat flux versus ambient temperature versus area. If it took 1 square meter versus 100 square meters to dump, say, 1000 watts, that would change this from a curiosity to a breakthrough.

</comment><comment><USER6> Very cool. I love the way computers are smashing technology forward.

But the article didn't answer the big question, why this over solar panels.

Grab the energy and turn it into electricity seems to make more sense, cool the building while creating $.

<comment><USER7> Solar panels are only 10-20% efficient. The rest of the sunlight ends up as heat which presumably might end up in the building. It would be difficult to cover an entire sunward side of a building with solar panels anyway which is what you would want to do with this technology should it ever be made practical.

My question would be: why this over insulation?

<comment><USER8> You wouldn't just cover the sunward side of a building with the new material. You would cover every surface that has an unobstructed view of the sky, from any angle.

Furthermore, the surface could be corrugated instead of flat, to increase the radiating surface area. The cooling would work even when radiating at a reflection of the sky.

This would likely be used in addition to insulation. Your radiators would be thermally connected to the building through a managed, thermally conductive channel, so that the cooling effect would not continue throughout the winter, for instance.

<comment><USER7> The outside surface would also be fairly strongly coupled to the ambient environment due to convection. I suspect that coupling the outside surface past the insulation would be a loss in any case where it was hot enough outside to make people care about air conditioning.

<comment><USER8> Couldn't you just put the whole thing behind a layer that does not absorb IR or visible light, but is also a poor thermal conductor?

The article mentioned that they did that using an enclosed box to test the material. It wouldn't be much additional effort to add a heat pipe that transfers heat from the object to be cooled, through the box, to the radiator- reflector. That way, you are cooling only what you want to cool rather than the whole environment surrounding the device.

<comment><USER7> I was thinking about that too. You would need one or more sheets of something transparent to infrared 8-13 microns. Such materials apparently do exist:

[http://www.infraredtraininginstitute.com/infrared- transparen...](http://www.infraredtraininginstitute.com/infrared-transparent- materials/)

Such a material would also have to not absorb too much sunlight.

</comment></comment></comment></comment></comment></comment><comment><USER9> I am somewhat skeptical about this.

It sounds like they tried to apply thin-film optics for this material, given their talk of layers that are both extremely thin and precisely defined. Thin- film optics relies on interference effects between transmitted and reflected light, and enables very specific optical behavior. For example, using thin films it is possible to make a stack of layers that reflects a very specific, narrow band of wavelenghts, while transmitting everything else. In real-life, rewritable optical media such as CD-RW and DVD-RW make use of thin-film optics.

The point though is that thin-film optics only works for coherent light, such as laser light. Sunlight is not coherent, and you will not get the desired interference effects, because the light waves are not "synchronized", as it were.

So while I could be wrong, I wouldn't be surprised if the performance of this reflective sheet is very low, and nowhere near what would be required to replace air-con.

<comment><USER10> Layers of films can be stacked to produce a broader absorption band. Since they aren't concerned with transmission then essentially they can build as many layers as they want to block the spectrum of interest (ignoring cost, of course). Perhaps a larger concern is the dependence on thin-film interference to the incident angle of the light.

</comment></comment><comment><USER11> > enabled the siesta-free working habits of the temperate regions

Frankly, that is an absolute downside.

I live in a very temperate region and having switched to freelancing i find that the daily siesta makes me much more productive.

<comment><USER12> Enabling is not enforcing. No downside.

<comment><USER11> In practice it is enforced in my country to forego siesta, as long as you are not self-employed.

</comment></comment></comment><comment><USER13> It would probably make more sense to use it to concentrate solar energy on to solar panels. That plus a combination of better insulation, triple glazing, and increased thermal mass would make better use of the energy. Many of the buildings that have window air-conditioners like the one used as an illustration in the Economist article are so badly designed from a thermal perspective that they would not benefit much from such mirrors anyway. A lot of the heat they suffer from is generated internally. Another way of dealing with the problem is to use the heat pumps to dump the heat into water to use for washing and process heat instead of just throwing it away. As far as I can see the mirror is exactly the same idea as a window air-conditioner except more efficient, that is, it simply moves the problem elsewhere. Still, as a component in a system of measures to control temperature it sounds like a good idea.

<comment><USER14> Solar panels are very expensive and can not be used on windows.

<comment><USER15> "Solar panels are very expensive"

Times are a changing, $1/watt stereotypical 100 watt panel is about 2x4 feet.

A window of decent quality , somewhat energy efficient, of 2x4 foot size is about $300.

TV's sell for about twice what a comparable surface area window costs. A 50 inch TV has about the same surface area as a 100 watt solar panel.

Aquariums cost about the same as windows (2ft by 4 ft front would probably be about a 60 gallon, which is about $300)

Another way to put it, is if you're looking at glass, per square inch, the cheapest (aside from picture frames) is solar panels, then windows and fish tanks cost about 3 times as much as solar panels, then TVs cost about six times as much as solar panels, per sq inch.

Back on topic you'd be far better off installing perhaps 3x to 10x the square footage of solar panels than installing very expensive windows with this film.

At least theoretically you could apply the film to siding, maybe even roofs, and have slightly cooler surfaces.

<comment><USER14> > 2x4 foot size is about $300

2 micron thick coating probably costs $0.1 for the same size.

</comment></comment></comment></comment><comment><USER16> My dad did a simpler version of this a few years ago: he used to live in a trailer with a black roof; one summer he painted the roof silver and the inside got noticeably cooler.

<comment><USER17> That's half of what is going on with this material. A silver/shiny roof will reduce the amount of solar energy absorbed into the home. But it will also reduce the heat which is radiated out of the house. So this method won't cool the house it will just insulate it better from the sun. (Which will result in cooler temperatures, though)

Something (e.g. a color, surface finish) which absorbs heat efficiently also gives off heat efficiently and vice versa. That's why steel/iron motorcycle cylinders are often painted black. The amount of heat absorbed by the sun is much less than the amount of heat which can be radiated away.

What these researches are trying to do is optimize this reflection/absorption ratio for the various light/infra-red frequencies. Pretty cool idea, I think.

</comment></comment><comment><USER18> This reminds me of the technology that generates electricity by emitting photons at night. You might think it were a joke if it weren't from Harvard:

[http://www.seas.harvard.edu/news/2014/03/infrared-new- renewa...](http://www.seas.harvard.edu/news/2014/03/infrared-new-renewable- energy-source)

</comment><comment><USER19> So this material reflects light at a specific frequency. Could this type of reflection be used to make solar panels more efficient?

I can see this material being useful on roof terraces but in high rise buildings less so.

However I still don't understand why people would use this over a solar panel setup (cost I would assume).

</comment><comment><USER3> I wonder how it compares to this:

[http://www.jetsongreen.com/2009/06/desert-modern-rimrock- ran...](http://www.jetsongreen.com/2009/06/desert-modern-rimrock-ranch- house.html)

They actually had to get special approval to downsize the AC units.

</comment><comment><USER20> I don't get it. How is this different from going under a shade?

<comment><USER7> A shade heats up and radiates long wave radiation from the back side. This would keep the shade material cool.

</comment></comment><comment><USER21> what if there is water condensating on the panel ? what if the panel is not perfectly oriented towards the sun ? (dunno, just asking)

<comment><USER22> Don't know what happens if there's condensation. As for orientation, here's the paper.

[http://www.nature.com/nature/journal/v515/n7528/full/nature1...](http://www.nature.com/nature/journal/v515/n7528/full/nature13883.html)

You're looking for Extended Data Figure 1b). It shows relatively constant emissivitiy from 5 through 60 degrees of incident light.

Speculating on water condensation. This would probably lower its efficiency. That said, they only claim cooling of ~40Wm^-2, corresponding to ~5 degrees below ambient. Realistically, this stuff is most useful when ambient is above ~20-25 degrees (this is when most people want cooling), where the drop in temperature by ~5 degrees shouldn't cause too much of a condensation problem. Of course, that's just one application.</comment></comment>


Things to commit just before leaving your job - <AUTHOR> https://gist.github.com/aras-p/6224951 <comment><USER3> Something I wrote to amuse the junior front end developers here:

        document.write('Error: Script not found.');
        var node = document.currentScript;
        if (node.parentNode) { node.parentNode.removeChild(node); }

Pop that in a JS file called something like jQuery.min.js and add it to an HTML page with the usual <script src="/js/jQuery.min.js"></script>. It'll run when the page loads, add the line of text to the page, and then it'll remove it's own <script> tag so there's no reference to it in the DOM (in relatively modern browsers) if you view the source. It's easy to debug by watching the network traffic, but it caused a few scratched heads for a little while.

<comment><USER4> Why wouldn't you search for 'Script not found' in the source code..?

<comment><USER3> The point wasn't to leave people puzzling over it for hours. It was a bit of fun. But ... It'd be quite trivial to hide the string.

        var msg = ['E','r','r','o','r',':','S','c','r','i','p','t',' ','n','o','t',' ','f','o','u','n','d'];
        document.write(msg.join(''));

<comment><USER5> I gave a talk at BlackHat many years ago about JS malware, and proposed obfuscating malicious JS like this:

\- Treat JS code like 7-bit ASCII

\- For each character, convert the bits into white space. 1= space, 0 = tab

\- A = "1000001" = space tab tab tab tab tab space

\- concat it all together, \n shows you are done

So you can represent JS code as just whitespace. Which means this is malicious code:

<script> //st4rt

//3nd

var html = document.body.innerHTML; var start = html.indexOf("//st" \+ "4rt"); var end = html.indexOf("3" \+ "nd"); var code = html.substring(start+12, end); eval(hydrate(code)); </script>

<comment><USER3> I like that a lot. I wonder if it might be possible to use Unicode zero width space and zero width non-joiner characters.. Then there wouldn't even be any white space to see.

</comment></comment></comment></comment></comment><comment><USER6> I would suggest before you leave your job, you say "it was nice working with you" to the people you liked working with, and absolutely nothing to those who you did not enjoy working with.

The tech world is big in some ways, but also equally small in others. A select few might find this funny, but others will not appreciate their day (or longer) spent debugging your practical joke...and on the chance you actually get something like this onto production, well now it won't just be your developer buddies you got off side.

<comment><USER7> And if you do a code change, make sure it is really funny, is easy to fix and discover and is invisible to customers. Like, inject a hilarious joke into the log files or something.

<comment><USER8> A coworker at a previous job altered the company's internal web application so that when one specific user was logged in, about 1/20 of the time it would load a hidden iframe that played Rebecca Black's Friday. This stayed in place for a long time because the user couldn't figure out what was going on and was too embarrassed to ask anyone else about it. Instead, they turned off the computer's sound and started listening to music on their phone.

</comment></comment></comment><comment><USER9> The horror story that I heard was a disgruntled engineer silently replaced the source codes (C++ based) in the project with compiled binary object files and he kept the source codes on his local computer, not checking those in. He did this over an extended period of time to make sure this crept into the backup tapes as well. No one found out because each engineer owned a code module of their own. Then he resigned.

When his successor tried to debug and enhance the code base, the core files were basically all stripped binary object files...

<comment><USER10> this is why we have code. reviews. haha. Yeah...I'd file a criminal lawsuit on his ass though.

<comment><USER11> In the US, only the "State" can file a criminal lawsuit. Imagine trying to explain this crime to a county prosecutor!

<comment><USER12> It's called "private prosecution". And there are still a few parts of the US where it is possible.

[https://en.wikipedia.org/wiki/Private_prosecution#United_Sta...](https://en.wikipedia.org/wiki/Private_prosecution#United_States)

</comment></comment></comment></comment><comment><USER13> From "How to write unmaintainable code" [0], here is a function declaration that changes signature based on how many times the header is #included:

        #ifndef DONE
        #ifdef TWICE
        void g(char* str);
        #define DONE
        #else // TWICE
        #ifdef ONCE
        void g(void* str);
        #define TWICE
        #else // ONCE
        void g(std::string str);
        #define ONCE
        #endif // ONCE
        #endif // TWICE
        #endif // DONE

Granted, it isn't one line long.

[0] [https://www.thc.org/root/phun/unmaintain.html](https://www.thc.org/root/phun/unmaintain.html) (Cert issue shows up on FF unfortunately)

<comment><USER14> I honestly believe that one of the CTOs at my previous employer has followed that guide to ensure the security of his job.

He wrote an entire custom framework for their SaaS platform. I couldn't believe my eyes when I started work on it. I think I lasted 4 weeks before I gave them my 2 weeks notice.

</comment></comment><comment><USER15> Someone will lose some hair over this

      /* create memory leaks if compiled on April, 1st */
      #define free(x) if(strncmp(__DATE__, "Apr  1", 6) != 0) free(x)

The random ones are just pure evil.

<comment><USER16> I believe random ones based on compilation date can be evil, since git bisect can't find them. What about an error that only happens depending on character encoding?

</comment></comment><comment><USER17> PCI-compliant networks often contain checks for credit card numbers being sent in plaintext over the network. Problem with that is that credit card numbers are computed according to a formula, and it's really easy to generate a bunch of fake 16-digit numbers that will pass the check. So if you want to troll your security team, generate a CSV with a stack of credit card numbers and drop it in a few places on a server. Even better, set up a script to send it over the network somewhere. Then wait for the scan.

Piece on check digits, for reference: [http://www.datagenetics.com/blog/july42013/index.html](http://www.datagenetics.com/blog/july42013/index.html)

</comment><comment><USER18> It is always a funny joke to say "commit this when you leave a job". But I always wondered if there are people that actually do this.

Although it could be funny and give a sense of revenge for some wrong (perceived or real) that the person leaving might have suffered, I don't think this would be a good idea. Contracts usually include liability for gross negligence or wilful misconduct.

Does anybody have a record of this actually happening at any company?

<comment><USER19> The problem with doing this, besides being incredibly unprofessional, is that it won't really affect the company much - besides reducing productivity for a little while - however it will annoy the hell out of your previous colleagues. Unless you're leaving because you fell out with your colleagues, I doubt it would have the desired effect.

<comment><USER20> Yeah everyone would notice it around the same time, look at recent commits, see some silly file got committed and revert. You'd have to have a team of pretty sub-par devs to not undo this fairly quickly. Although it would be sort of annoying for a couple of hours. In fact if you left on really good terms and were still great friends with the team, something like this might be more of a silly prank than anything truly malicious.

</comment></comment></comment><comment><USER21> I left a file called xmas.js included in an internal tool one time when I left for a 9 month trip in between contracts (in November).

Basically it would check whether it was the last few weeks of December, and whether rand()%20 was zero. If so, it would wait about a minute then slowly fly a little gif of Santa & his sleigh across the background, behind all the controls on whatever form it happened to land on.

They had a team of data entry guys using this tool, and it would take on average a few minutes to enter each record. So it made its way through QA and eventually to the desk of a friend. Got an email on the beach about it. Fun times.

</comment><comment><USER22> I love this. Evil in it's purest form.

But also a great war story for the person who discovers it later.

"So it was my 5th sleepless night. The thing would work 99% of the time. I triple checked every single line of code and it was still formatting the hard drive from time to time. Then I discovered:

#define if(x) if ((x) && (rand() < RAND_MAX * 0.99))

"

</comment><comment><USER23> From the comments my favorite:

       #define i j

<comment><USER24> It gets debugged in a flash though.

<comment><USER25> yep. e.g. gcc 4.8.4 happily complains about redeclaration errors and points out that it is a result of the offending macro expansion.

</comment></comment></comment><comment><USER26> My favorite (JS) [https://twitter.com/benbjohnson/status/533848879423578112](https://twitter.com/benbjohnson/status/533848879423578112)

</comment><comment><USER27> I watched my friend swap the 'm' and 'n' keys around on the two tech directors keyboards the evening he left after goodbye drinks, the next day they both had to contact the IT support department as it turns out they still look at their keyboard whilst tapping in their passwords... amazing!

<comment><USER28> I heard about a bug report once, where a guy contacted IT to say "I can't log in when standing up, only when sitting down."

IT guy is like "well that's the stupidest thing I ever heard", but he tromps up to the reporter's cubicle, and sure enough, same thing happens to him.

Eventually he discovers you can only log in if you're touch-typing, because a few letters got swapped, and nobody touch-types when they're standing up.

</comment></comment><comment><USER29> I joked about starting a salary spreadsheet during my last week. Management wouldn't even make eye contact with me on the last day. :P

<comment><USER30> I don't get this one. Could you elaborate?

<comment><USER31> I think everyone knowing everyone else's salary would cause major problems, at least here in the US. It would be a major source of headache for management as they try to triage complaints from employees who are getting paid less than their colleagues with the same title or similar experience (or even less experience).

</comment></comment></comment><comment><USER32> Back in the bad old days of Visual SourceSafe I believe it was possible to perform a "commit time bomb" by rolling your computer's clock forward a couple months before committing. The VSS backend would not enact the commit until the server's clock caught up to the commit's timestamp. D:

</comment><comment><USER33> We've got a guy in the office that merges the past over the present all the time. He's not quitting but I imagine if you were to try to break things this would be a good way to do it.

<comment><USER34> Got a offshore guy just like that. Constantly committing his whole project where most files are out of date and only the few he worked on are not.

There's no reason for him to commit javascript files he doesn't even work on the front end. It took me forever to figure out he wrote over my files the other day.

<comment><USER35> He must be using push --force in that case.. which seems like a bad practise.

<comment><USER33> What they're doing is something like branching off a very old version of master, making changes to file A then trying to merge into the latest version of master, which already has a load of changes to file A. They then resolve the conflict by picking "ours", thus ignoring all changes on origin/master in favour of their own old version of master. This doesn't require a --force.

<comment><USER35> Oh, that seems even worse!

</comment></comment></comment></comment></comment><comment><USER22> Wouldn't it be wise if the compiler (or preprocessor) issued at least a warning if you redefine language keywords ? :)

So I just pasted this into a C++ file I was working on and it compiled without a single warning:

#define struct union

#define if while

#define else

#define break

#define double float

#define volatile // this one is cool

I mean, redefining language keywords is not a thing I do every day and I guess most of you don't do it either and I can't see a valid reason why you'd want to do it in a normal project. For people who really want to do it, they'd just disable the warning.

Am I missing something here ?

<comment><USER36> No warnings is the whole point.

My c++ isn't so good that I understand that first one, but if->while and break->"" can introduce infinite loops, else->"" will break logic (and possibly hit null pointers), double->float will cause subtle rounding errors in numeric computation, and volatile->"" will break multi-threaded apps unpredictably.

It's evil, subtle code breakage that because of the macro (in an included header far far away) leave the code looking perfectly ordinary.

</comment></comment><comment><USER37> "#undef FLT_MIN #define FLT_MIN (-FLT_MAX)"

i've seen FLT_MIN used as if it is -FLT_MAX enough times that i'm skeptical this would cause bugs rather than fix them. XD

</comment><comment><USER38> #define if(x) if ((x) && (rand() < RAND_MAX * 0.99))

That one is pure and absolute genius...er evil.

</comment><comment><USER39> Those who make liberal use of 'git bisect' can not be so easily trolled.

<comment><USER40> Unless you use one of the random ones.

</comment></comment><comment><USER41> Perhaps we now finally know the story behind this: [https://code.google.com/p/android-source- browsing/source/dif...](https://code.google.com/p/android-source- browsing/source/diff?spec=svn.platform--bootable--bootloader-- legacy.734756ca3968b54e32acab867a05b10fc5e13d07&repo=platform--bootable-- bootloader-- legacy&r=734756ca3968b54e32acab867a05b10fc5e13d07&format=side&path=/libc/memset.c)

"probably can live undetected quite long" indeed...

<comment><USER42> So memset was crippled from Android 1.5-2.1? How did this not bring everything to a grinding halt? (Not familiar with Android's inner workings specifically, but from a C standpoint this sounds major.)

<comment><USER41> How often is memset used to set the data to something other than zero? Probably even less often than strncpy copies a string that is exactly the length of the destination, I'd wager :)

That is the evil genius of this bug.

</comment></comment></comment><comment><USER43> I had a professor back in the university that changes all the variable names to beer names while at a job. It ended up not being a problem for the company as he was consistent with the names.

<comment><USER44> I once started a job where whoever wrote the codebase I inherited had used variable names like MrString, MrsInteger, SirArrayOfArrays etc.

Was hilarious :-|

</comment></comment><comment><USER45>
      #define continue break

</comment><comment><USER46> If only we can get a rosettacode version of this in all languages. I bet trolls will coming out left and right. It would be pure evil.

<comment><USER47> Most languages don't have a purely textual and completely unsafe preprocessor running during the compilation process, so it would be quite hard.

<comment><USER48> You could do some real evil stuff with reflection though, such as messing with Java's IntegerCache: [http://codegolf.stackexchange.com/a/28818](http://codegolf.stackexchange.com/a/28818)

<comment><USER49> Ruby:

        irb(main):009:0> class Fixnum; def + other; 42; end; end
        => nil
        irb(main):010:0> 4 + 5
        => 42

</comment></comment></comment></comment><comment><USER50>
        #define i++ i--

Or even better

        #define i++ ++i

<comment><USER51> I don't think '+' is valid in a C preprocessor macro name.

</comment></comment><comment><USER52> If you wan't to give your boss a laxative, through the coffee machine and lock the restroom doors in advance, just do.

<comment><USER53> I am having a har'd time working out that contraction.

</comment></comment><comment><USER54> Ooh. I recognize one of the contributor names, @cmuratori, from another HN post: Handmade Hero: C game from scratch [https://news.ycombinator.com/item?id=8604489](https://news.ycombinator.com/item?id=8604489)

<comment><USER54> And another, @mike_acton, from CppCon 2014: Mike Acton "Data-Oriented Design and C++" [https://news.ycombinator.com/item?id=8391464](https://news.ycombinator.com/item?id=8391464)

<comment><USER55> Yeah there was some crowdsourcing via twitter back when I wrote the (initially short) gist.

</comment></comment></comment><comment><USER56> Perhaps the most enlightening (and actually useful) purpose of this file is to dramatize the glaring weakness in the c/c++ macro system. A proper macro system would not make it so easy to do this, shall we say, "evil", stuff :)

<comment><USER57> Ruby too:

        class Fixnum
          def +(other)
            self - <USER2>
          end
        end

        10 + 3
        >>> 7

</comment></comment><comment><USER58> > (only pixel snapping + vertical-align left)

If vertical-align is the last thing, rather than one of the first, that one resolves... then we are in for 7 more years of hell.

</comment><comment><USER59> Oh I so desperately need a PHP equivalent right now.

<comment><USER60> PHP actually allows much less mischief here than C or, say, Python does. It doesn't let you redefine or delete functions, classes or constants, unlike C where macros can be abused for this, and Python where you can delete anything.

But you could hide all errors if you want to screw with people:

      error_reporting(0);
      set_ini('display_errors', '0');
      set_error_handler(function () { return TRUE; }, E_ALL | E_STRICT);
      set_exeception_handler(function ($ex) { });

<comment><USER61> Well yes of course you can, we're talking about PHP here.

[http://php.net/runkit_function_rename](http://php.net/runkit_function_rename)

<comment><USER62> Most, if not all, installations of PHP won't have runkit installed. It's an extension.

</comment></comment></comment></comment><comment><USER63> and i read it just in time to have

"So basically just #include <windows.h>"

as the last comment, i think it was an interesting summary

</comment><comment><USER64> I like #define const

</comment><comment><USER65> #define ntoh hton

</comment><comment><USER66> _#define volatile // this one is cool_

Oh wow. This literally sent a shiver down my spine. Imagine debugging that.

Also love the randmoness based ones!

<comment><USER67> Will you explain what this would do?

<comment><USER66> Of course :)

Basically this removes the volatile keyword from your code and replaces it with... nothing.

If a variable is declared volatile, it disables compiler optimizations and signals the compiler that this variable can be modified at any time (e.g. by hardware or other threads). Omitting volatile can lead to nasty concurrency bugs (e.g. if the optimizer optimizes spin locks away). In the worst case, such bugs are extremely hard to reproduce (and thus debug) but lead to deadlocks and/or crashes in case they do occur.

<comment><USER47> > Omitting volatile can lead to nasty concurrency bugs (e.g. if the optimizer > optimizes spin locks away). In the worst case, such bugs are extremely hard > to reproduce (and thus debug) but lead to deadlocks and/or crashes in case > they do occur.

In C and C++, volatile is not intended and must not be used for synchronisation primitives, it is not a memory fence (so it does not force cache coherency and does not prevent operations reordering) and operations on volatile variables are not atomic. Its primary use case is memory-mapped IO (with a sub-use case of preventing eliding memory operations affected by inline assembly). If a lock is broken because `volatile` is disabled, it's probably incorrect in the first place.

All `volatile` does[0] is forbid elision of loads and stores.

[0] again in C or C++, Java and C# have completely different semantics

<comment><USER68> While you are absolutely correct, you will find no shortage of experienced employees at large companies that will disagree. In fact, they will insist that the only purpose of volatile is a primitive for synchronization. I actually had a conversation where a developer insisted that by declaring a variable volatile all operations on it were atomic.

Of course at this same company a developer insisted that if you use the mongoDB client libraries in your software, your software can never have data consistency problems.

<comment><USER69> If those developers target Visual Studio exclusively, they are actually correct: [https://msdn.microsoft.com/en- us/library/12a04hfd.aspx](https://msdn.microsoft.com/en- us/library/12a04hfd.aspx)

<comment><USER68> That is pretty entertaining. It is also a good reason to never use microsoft development tools.

</comment></comment></comment></comment></comment></comment></comment><comment><USER66> How about

 _#define free(x) if((rand() &15)!=15) free(x)_

</comment><comment><USER70> This is when the scriptkiddies start getting involved..

<comment><USER71> Skript kiddiez -by definition- don't program; they run canned scripts to do their l33t hax.</comment></comment>


Yacd – Decrypts FairPlay applications on iOS 13.4.1 and lower, no jb required - <AUTHOR> https://github.com/DerekSelander/yacd <comment><USER2> "FairPlay is a digital rights management (DRM) technology developed by Apple Inc. It is built into the MP4 multimedia file format as an encrypted AAC audio layer, and was used until April 2009 by the company to protect copyrighted works sold through iTunes Store, allowing only authorized devices to play the content."

"FairPlay-protected files are regular MP4 container files with an encrypted AAC audio layer. The layer is encrypted using the AES algorithm. The master key required to decrypt the audio layer is also stored in encrypted form in the MP4 container file. The key required to decrypt the master key is called the "user key".[1][2] When a user registers a new computer with iTunes, the device requests authorization from Apple's servers, thereby gaining a user key. Upon attempting to play a file, the master key stored within the file is then matched to the user key, and if successful, allows playing.[2] FairPlay allows unlimited music burns to CDs and unlimited music synchronization to iPods, but restricts listening to three Mac computers.[3]"

I still don't understand what would "FairPlay applications" entail? Anyone care to explain further?

<comment><USER3> > I still don't understand what would "FairPlay applications" entail? Anyone > care to explain further?

Apps on iOS are kept encrypted until runtime, presumably to deter piracy.

Obviously this makes reverse engineering/studying apps difficult, hence all the interest in a way to get unencrypted apps

<comment><USER4> And as is usual with DRM, all it takes to defeat is one jailbroken device. Or, in this case, just one running an old enough iOS version.

</comment></comment></comment><comment><USER5> What is the lowest version of iOS that you can use this on?

My main iPhone I always keep up to date because I don't want it to be exploited, but I have an old iOS device laying around that runs iOS 9.3.5.

Would this work on iOS 9.3.5? And can the current version of Xcode on Catalina target iOS 9.3.5?

<comment><USER6> It's based on Psychic Paper [https://siguza.github.io/psychicpaper/](https://siguza.github.io/psychicpaper/) , which the author says has "been there probably for as [long as] provisioning profiles were a thing" [https://twitter.com/s1guza/status/1255641705342214145](https://twitter.com/s1guza/status/1255641705342214145) , so probably...

</comment></comment><comment><USER7> Oh, this is nice, I'll have to try it out. However, it does seem to rely on an actual device to do the decryption: I wonder if it would be possible to reverse the FairPlay algorithm itself so this can be done off-device.

<comment><USER8> It must be possible to do on ARM Macs once they are released. Even if they are still encrypted (regular macOS App Store are not), extracting the key from macOS memory has to be simpler than on an iOS device.

</comment></comment><comment><USER9> Is there a version of this that runs on 13.5, since that's jail-breakable?</comment>


Facebook Messenger Assistant Powered by Humans - chris-at http://recode.net/2015/11/03/facebooks-virtual-assistant-m-is-super-smart-its-also-probably-a-human/ <comment><AUTHOR> > "The reason this is exciting is it's scalable," he added. "We cannot afford > to hire operators for the entire world to be their personal assistant."

Why all the praise when the goal will look nothing like it looks now. They don't actually know that it's scalable, otherwise we'd be seeing a completely non-human dependent AI with limited functionality (like ordering food) first. The current approach is just getting more data to see if the real version can work at scale.

<comment><USER2> > Why all the praise when the goal will look nothing like it looks now

Because the media machine needs to keep spinning. Rather than give a balanced statement now, which takes more effort to put together, it's easier to post "Wow, this is amazing" now and then "Wow, that was disappointing" later, and then get double the hits.

Relevant: [https://medium.com/backchannel/how-the-tech-press-forces- a-n...](https://medium.com/backchannel/how-the-tech-press-forces-a-narrative- on-companies-it-covers-5f89fdb7793e)

</comment></comment><comment><USER3> Reminds me of Google's 411 service back in the day. People thought "cool, Google is offering a free service". But Google was just collecting voice samples to train its voice recognition algorithms.

<comment><USER4> ok Google. Spy on all my activities. Sell them to corporations and governments.

</comment></comment><comment><USER5> >If a user asks A, you respond B.

A user may never ask A. Or, a user may only ask A once; in which case, did we really need to pre-compute the answer?

<comment><USER6> with 100s millions of user, each question will become a common question.

<comment><USER5> Questions like: what, why, when, how? They are very common, but don't have definite answers.

The problem is, even with 100s of millions (or even billions), there are still an infinite number of questions that can be asked. _Each_ of those questions can't be common.

</comment></comment></comment><comment><USER7> We are still far away from having computer's truly be able to learn on their own, without having a human optimizing the responses.

<comment><USER2> > We are still far away from having computer's truly be able to learn on their > own, without having a human optimizing the responses.

Could say the same about humans, though. We can't truly learn on our own without having others calibrating the process, or otherwise things set up by others.

</comment></comment><comment><USER8> "Supervised learning" makes me even more excited about M, because pure AI at this point won't be so useful.

<comment><USER9> AI in large part is supervised learning. I think the more important question here is when that becomes feasible for general purpose stuff for facebook.</comment></comment>


Pentagon finally admits it investigates UFOs - <AUTHOR> https://www.foxnews.com/science/pentagon-finally-admits-it-investigates-ufos <comment><USER2> People confuse UFO with aliens. Of course the government / DoD / Military watch for unidentified flying objects. We want to know if a foreign nation is sending prototype aircraft into our airspace to spy on us or perform nefarious activities. This should not really surprise anyone.</comment>


Postgres 9.5 feature highlight: row-level security and policies - <AUTHOR> http://michael.otacoo.com/postgresql-2/postgres-9-5-feature-highlight-row-level-security/ <comment><USER2> Wow. This is super exciting. What does this mean for multi tenant applications? Does this mean we can push our multi-tenancy logic down to the DB (if not logic, at least the last line of "data defence"). Can we create one DB user for each app-level account, ensure that all tables have the account identifier, and then enforce (at a DB level), that one account should be unable to access another account's data?

What does this mean for DB pooling? Is it possible to maintain a set of open DB connections where the account credentials can be applied, query executed, and the account credentials removed, with the connection going back into the pool?

<comment><USER3> > Is it possible to maintain a set of open DB connections where the account > credentials can be applied, query executed, and the account credentials > removed, with the connection going back into the pool?

SET ROLE/RESET ROLE can be used for that, however for role A to be able to switch to role B, you need to "GRANT B TO A" which will lead to a combinatory explosion.

It'd probably be better to have a user with all roles granted as NOINHERIT (so the only thing it can do is SET ROLE) and all connections defaulting to that, then when you get a connection from the pool you "SET ROLE current_user" and you "RESET ROLE" the connection before storing it back.

I have not tested it.

<comment><USER4> i do just that and it works like a charm.

</comment></comment></comment><comment><USER5> [http://www.postgresql.org/docs/devel/static/ddl- rowsecurity....](http://www.postgresql.org/docs/devel/static/ddl- rowsecurity.html)

I found the dev documentation to be much clearer than this blog post.

<comment><USER6> I find the Postgres dev documentation to be much clearer than most things, honestly.

</comment></comment><comment><USER7> I open every "New Postgresql features" article in the hope that it will contain "Simple cluster setup, you just start nodes and they will figure out the rest." Unfortunately it didn't happen so far...

Is it such a hard problem, that no one is able to solve it, or it is not a concern or interest of the parties that are developing Postgresql or the tools around it?

(And by hard problem, I don't mean surviving an aphyr-level diagnostics without any issues, but it it would be certainly nice to see such too.)

Edit: I'd settle for a multi-master replicated cluster, where the node failures and startups (and the migration of the data) is handled transparently in the cluster. I know that there are many other aspects, but even this basic case is painfully hard to achieve (much harder than with MySQL).

<comment><USER8> No it is not a hard problem, it is an impossible, unsolvable problem. Software can not alter its behavior to match your desires if you do not tell it what you desire. Clustering is not some simple monolithic thing where you just "enable clustering" and that's that. There's billions of possible clustering setups. Setting it up is as simple as it can get, you have to pick which of the billions of setups you want.

<comment><USER7> Yes, there are billions of different setups, but there are a few basic ones, and you could start by solving one or two, before solving the generic case. For example, one could provide just a cluster setup for data replication. No fancy distributed data models, just copy the data around in the cluster, if a new node joins copy that data to it, if something fails, handle the failure. Postgresql claims to have multi-master setups, so this is really about the node handling and copying the data around.

After that, you could introduce locally distributed cluster. Later on you could introduce geographically distributed cluster setups. But just because the later is very complex, does not mean that you can't start with the basic setup.

<comment><USER8> Setting up the few basic ones is already as easy as it can get.

<comment><USER9> Synchronous replication with automatic failover?

<comment><USER8> Yes.

<comment><USER7> Care to provide a link with the easy setup and cluster management? It could be a well-hidden gem that needs more publicity.

<comment><USER8> [https://wiki.postgresql.org/wiki/Replication,_Clustering,_an...](https://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling)

<comment><USER9> Trying to be ironic? That page does not present an easy way to set up what I asked for.

<comment><USER8> Yes it does. Here, I will click the correct link for you and everything: [http://www.repmgr.org/](http://www.repmgr.org/)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Yay, RLS! Maybe I'm weird but I've been waiting for this.

This will make per-tenant replication easier too

<comment><USER11> What is RLS?

<comment><USER12> Read the article...

</comment></comment></comment><comment><USER13> Looks like Oracle's Virtual Private Database? (or something like that, I cant remember the name)

<comment><USER14> Yes, it's almost the same

</comment></comment><comment><USER15> It's a nice example but when would you actually want RLS in the database? In practice you'd want to validate phone number formats etc, so between this and adding a "WHERE row_owner = X" to every query doesn't seem that different.

<comment><USER3> > so between this and adding a "WHERE row_owner = X" to every query doesn't > seem that different.

The difference is you _will_ forget to add the condition to a query at one point.

</comment></comment><comment><USER16> I would really like to see an implementation of MySQL's SQL_CALC_FOUND_ROWS. It's super handy for pagination.

<comment><USER3> According to [http://www.percona.com/blog/2007/08/28/to- sql_calc_found_row...](http://www.percona.com/blog/2007/08/28/to- sql_calc_found_rows-or-not-to-sql_calc_found_rows/) (which is a very old thread and may be completely outdated), it's also often much slower than just doing two queries.

<comment><USER16> Good to know!

Although, like you said, that thread dates back to MySQL 5.0 - I wouldn't hedge my bets on it today...

Is there a "best practices" way to handle pagination of complex queries without running the query twice?

</comment></comment></comment><comment><USER17> Server not found.

<comment><USER18> [http://webcache.googleusercontent.com/search?q=cache:CasMIHS...](http://webcache.googleusercontent.com/search?q=cache:CasMIHSDFfEJ:michael.otacoo.com/postgresql-2/postgres-9-5-feature- highlight-row-level-security/+&cd=1&hl=en&ct=clnk&gl=us)

<comment><USER17> Ah, thank you. :D

</comment></comment></comment><comment><USER19> Nice. :)

</comment><comment><USER20> Is there an ETA for the production release of PG9.4 ?

<comment><USER21> I've been wondering this as well. They've had a release candidate out for a few months now, but no official release and nothing about an expected date on their web page.

<comment><USER22> Here is a post on their mailing list about it:

""" Since we bit the bullet and changed the on-disk format for JSONB data, the core committee feels that we should put out a new 9.4 beta release as soon as possible. Accordingly, we plan to wrap 9.4beta3 on Monday (Oct 6) for release Thursday Oct 9.

    			regards, tom lane

"""

[http://www.postgresql.org/message- firstname.lastname@example.com...](http://www.postgresql.org/message- email@example.com?utm_source=postgresweekly&utm_medium=email)</comment></comment></comment>


Polar Expressed: What if an ancient story about the Far North came true? - <AUTHOR> http://www.newyorker.com/magazine/2017/04/24/polar-expressed <comment><USER2> TL;DR 6000 rambling words about Arctic exploration in the 19th century. I suppose it's a decent overview of a subgenre of literature, with some history sprinkled in. But if you were expecting "what if X came true" to expound on the modern-day consequences of X happening, this is all you get:

> For the once enormous icescape ringing the North Pole, the results have been > dramatic. Since 1980, sea ice in the Arctic has declined thirteen per cent > each decade. The Greenland Ice Sheet, which is more than a hundred and ten > thousand years old and covers six hundred and sixty thousand square miles of > the Far North, has shed two hundred billion tons of water a year since 2003. > These changes have already made travel in the region notably easier; in > 2007, for the first time in history, a ship navigated through the Northwest > Passage without help from an icebreaker. Such travel will only get easier in > the future. According to the most recent report from the Intergovernmental > Panel on Climate Change, by the end of our own century the summertime Arctic > will be entirely ice-free.

> From time to time during the life of our planet, roughly once every half- > million years, a curious thing occurs: its geomagnetic field reverses, such > that the North Pole and the South Pole swap polarities. Lately, our stories > about the poles have done the same. The nineteenth century dreamed of an > Arctic that was warm, accessible, and domesticated, but found a remote and > frozen region indifferent to human life. Now, in the twenty-first century, > as we approach an ice-free, accessible pole that has succumbed to our > influence, we dream of a faraway frozen land unspoiled by humankind... Once > the ice disappears, there will be nothing there. At that point, if we reach > that point, the Pole will become once again what it was long ago: a place we > know only through stories.

And that's how the article ends. If it wasn't for the clickbait, it would be an interesting narrative. But don't read it expecting the "what if" question to be answered in any more detail than the above. I expect better of the New Yorker than to package its reporters' work in expectation-mismanaging titles.

<comment><USER3> I enjoyed reading it, but I agree that the title is misleading to the point of being insulting.

<comment><USER4> It looks like they've changed the title now. "Literature's Arctic Obsession: The greatest writers of the nineteenth century were drawn to the North Pole. What did they hope to find there?"</comment></comment></comment>


Citizenship bill puts India on a path to become a Hindu nationalist state - <AUTHOR> https://www.washingtonpost.com/opinions/2019/12/10/citizenship-bill-puts-india-path-become-hindu-nationalist-state/ <comment><USER2> The bill allows followers of 6 different religions (Hindu, Sikh, Buddhist, Jain, Parsi and Christian) who live in the neighboring Muslim majority countries (Hindu, Sikh, Buddhist, Jain, Parsi and Christian) to apply for asylum if they face persecution because of their religious beliefs.

Said 3 countries have a long history of intolerance and persecution of their non Muslim citizens/residents.

How exactly is this making India a Hindu nationalist state?

<comment><USER3> I guess because it doesn't mention Muslims? Although the title is a bit clickbaity as it's not just Hindus this will make India even more religiously diverse just not so when Muslims are involved.

Non-paywall article here: [https://www.google.com/amp/s/www.bbc.com/news/amp/world- asia...](https://www.google.com/amp/s/www.bbc.com/news/amp/world-asia- india-50670393)

<comment><USER4> Cut back on the toxic behavior on HackerNews - This is not the place to argue about faith.

<comment><USER3> I am not being toxic just trying to add some insight. If I came off as such I apologize.</comment></comment></comment></comment>


Acceptance of FIDO 2.0 accelerates the movement to end passwords - <AUTHOR> https://www.paypal-engineering.com/2016/02/17/acceptance-of-fido-2-0-specifications-by-the-w3c-accelerates-the-movement-to-end-passwords/ <comment><USER2> Every time I read about this stuff, it makes my belly churn when the answers to questions like " _how do you recover your account, if you lose your device?_ " are things like " _they can have an extra secure password for recovery_ " or " _they can call and provide their <insert something vulnerable to social engineering or government interference, like a 'PostIdent' \- which the government actually controls>_" or " _bio-metric_ ", so, basically this new standard doesn't solve any security problem whatsoever; it just makes logging in easier and account recovery more confusing.

Why not instead work on a standard that enforces password strength beyond what is economically viable for brute forcing (which is something like 6-8 chars... not exactly a tough one)? I mean, the standard could literally just be this:

        A password MUST be 8+ characters in length.

Security problem solved.

Here's a comprehensive Python library for my new standard:

        def mangeletti_safe(raw_password):
            return len(raw_password) >= 8

In all seriousness, we will need to, at some point, come to the realization that the key to authentication has always been and will always be based on a secret that only you know, whether that secret is your resting pulse combined with the color of the rabbit's foot in your left pocket, or your fingerprint, or a password, or a private key (which IS A PASSWORD).

<comment><USER3> Because your proposal is defeated by a simple keylogger, or a phishing site, or with password reuse with a compromised site, or a myriad other ways that a U2F token won't.

The answer to your original question is the same as the answer to "How do you recover your account if you lose your password?". Usually, email password resets.

<comment><USER2> Which brings you to your email account, which if protected by U2F also, means you're doubly locked out, unless you've left a backdoor to your email account, which will be vulnerable to intrusion (as well as the keylogger / phishing attacks).

Not to mention, what about the challenge step? If somebody has a keystroke logger installed, that means they have control of at least part of your machine. They can probably read the bytes of your private key and then listen for your key's password to be entered.

The solution is longer passwords and expensive hashing algorithms that render brute force attacks not economically viable. The other problems (keyloggers (read: malware) and phishing are orthogonal and need to be solved otherwise, rather than us putting bandages on the security issues caused thereby.

<comment><USER3> > means you're doubly locked out

Same if you lose your password.

> The solution is longer passwords and expensive hashing algorithms that > render brute force attacks not economically viable.

No it isn't, longer passwords do nothing for keyloggers.

> The other problems (keyloggers (read: malware) and phishing are orthogonal > and need to be solved otherwise

They _are_ solved otherwise. By U2F. You're saying "this solution to keyloggers is a bad solution to weak passwords, strong passwords are a better solution", but we aren't talking about strong vs weak passwords. Nobody here is talking about password brute-forcing. By all means, use stronger passwords, but they don't help with the attacks U2F helps with.

<comment><USER2> > Nobody here is talking about password brute-forcing.

Exactly. The problems being "solved" are orthogonal to password security. They are phishing and keylogger problems. Attempting (but failing) to put a bandage on one of the symptoms of these problems (stolen passwords) is not the solution.

Since you ignored the point in my last comment, I'll reiterate: U2F's supposed value pertaining keyloggers is dubious at best, because if a machine has a keylogger, then it by definition[1] has malware on it, which A) could gain access to your private key's encrypted bytes, B) listen for your "challenge" password when you enter it, and/or C) listen for all of your other private data anyway, rendering the password bits a lot less important.

Pertaining phishing, and I'm shooting from the hip here because I haven't read the whole spec, but the protection might be dubious or worse there as well. Here's why: Considering that a public key is, at best, by definition, not protected, an attacker could gain access to your public key, then ask you to connect to them, send you a verification message for you to unencrypt to verify it's really them (I assume this is how it works, unless the spec proposes a new kind of certificate authority... another problem to deal with). Assuming that's the case, then guess where we are; back at the start, since now we've got to find a way to ensure we can trust the original interaction, which leads us to an education issue (e.g., "always ensure you're connected to the correct site by checking the URL... never click from an email a link when you're first signing up using U2F... make sure you're using HTTPS").

<comment><USER4> > I'm shooting from the hip here because I haven't read the whole spec

I think it would be good if you did. An attacker can send a challenge to the user, and even get it back after signing, but it would be useless simply because each login would have a different challenge. A Man-in-the-Middle attack is possible, however.

I think malware will have a tough time getting a private key out of what is a device that is entirely separate from your computer, is a hardware security module and therefore has no writable memory. It is not possible to steal the private key, barring some catastrophic failures.

I don't think you understand what a challenge even is, if you think "listening" to it helps at all.

<comment><USER2> > A Man-in-the-Middle attack is possible, however.

Which is exactly what I'm talking about.

> a device that is entirely separate from your computer

I'm speaking about the first authenticator type in the spec, which are embedded authenticators. As we've been talking, I didn't realize (until now) that the U2F you were talking about was a physical device (rather than just a standard). The kind of computer lay people we're trying to protect won't actually carry these things around (think back to RSA - most of my programmer peers were reluctant o deal with one of these things). My understanding is that this will be primarily used as an embedded service.

> I don't think you understand what a challenge even is, if you think > "listening" to it helps at all.

My mistake. I assumed this was similar to the password protecting my private key. If private keys (in the embedded authenticator) are not password protected, then we've just introduce yet another security flaw.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> I really like the Fido U2F concept, because it ticks all the right boxes; simple to use, reusable for multiple services without being traceable, multiple hardware vendors, open standard, soon implement in Chrome, Firefox, and Edge (although I am not sure about the status in Edge right now), and cheap.

But this solves logging in with a _browser_. I have been wondering about things like IMAP for e-mail access. To secure my mail a second factor sounds great, but right now all solutions mean I get 2FA when I log in with a browser, but as soon as I use an e-mail client I am back to username and password (application-specific or otherwise).

Ideally, Fido U2F would be an option to use with IMAP and SMTP as well, so that Thunderbird, Outlook, or Apple Mail can prompt me to touch the U2F key when I get my mail. I have not been able to find much information on this approach yet though. Is it possible? Desirable?

Any insights?

<comment><USER6> Nothing probits using UAF/U2F for other stuff outside web browsers. The problem is that the concept of "AppId" is not clearly defined in non Web Application but that should not stop people form doing it. Yubico has Open Source code that makes it relativly easy.

<comment><USER7> Yubico's pam_u2f allows u2f to be used for anything pam authenticates, which is nice for a Linux system.

<comment><USER6> Its a very cool feature, I agree, sadly making pam_u2f work for SSH is quite a hack. Their is a patch for OpenSSH but it never went upstream. I really hope this will be work soon.

</comment></comment></comment></comment><comment><USER8> I've been considering getting a Yubico for awhile now, but my concern is that it seems like every few months some new model comes out that supports new XYZ Standard. I'd really want the following before I bite:

1) The security community on the whole needs to come to a consensus on what is going to be used. If FIDO 2.0 is it, cool, but I'd like to be sure that they won't say "FIDO 2.0 in 2016, now and forever." then come back in 2017 and say "Actually FIDO sucks, we're all switching to ARGUS now."

2) The device should be future-proof, insofar as it would be able to support the agreed upon standard in Step 1 and/or any minor changes that might come along the way without having to dump the device. IF the device must be swapped for a newer version, there should be some way to migrate.

3) Compatibility with all of my devices--major browsers, major OS's, smartphone, etc.

Might be a tall order, but until it can be filled, LastPass + 2FA on my Android phone is good enough for me.

</comment><comment><USER9> I was suprised that when signing in to my Goole account on my Android device with Chrome Beta, the Google Authenticator App pops up to do U2F with my YubiKey NEO via NFC. That was really seamless!

Does anybody know, if it would be possible to use this within a WebView in a native app?

<comment><USER6> I don't get it. The Google Authenticator pops up and you do U2F with that? Google Authenticator is a app for TOTP. What am I not understanding?

<comment><USER10> Apparently Google Authenticator supports OATH-TOTP which allows the yubikey to respond to challenges [0].

The yubikey page is light on details, but confirms that you can use a yubikey with Google Authenticator for U2F [1].

[0] [http://binaryelysium.com/blog/2011/12/13/a-reluctant- relatio...](http://binaryelysium.com/blog/2011/12/13/a-reluctant-relationship- yubikey-google-authentication.html)

[1] [https://www.yubico.com/applications/fido/](https://www.yubico.com/applications/fido/)

<comment><USER6> That is strange.

I use the 'Yubico Authenticator' (like Google Authenticator but you have to connect to the Yubikey via NFC for it to reveal your login codes) if I need OATH-TOTP, this has nothing to do with U2F.

However the docs in your second link does indicate that their is some new interoperation between Google Authenticator and U2F. It seams that they use Google Authenticator as a stopgap until browser support the system directly. Pretty strange. This in turn has nothing to do with U2F.

I can not test this stuff very well because I use a Yubikey NEO that is to old for the U2F NFC and a Yubikey 4 that has no NFC. I really hope release a Yubikey 4 with NFC soon.

</comment></comment></comment></comment><comment><USER11> What happens to the x% of users who lose/break/eat the device containing their private keys? How do they recover their accounts?

<comment><USER12> In Germany every service that you can sign up for online but requires proof of who you are uses something called "PostIdent" \-- and its a service offered by the post office where you take the form in with your passport (or ID card) and they punch all the details in the computer and 'verify' it's you. In a (more) secure future, I see this being the real password recovery mechanism. The other technique used by online banks etc... is to send your password reset to you by mail. This assumes that physical mail to your registered address is more secure than online quizzes.

I think both of these options will become the standard for anything where security matters.

<comment><USER13> This is a good idea,and I too can see it happening in the future.

A few problems though: 1) PostIdent isn't free. You might not be paying for it, but someone is. Also that random forum you signed up for in Singapore? Doubt they're going to support password recovery via PostIdent.

2) What happens if you need to reset your login while you're travelling. I have had it happen before that a password is forgotten or not available and I really need to login (e.g. to retrieve the ticket) and a password reset to my email address is the most expedient method.

<comment><USER14> Using U2F doesn't mean you can't have a fallback to email.

There will likely be a "I lost me U2F token" reset on websites which allow you to register a new U2F token/password.

Personally I'm not holding my breath though, people hate extra steps and don't even use password managers when companies pay for them.

In the corporate space I feel like they compete with 2FA and it's not obvious this will come out on top in most environments.

</comment></comment></comment></comment><comment><USER15> Now if we can only get Firefox to support it: [https://bugzilla.mozilla.org/show_bug.cgi?id=1065729](https://bugzilla.mozilla.org/show_bug.cgi?id=1065729)

<comment><USER16> The real problem isn't even Firefox's lack of support. There's an addon you can install that implements it but literally every website seems to do a useragent check, so it doesn't work anyway :-(

<comment><USER6> Ah, thats why that damned thing wont work! Thanks.

</comment></comment></comment><comment><USER17> FIDO will soon have competition in the form of SQRL which is an interesting concept.

[http://sqrl.pl/](http://sqrl.pl/)

<comment><USER18> SQRL is vulnerable to phishing attacks:

[https://www.cl.cam.ac.uk/~fms27/papers/2014-JenkinsonSpeWarE...](https://www.cl.cam.ac.uk/~fms27/papers/2014-JenkinsonSpeWarETAL- phish.pdf)

<comment><USER17> This paper is nearly 2 years old from 2014. One can probably assume this has been addressed and fixed by now, although I have on proof of that.

</comment></comment></comment><comment><USER19> (I have no clue)

What is the difference between the $5 key from Yubico to their $50 key?

If I secure GMail, how does GMail on my tablet/phone work?

Are there other keys than from Yubico recommended?

<comment><USER6> The cheap keys support way less features. The are simple U2F tokens and cant do anything else.

The others support tons of other features. You can use them for classic 2FA with OTP (TOPT/HOTP/YubiCloud OTP). They support using your Yubikey as a Smartcard, you can put your 4k GPG key setup into your Yubikey. They also support the PIV interface and you can use it for lots of different operations, like code signing, certificate authority, windows authentication and more.

Some of the sticks support NFC. This means you can use Smartcard, PIV and U2F over NFC.

Sadly at the moment they have no key that supports 4k GPG Keys AND NFC. However they will update this soonish.

See: [https://www.yubico.com/products/yubikey- hardware/](https://www.yubico.com/products/yubikey-hardware/)

There are also older models that you can still buy that don't support U2F at all.

> Are there other keys than from Yubico recommended?

Their are others, just search for U2F on amazon, seems their are at least 4 companies implementing them. Nitrokey is a pretty cool company with a interesting option that are somewhat different from Yubikey.

<comment><USER3> What's a 4K GPG key? I just bought a Neo specifically to store my GPG keys, is there a problem with it?

<comment><USER7> The yubikey neo (which is what I also have) only supports 2048 bit GPG keys. The yubikey 4 supports 4096 bit keys but doesn't support NFC.

<comment><USER6> Yes. I am waiting for the a Yubikey with 4096 bit keys and NFC. They should release one in 2016.

</comment></comment></comment></comment></comment><comment><USER20> I support the movement to end passwords. For the average user, passwords are as insecure as they can get.

My (non-technical) family members keep using their birth dates, phone numbers etc as their passwords. I told them this is insecure, that they should use long random passwords, but their response is "I can't remember that". So I suggested writing it down, but they find that too much hassle. I managed to convince them to do it for some passwords, but they keep losing the paper (they just tuck away the paper somewhere and then forget where it is). Furthermore, they don't have computers, they ONLY use mobile devices, on which long passwords are awkward to type. So they revert to using phone numbers and passwords, with the attitude of "I'm not an important enough target, and if a hacker really targets me I am screwed anyway".

Some of them have difficulty grasping the concept of multiple passwords. To them, it's just "the Internet needs a password". If I explain to them that each website is a different vendor, they get confused. Just remembering which login username to use for a specific website (or whether it is a username or an emailaddress-as-a-username) is already difficult enough for them.

Mind you, we are talking about people older than 45. They have trouble using computers (even phones!) as-is, even before we get to the security part.

I ended up becoming their password store for their most important accounts. I setup random passwords for them, then when they need to do something (a few times per year) they have me login and do it for them.

The average user doesn't care enough about online security to really do something about it. They don't understand, or acknowledge, the risks. So we need to do everything we can to make security convenient.

<comment><USER21> > Mind you, we are talking about people older than 45.

I wish we could drop the casual ageism, age has nothing to do with it. You might as well tell me they're left-handed and that's why they can't "do" passwords. Difficult enough already (in social terms) without the blanket presumption we're all _non-compos mentis_ as well.

<comment><USER20> And I wish that we could stop focussing on the ageism, as if that's the most important point or whether it's even a negative point. I used ageism to reinforce the notion that we should try harder to push for convenient security. It wasn't meant in a pejorative way.

Maybe your point was that ageism isn't acceptable in any form. We'll have to disagree there. I agree that _pejorative_ ageism isn't acceptable, but doing away with ageism entirely is pretending that something real doesn't exist. Sure, not all young people are computer geniuses, and not all old people are computer illiterate -- I never said that, but that doesn't matter because focusing on that just detracts from the core point I was trying to make.

</comment></comment></comment><comment><USER22> Does this mean PayPal will support U2F? Right now they don't even support TOTP, just SMS or the proprietary Verisign keys.

<comment><USER6> No, I dont think so. PayPal is mostly interested in FIDO because of UAF. The have publicly stated that they would not move to U2F.

This was a while ago and I dont have a source. The plans could have changed.

</comment></comment><comment><USER23> Is there anyone here who is familiar with HOBA(RFC 7486) and FIDO that can comment on their differences and similarities?

</comment><comment><USER24> So instead of a KeePass with a long random password for each site, I'll have a KeePass with key pairs for each site.

The added security being that if the site gets compromised, they can't log into the site using my account. But then again the site is already compromised at that point.

<comment><USER6> If you already use random passwords you get less security benefits, but you still get a lot of them.

The additional security happens if you consider MITM attacks. Assume that you want to login to [https://mybank.com](https://mybank.com) but somebody links you to [http://mybank.com](http://mybank.com) (bad dns) or [https://mybank.co](https://mybank.co). With UAF or U2F the local authenticator will not sign anything (and thus the attacker can not login to your actual bank).

Now admittedly you browser plugin might warn you in some cases. However you might copy in the password by hand because you think its some kind of problem with the plug in.

The usability is of course improved as well. Their should be no need for a password manager at all. Go to the website, put your finger on the sensor and your done (or whatever other local authenticator you use).

</comment></comment><comment><USER25> Will this be backward compatible with the existing FIDO Yubikeys?

<comment><USER9> AFAIK yes. The spec defines the high-level API you use withing the browser.

</comment></comment><comment><USER26> I started using algorithmic passwords a year or two ago and it has been great. I have a different password for every domain, there is nothing to remember, and it is hard to crack. I just tested my password on this demo and got a four out of four score. I know others have done this but I don't know why it isn't discussed, or better yet, recommended more.

</comment><comment><USER27> When they mention device - do the mean phone? Will there be other devices that aren't so expensive?

<comment><USER6> Well the idea is that you use the fingerprint sensor on your phone to login while browsing with your phone. You can have a fingerprint sensor on your laptop. Alternativly these could also be cheap external devices that you connect over USB, NFC or Bluetooth LE (their are already standards for this).

They would really like if all devices had some kind of UAF sensor built in.

You can get U2F devices for about 15$.

<comment><USER27> Cool, bit of googling and found 'FIDO U2F Security Key' (USB) for £5 I expect those will turn up in our local supermarkets pretty soon.

Someone should give these hardware keys a better name. E.g. your "Privacy Lock" or something similar. Much easier to explain than a "FIDO U2F" ... whatever those letters all jumbled together mean.

<comment><USER6> Well I use the Yubikey, thats a fun name, but not descriptive. Basic U2F sticks will probably be between 7$ and 50$ depending on feature set.

</comment></comment></comment></comment><comment><USER28> Could someone explain how FIDO 2.0 fits in with U2F and UAF? I'm having a bit of trouble understanding how the pieces go together. Does FIDO 2.0 make the existing U2F and UAF specs obsolete? Is there any documentation explaining this (maybe I've missed it?). Thanks.

<comment><USER6> I have been following this for a while and I don't get it completly.

UAF/U2F are FIDO1.0 standards. As I understand the idea is that FIDO2.0 standards build on these basic blocks and add additional features. I think the problem of revoking a device accross all services is something they want to work on in 2.0.

Im also confused, but I think the UAF/U2F standards should not get depreciated with FIDO2.0.

If somebody knows more, Im all ears.

</comment></comment><comment><USER29> So I bought one of those FIDO USB sticks, but when I tested it on GitHub or Google, I still had to enter my account password. So, how is this better than 2FA via smartphone SMS?

Is the plan to integrate a fingerprint sensor into the FIDO stick so it can become sufficient without passwords?

</comment><comment><USER30> And PayPal wants to be in the middle every time you do a FIDO login. No thanks. #sqrl

<comment><USER9> Why do you think PayPal is involved when you do a U2F login?</comment></comment>


Ask HN: Resources for software managers? - <AUTHOR> I'm a software engineer that's moved into the management role in the last few years. For the most part, it's been a great transition and my teams are running well. I've got 3 teams with a total of 14 people in multiple offices. We're working on interesting projects, profitable and growing, and for the most part, I really enjoy my work.
However, I don't think that's necessarily due to me knowing what I'm doing. I think it's mainly due to having good people on my teams and good organizational support.
I have found all sorts of management training online. I've listened to things like the Manager Tools podcast and read various books (like Managing Humans and other more serious management books like Peopleware). I've looked for conferences or trainings that might be relevant (like Calibrate https://www.calibratesf.com/).
It seems like there's a lot of material for management in general, but not a lot for software engineering management in particular. Additionally, there's little to no peer network (at least in my area) where I can learn from what others or doing or discuss challenges I'm facing.
I have two questions:
1. Are there resources out there I'm missing?
2. Is there interest in starting a group or peer network? <comment><USER2> There is a Slack group dedicated to engineering leadership that was started by Michael Lopp, author of Managing Humans. There are 200+ channels and 2000+ participants, with interesting conversations happening all the time. You can request an invite here: [http://randsinrepose.com/welcome-to-rands-leadership- slack/](http://randsinrepose.com/welcome-to-rands-leadership-slack/).

</comment><comment><USER3> I'd be interested in at least a list of references to read, listen to, or watch.

I've moved into management over the past year or so myself, and while I have one small team I'd like to make sure I have similar online resources for management like I do for developing software. I'd like to make sure I'm a decent manager and stay a decent manager for my employees.

<comment><AUTHOR> Are there any particular areas of help you're looking for?

One think I would like to have a better grasp on is performance review. As engineers, my team's work is a mix of tangible and intangible. How do I measure that? How can I evaluate their progress and growth?</comment></comment>


Collateral Damage: Why Windows Mobile will die. - <AUTHOR> http://www.pbs.org/cringely/pulpit/2008/pulpit_20081023_005500.html

<comment><USER2> I was doing some development on the Fujitsu F1100 for Docomo. Well, actually, I was more along the lines of handling some of the translation (I still have the original translations on my computer, and they are cringe-worthy - "Vicarious execution input was registered.", for example)

My boss was one of the hardest-working people I ever met. I'll call her "A" for short, and she worked herself to tatters, trying to get the system working for their purposes. I never heard her complain, but on a quiet day I did get a chance to take up the case with a drunk subordinate of hers who pretty much told me the real deal - Microsoft Japan was simply not offering any helpful support, and the "paid support" they offered often ended with them hanging up half way through.

I don't know if there is a back channel to Microsoft or someone reading that cares, but for God's sake if there is, and you want to hear what the problem with the Japanese market is, please just email me. I'll do it for free, I just don't want "A" to be fucking working 8 AM-10 PM every day because of something that I KNOW isn't something that Microsoft wants.

</comment><comment><USER3> if you run an OS and you don't support your developers, you will die out. we've seen this cycle over and over.

i would expect that RIM will switch over to android, or very quickly start a campaign to sweeten the pot for developers to come to their side...

[http://www.blackberry.com/news/press/2008/pr-12_05_2008-02.s...](http://www.blackberry.com/news/press/2008/pr-12_05_2008-02.shtml)

<http://press.rim.com/release.jsp?id=1869>

woops, i'm a bit too late to be nastradamus on this one</comment>


China Begins Longest Bullet Train Service - <AUTHOR> http://www.nytimes.com/2012/12/27/business/global/worlds-longest-high-speed-rail-line-opens-in-china.html?_r=1& <comment><USER2> That's the equivalent of crossing half the United States.

China must have around 7000 miles of track by now. The US still has none. It's really hard to convince Americans that it's worth the money.

We probably won't realize our mistake until later in the 21st century when China converts it's 20,000 miles of track to maglevs running at 300 mph.

<comment><USER3> You have to also consider that China, is a centrally controlled authoritarian state. If the government says we want to build something here it is going to happen.

In the US you have a strong concept of individual property rights. The government can seize property through a process of eminent domain, but its difficult, takes time, and is politically unpopular.

<comment><USER4> Most of the HSR is built on stilts precisely so the Chinese government doesn't have to seize land, and most of the (agricultural) land it goes over is still being used in exactly the same way that it was before.

<comment><USER5> In the US and the West in general, that is considered an easement on the underlying land. Generally, acquiring new easements also requires eminent domain if faced with a hostile landowner.

</comment></comment></comment></comment><comment><USER6> Here it is on the BBC if anyone gets stuck behind the paywall [http://www.bbc.co.uk/news/world-asia- china-20842836](http://www.bbc.co.uk/news/world-asia-china-20842836)

<comment><USER7> And both of those are blocked for those of us behind the great firewall.

<comment><USER8> BBC is not blocked, at least here in Beijing or other big cities. Are you in the countryside of Northern China? I advice to try www.myssh.cc , very fast and very cheap (2 USD a month), it unblocks everything, but then you have to turn it off when you want to watch all the free streaming movies, TV series, and music easy available inside the great wall.

<comment><USER7> It is blocked on my home ISP (telecom?) and CMCC and Unicom in Beijing; I just checked and got the dreaded invalid argument message. Blocking isn't exactly consistent between ISPs, but when three of the big ones block something, I'm assuming this is at least a citywide block, what ISP are you using? It could just be a misconfigured selective block, it is a weird error for a true block.

Every way of jumping the wall winds up not working 2 months after you've bought a year of service. I've giving up on trying.

</comment></comment></comment></comment><comment><USER9> 1,200 miles Bullet train is just awesome! For railfans out there, I'd like to mention about Indian Railways' _Himsagar Express_ [1]. It's one of the longest running trains in India, covering 2,306 miles from southern tip to northern tip. Average speed is only 33mph :)

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

<comment><USER10> If that's the 'express', I'd hate to think of what the non-express train's travel speed & time is.

</comment></comment><comment><USER11> The ticket price of traveling in-between these two cities(Beijing and Guangzhou) by high-speed train is higher than the flight, which makes sense, considering the airplane is significantly cheaper after taking-off. The same logic with hyperloop vs. planes, one is designed for between-cities commutes, one for cross-country/continent travel. Personal story, now my mom can have her breakfast at my hometown, take the high-speed train for 2hrs to the closest international port Guangzhou and make it to the 1pm flight. It used to be 7 hours.

</comment><comment><USER12> Am I the only person who really expected the major news services covering this story to include a map?

</comment><comment><USER13> _" covering a distance in eight hours that is about equal to that from New York to Key West, Fla.,"_

So I looked it up: the flight takes 3:17 or 2:49 depending on the direction. (Delta 1343, nonstop, B737. Only flies Saturdays).

<comment><USER14> Another difference: air travel usually require 3-4 hours more for travel to and from airport, check in, baggage claim. Railroad travel requirements usually a lot simpler and railroad stations usually located near center of city.

<comment><USER8> Also the planes always have at least 30 minutes delay before take-off (here in China),and yes, airports are usually far from the Downtown. Anyway, Trains are much more comfortable, less stressing, you can take more luggage, you can sit at the restaurant, have internet with a 3G stick, play cards and make friends, many trains have a smoking area (in China). I prefer trains over planes every time.

<comment><USER10> Not sure that I'd consider 'many trains have a smoking area' as a good thing. Last year, I spent two weeks travelling around China via trains, and without a doubt the most annoying part of the experience was the rampant second hand smoke wafting throughout the entire train. While there are designated 'smoking areas' on the trains, they don't work so well when the train staff keep all the doors wide open all the time. And I tried closing them a few times, and less than a few minutes later some 'helpful' train car attendant had re-opened the door. I'm pretty sure I increased my likelihood of contracting lung cancer by a few percentage points from the two weeks that I spent on Chinese trains (not to mention the polluted air throughout the country).

</comment></comment></comment></comment><comment><USER15> The likely roll-out of self-driving cars in the United States over the same time frame[1] is one reason not to expect high-speed train lines in the United States. The United States already has the infrastructure in place (the Interstate Highway system) to make self-driving cars a quite feasible means of long-distance, point-to-point transportation. The United States cities and towns in the central part of the United States are largely where they are because they are along historic railroad lines, but the railroad lines in my region of the country are increasingly being turned into rails-to-trails dedicated biking and walking paths, which I can take on very long trips from my immediate neighborhood, and except for the parts of the United States where there are already a lot of train users (notably the Northeast Corridor), there is not likely to be much increase in consumer demand for train rides, no matter how great the government subsidies supporting them.

China has rushed ahead in high-speed rail development, at the cost of human life[2] and corruption,[3] but the United States has no need to follow this example. We will mostly be taking long-distance trips here by plane (as we already do) or by car (as we also already do, except with self-driving becoming more and more commonplace). There isn't any particular need in the United States to build new high-speed train lines.

[1] [http://www.wired.com/magazine/2012/01/ff_autonomouscars/](http://www.wired.com/magazine/2012/01/ff_autonomouscars/)

[http://online.wsj.com/news/articles/SB1000142412788732380820...](http://online.wsj.com/news/articles/SB10001424127887323808204579085271065923340)

[http://www.wired.com/autopia/2014/01/safety-self-driving- car...](http://www.wired.com/autopia/2014/01/safety-self-driving-car/)

[http://online.wsj.com/news/articles/SB1000142405270230442800...](http://online.wsj.com/news/articles/SB10001424052702304428004579354520148991170)

[2] [http://www.nytimes.com/2011/12/29/world/asia/design-flaws- ci...](http://www.nytimes.com/2011/12/29/world/asia/design-flaws-cited-in- china-train-crash.html)

[http://www.newyorker.com/reporting/2012/10/22/121022fa_fact_...](http://www.newyorker.com/reporting/2012/10/22/121022fa_fact_osnos?currentPage=all)

[3] [http://www.theguardian.com/world/2013/jul/08/liu-zhijun- sent...](http://www.theguardian.com/world/2013/jul/08/liu-zhijun-sentenced- death-corruption)

<comment><USER16> Railroads and streetcars were _hugely_ profitable in the US, until the government subsidized cars by:

\- giving everyone high-quality roads

\- setting road tolls to zero or almost nothing

\- making dense housing illegal to build with zoning laws

\- requiring businesses to provide free parking

\- requiring home builders to provide free parking

\- all the crap US does internationally to secure oil supply lines

\- not taxing pollution, noise, or other car externalities

\- enacting crazy regulations on railroads; for example, American railroads can't buy European trains, they must build their own custom-designed trains at enormous expense

and on and on and on it goes, all at taxpayer (or business owner) expense. An American on a road trip thinks cars are cheap because everyone else is forced to absorb the cost.

<comment><USER7> Your reasons are flawed even if your conclusion is right. People want non dense housing, it isn't required or even promoted by most city governments....quite the opposite in a city like Seattle that is trying to become more dense with incentives. Ditto with free parking.

Americans can't buy euro trains because our tracks share freight traffic, so passenger trains have to be built to survive collisions with heavier freight trains.

Tl;dr people want cheap driving, it isn't the evil government that forces them to drive.</comment></comment></comment>


ASK HN: Thank you messages are lost in the cloud? - <AUTHOR>

We believe that thank you messages are lost in the cloud and people are not getting enough recognition for their contributions on the internet. We plan to solve this problem by developing a "thank you button" ( similar to FB like ) which will be embedded under the blog posts and other places like forums, social media sites etc. The button will collect some meta data like the post URL,Title etc. and users will be able to submit an optional thank you note with optional tags.
People will have a thank you score and a profile page with a "thank you feed" which links back to their contributions.
How does it sound? <comment><USER2> First a question: Do you also think to categorize/tag the posts (give user the opportunity to choose the tags) (eg: the Q&A section in linkedin)?

Use case: If there are categories, you can (optionally) show user's strengths in the profile page. (eg: user has posts under "DIY stuff", "cooking", "gadgets", "coding" ....)

With that profile, I also would like to see the average thank-rate of the user, and see his other most thanked posts that might interest me.

Ranking: I'm not sure about the ranking, but you may consider to provide also "top" lists for the categories, so I can also the most appreciated posts of a domain/category of my interest

Finally: If there would be a way to see the "top" lists, there also should be a way to prevent abuses by bots/automation etc

There are many other ideas that might be linked to yours, it's worth to give it a try :)

<comment><USER3> Categorization: yes, we do think to give user the opportunity to tag its post/thank you message. We're also planning to create an 'auto-tagging' mechanism based on the type of page that our 'thank-you' button is placed.

Ranking: Yes, we will provide "top" lists for the categories. But the ranking algorithm may include other variables than the "# of thanks" to make it more accurate.

</comment></comment><comment><USER4> It sounds interesting, but how would a Thank You be different from or better than a re-tweet and similar actions?

<comment><AUTHOR> thank you for the feedback. Fb-Like and Re-tweet promotes the post itself rather than the author. ( Of course it links back to author profile or blog post but not directly ). In our system "thank you" messages will be linked to author which will accumulate a score and will help indicate the influence of the author. In other words the user will be in the center vs the content.

</comment></comment><comment><USER5> sounds pretty good

i like that it's based around 'karma' in some sense

not sure where it goes or the best way to get adoption, but generally feel that internet denizens are pretty 'thankful' people (at least here in NYC) and it could be worthwhile regardless of biz opps. my $.02

<comment><AUTHOR> Thank you Reece,

Adoption is the key. Lets see if NYC people are indeed 'thankful' :)</comment></comment>