Beekeeping at airports - <AUTHOR> http://www.nytimes.com/2015/02/24/science/now-cleared-for-landing-at-airports-bees.html?hp&action=click&pgtype=Homepage&module=photo-spot-region&region=top-news&WT.nav=top-news&_r=0

<comment><USER2> This is interesting, not only because it gives more opportunity to do urban- beekeeping but also because it creates more public awareness.

As I'm getting ready to have my first hives, I can say that beekeeping is not as easy as it used to be, even as recent as 10-15 years ago. There are many things that contribute to the decline of honey bee population and other pollinators' (hundreds of other bee species, butterflies, etc.): the top one is probably the "Systemics" (e.g. Neonicotinoids). "Monocultures", "climate change" and certain industrial practices probably follow closely.

</comment><comment><USER3> isnt there an increase in bird density because of bees ? I thought that would classify as aircraft endangerment

</comment><comment><USER4> It's a bit old, but "The Beekeepers Lament" is a wonderful book about the realities of honey bees in America.

[http://www.amazon.com/Beekeepers-Lament-Billion-Honey- Americ...](http://www.amazon.com/Beekeepers-Lament-Billion-Honey-America- ebook/dp/B004FEF6HO/)

</comment><comment><USER5> I'd wonder what the effect of bees concentrating the byproducts of combustion in their honey would be.

<comment><USER6> What do you think about what the article says about that?

<comment><USER5> I read the whole thing and didn't notice that bit.</comment></comment></comment>


Ask HN: What are the most effective ways to learn something quickly? - <AUTHOR> Like many of you, I like to learn new things and get better at the things I already know. Do any of you use particular processes/tricks to learn something more quickly? How about to learn something more deeply? Thanks! <comment><USER2> The Feynman Technique. This is basically the gist of it [https://mattyford.com/blog/2014/1/23/the-feynman- technique-m...](https://mattyford.com/blog/2014/1/23/the-feynman-technique- model)

For example a text I worked through with exercises to determine the cache performance of code snippets, ie: the total number of reads, the miss rate, ect. When I first did that chapter I'd just work through the exercises and move on. Then I'd forget everything a month later. The second time I explained the answer to myself like I was giving a lecture, after working through each exercise for example explaining spatial/temporal locality, stride-1 reference patterns that will be prefetched by the cpu, ect. That was about 2 years ago and I still remember that chapter. So slower at first, but you remember all the concepts which means you don't have to go back and re-do the material again which for me is 'faster learning'.

</comment><comment><USER3> Yup... make it from scratch, or use it in a non trivial project, or try and do some original research with it.

All three above will get you asking questions and seeing the thing from angles you wouldn't have thought about otherwise. It'll also connect your knowledge to existing knowledge which is ultimately what will make it stick around.

I spend a LOT of time learning new things . I'm perpetually perplexed and live in a constant state of confusion about a large part of my current thoughts, and the way described above is how I perpetually integrate the new stuff effectively.

</comment><comment><USER4> It depends on the subject or skill. My suggestion is to look at meta-learning that is the subject of Tim Ferriss 4-hour Chef..It's the first few chapters and the rest of the book is an application of it. I am not advocating, just a suggestion.</comment>


Ask HN: What is a good software engineer? - <AUTHOR>

What is a good software engineer? I have been debating this with many of my friends and everyone seems to have a different point of view. What do you think? <comment><USER2> A good software engineer is a person that's good at thinking logically, can communicate what they're thinking and is capable of doing the research to implement an idea.

Every week, theres articles here about writing in a new framework, language, whatever. They're great to play with and sometimes fun to learn, but a good engineer doesn't know 50 languages / frameworks. I don't care if you know 2, so long as if I explained a set of requirements for a feature or program, that you can see the end goal and do it, or spend some time, learn a language / framework that can do it, and then do it.

Sometimes, that ability to execute comes from playing with those new frameworks / languages, and for sure, every programmer / engineer has they're preferences, agenda, etc... but a good engineer should roughly be aware that now a'days, there is no "i can't", only "how long is it gonna take to figure it out and what will it cost".

a great engineer is a pro at using search engines and asking the right question. The answer is out there, you just need to break the bigger problem down into smaller problems, formulate your question properly, and find the answer in a timely manor.

(2 cents)</comment>


CRTC reforms to include $25 basic cable or satellite package - <AUTHOR> http://www.cbc.ca/news/politics/crtc-reforms-to-include-25-basic-cable-or-satellite-package-1.3001370

<comment><USER2> The cable industry has competition in the form of YouTube, Hulu, NetFlix, etc., a ton of other online video companies, over-the-air broadcasts (yes, those still exist) and just plain not watching TV.

Why exactly is government price fixing necessary in this instance? Shouldn't the free market be able to correct any price imbalances on its own?</comment>


Hacker Angel Roy Rodenstein (founder of Going.com, sold to AOL) on Mixergy - <AUTHOR> http://mixergy.com/how-a-first-time-entrepreneur-launched-going-com-and-sold-it-to-aol-with-roy-rodenstein/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Mixergy-blog+(Mixergy+-+Where+Ambitious+Upstarts+Mix)

<comment><USER2> No comments, hate mail, questions? :)

<comment><AUTHOR> You said you partnered with people with email lists and offered them a booth at your event for them sending mail to their list. Do you think this method could be a general way for other startups to get traction?

<comment><USER2> I do, and it's already used all the time (e.g. DailyCandy charges thousands of dollars for a Dedicated Email for a given city's email list). What we did was sort of roll our own campaign, trading the positive association with our unique event as well as a booth, signage etc. there for cash-free marketing for us.</comment></comment></comment>


How to Turn Off Smart TV Snooping Features - <AUTHOR> https://www.consumerreports.org/privacy/how-to-turn-off-smart-tv-snooping-features/ <comment><AUTHOR> Good info, but it does'nt address users that use a different device to watch things (like a raspberry pi, nvidia shield, etc).</comment>


Ask HN: Do you have insurance for your SaaS? - <AUTHOR> I just received a contract from a client, and they are requesting we have insurance for:<p>(a) Commercial General Liability policy; Excess/Umbrella Liability policy to include coverage for Contractual Liability, Personal/Advertising Injury and Products and Completed Operations with limits of $3,000,000 per occurrence and $3,000,000 in the aggregate.<p>(b) Professional Liability Insurance insuring but not limited to Intellectual Property infringements, Contractual Liability with a limit of $1,000,000 per occurrence and in the aggregate.<p>(c) Cyber Insurance to include but not limited to Network Security and Data Privacy with a limit of $1,000,000 per occurrence and in the aggregate.<p>(d) Worker's Compensation insurance with statutory limits to include Employer's Liability with a limit of not less than $1,000,000.<p>We run an online SaaS business, just a small team of 2 people -- we have many clients and this is the first time we've ever received this. Is all of this necessary or is it common for lawyers to include this in contracts? Does anyone have this insurance? <comment><USER2> Call Geico. They'll refer you to HISCOX (transfer your call) and their prices are reasonable. You could just call HISCOX directly but I suspect they give Geico customers a lower quote (you could experiment). I have general liability and identity theft insurance at about $30/month. They quoted me for professional liability and it wasn't much more but I opted out because it covers you giving negligent advice and I don't give clients advice (just code). If you have no employees (legal definition of employee), I question whether you need worker's compensation.

IANAL or an insurance agent and this is not advice, just my personal experience.

</comment><comment><USER3> 1\. The GL is a little high... If you're a sole proprietor and you own a home you can get the GL rider for like $200-300 a year.

2\. PL isn't expensive typically they rate it by your last 12 months of revenue. We do $10M+ last year and our PL premium is $1900 a year.

3\. Never heard of this... Call you're ins company.

4\. They might be able to waive the WC if you are both owners of the company and you don't have any employees.

<comment><AUTHOR> Where would we go to get these types of insurance? We are a LLC (2 members, no employees).

<comment><USER3> Well... most large ins cos have these lines. Allstate, Farmers, State Farm. If you have a house, call your agent they will get you a deal that's a small business rider on your homeowners ins. If you don't have a house... call the agent you got your car insurance from.

Or google "Small business general liability insurance <your city>" There are probably a boatload of brokers.

If you're in SoCal or PHX... I'll give you a couple of names of good biz brokers

if you are employees of your own company and you pay yourself a paycheck (not a shareholder distribution)... you may want to consider a PEO so you don't have to get Worker's comp... that can be a pain in the ass...

<comment><AUTHOR> What about something like hiscox?

<comment><USER3> yea... whatever... I'm thinking you might get a discount if go with your agent.

</comment></comment></comment></comment></comment><comment><USER4> You need A for sure. Most landlords won't allow you to rent an office without it. The rest I think you need to decide if you want their business and if the answer is yes maybe you should have a more expensive enterprise plan like loumf suggested.

</comment><comment><USER5> Sounds like they need your Enterprise plan

<comment><USER6> Businesses should have this insurance anyway. If I were them, I'd acquire the insurance and act like we had it all along.</comment></comment>


There's an Easter egg in my job posting - <AUTHOR> https://medium.com/what-i-learned-building/676182619796

<comment><USER2> Closest thing I can come up with is the reference to Pokemon possibly correlating to a stamina level, like how Pokemon have a stamina attribute that goes up as they level up?

Edit: Got it, "see the 93' Bulls reference."

<comment><AUTHOR> You're hired!

<comment><USER2> If working remotely is an option, I'd happily apply.

</comment></comment></comment><comment><USER3> I don't watch much sports :(

Looks like Jordan was MVP in 95-96

the main character of the movie Thomas Ian Nicholas who played Henry Rowengartner - neither of which show up in the 95-96 season roster

The rookie of the year for the NBA in general was Damon Stoudamire from the Toronto Raptors; I can't find who the Bulls thought their "rookie of the year" was specifically though...

(yes, i saw it was a "sql query" but i thought there was more to it; like try to find out who the actual rookie of the year was for the bulls)

or... am i over analyzing this?

<comment><AUTHOR> Haha! That was totally over-analyzing but I love it!

The Easter Egg was actually really simple. At the bullet point for "impeccable attention to detail" I reference the '93 Bulls. But earlier in the job posting it's the '96 Bulls that are really referenced :)

<comment><USER4> How is that an Easter Egg?</comment></comment></comment>


Why Bitcoin is Volatile aka I Told You So - <AUTHOR> http://evolvingtrends.wordpress.com/2013/12/01/why-bitcoin-is-volatile/

<comment><USER3> The article makes decent points but these things are known to most people who understand anything about money, whether that money is Bitcoin or USD.

I have to say though that the opening line of the article is absolutely _terrible_ :

        Bitcoin is based on the idea that money gets its intrinsic value from its scarcity..

That is a terrible thing to say. Bitcoin is not based on that. Bitcoin is currently overvalued due to speculation. It's current value far surpasses it's utility (because we don't need $15 Billion transactions in BTC right now..). This is due to speculation, and yes, that is helped along due to it's scarcity.

But even with greater speculation, if the value starts going up, it becomes much harder to swing the market. Studying history is important. Bitcoin went from $30 to $2, then from $266 to $70. $1200 to $600 isn't even close. (there is of course the chance that it will go lower, much lower, but we'll see if/when it does..)

Volatility decreases with adoption. Adoption may decrease with volatility but so far, the crazy volatility has favored adoption and awareness. Volatility will truly become a problem if mainstream adoption takes place and it continues. However, it's harder to swing a bigger market, mainstream adoption is what will protect bitcoin from volatility (speculative, or otherwse). It's much easier for a person or a group of people to swing a $1MM market, vs. a $15 Billion, vs. a $1 Trillion market.

So far, every huge volatility event has helped bitcoin become less volatile and gain value/adoption/mindshare.

I can see how someone who just found out about bitcoin is going to focus on it's volatility. This has been true of every single media agency on the planet in the last few weeks. However, anyone who has been in this long enough or has studied it will recognize that volatility is actually decreasing as the market expands (an expected result). Somehow the other HN post about people not liking creativity/alternate solutions seems to come to mind [1]. (not an attack on the author but on the general sentiment, "BITCOIN WILL FAIL EVEN THOUGH I HAVEN'T STUDIED IT AND KNOW NOTHING ABOUT IT!!!! IT'S PONZI, OR ILLEGAL, OR DRUGS, OR SOMETHING!")

TLDR; Bitcoin is way less volatile than it used to be. Bigger numbers ($1000 vs $10) don't mean more volatility.

[1] - [http://www.slate.com/articles/health_and_science/science/201...](http://www.slate.com/articles/health_and_science/science/2013/12/creativity_is_rejected_teachers_and_bosses_don_t_value_out_of_the_box_thinking.html)

<comment><USER4> Bitcoin is maturing from a small stock to a growth stock then a value stock. But in comparison with other currencies, simply retaining its value is better than some fiat currency holdings and it is a wonderful hedge against it as long as it can hold its value. It could even go down but at a slower rate than nation currencies and still be useful as a hedge.

Some people are treating it as a stock currently expecting huge upsides, adoption will bring that but eventually it will calm down and if it just retains value over time it will beat out most fiat currencies.

There is obvious value to fiat currencies and inflation for fueling investment (I need to grow my shrinking dollars) but it is always nice to hedge in case.

</comment></comment><comment><USER5> Damn, can we get a break in this infinite loop of blog posts where the author confidently sets us straight about the inevitable fate of bitcoin? Bitcoin market activity is a Rorschach test for your own personal biases, be you an economist or a cryptographer, you're just going to rationalize the current state of the market with your own future expectations.

The rumor of a butteryfly fart can send shockwaves through the bitcoin markets, everybody knows this, we're not getting any new information by exclaiming how volatile the market is every time the price shifts as if it's somehow surprising.

</comment><comment><USER6> Here's something I've never seen addressed by bitcoin apologists. Tell me why I should "adopt" BTC if I'm not:

(a) speculating (b) interesting in buying drugs or circumventing regulations around international money transfers.

I see no utility in paying for software or coffee in BTC. Getting hold of bitcoin is not a straightforward process, and even once you acquire them, your coins are fluctuating in value all the time. What am I gaining in return for all this trouble? It simply doesn't make any sense to me.

<comment><USER3> You're doing well with your credit card because your bank allows you to do so.

Just a few days ago my debit card was blocked because I was traveling internationally and the bank suspected that it was stolen. That's great, they're trying to protect me. But then, the only way to get it unblocked was to visit the bank in person.. but I was 10,000 miles away! I tried to reason with them over the phone but they wouldn't listen. So here I was, far away from home, without access to my money because my bank was trying to protect me but had a retarded system in place for that. Eventually, I spent a few hours on the phone, got someone to pull some local stunts in my city (went to speak to the manager in person, etc.) and then got my card unblocked. You see the problem ? I don't own my money. I can't pay for my coffee with my debit card _unless my bank lets me_. I couldn't pay for anything, I had to apologize to my hotel and ask them to wait until this got sorted out.

I run a website that is sustained by online advertising. I usually have two options to get paid by advertisers. Paypal or Bank Wire. Paypal charges huge fees, so I opt for wire. Bank Wires take 5 days to clear (2 if I'm lucky..) and due to multiple different advertisers I end up paying over $200 in wire fees each month. I think of that as the 'cost of doing business' but really, it shouldn't be.

I used to live in Dubai two years ago and send money back home. Every time I transferred money, I would get hit with huge fees. This is a reality for immigrant workers all over the world. Western Union caters to this audience right now.

Yes, banks are good at what they do - to a certain extent. We all know them and use them. But that doesn't mean that I want to be at their mercy all the time. Things are always fine, until they are not. That's what happens to me with banks all the time.

Volatility isn't a feature of bitcoin, it's a market reality - for now. You don't have to pay for your coffee using bitcoin right now, you are right, bitcoin isn't ready for that yet.

But when it is, you'll be able to pay for your coffee, and no single 3rd party in the world (bank, western union, visa, mastercard, federal reserve, etc.) will have a say in it. Not a single entity in the world will stand between you and that delicious brew.

<comment><USER7> >Not a single entity in the world will stand between you and that delicious brew.

Except the exchange rate. Your 1/300th of a coin might buy you coffee if it is a good day, but the next day it might cost 1/100th of a coin.

I just bought in because I'm hoping that what I can buy with 1/100th of a coin will only cost 1/300th by Christmas.

Bitcoin is having a bad day and I hope to capitalize on it. Having bought at $650 I will be sad if it turns out that the new price is $500, and happy if BAML was right and we are off to $1300.

But All of your arguments fall down in that you are either using an exchange to get from currency to BTC. Or you are keeping coins in a wallet and they could swing 50% in value in a day.

<comment><USER3> No, my arguments do not fall down. You are making the terribly flawed assumption that bitcoin will always be this volatile. Bitcoin is less volatile than it used to be, and with greater adoption will continue to decrease in volatility.

The volatility in bitcoin today is nothing compared to 2011. Is it still bad ? Yes. Will it continue being bad ? Probably not. The long term trend supports the assumption that volatility will decrease with greater adoption.

Furthermore volatility has little effect on the 'money transmission' element of bitcoin as long as transfers and conversions take place immediately. It's still a viable way to legally move USD from the USA to Singapore with very low fees.

Another example, I'd like to add is that I had a large part of my savings in Indian Rupees. They depreciated by 30% over the past 2 years. That's definitely pretty bad but it didn't prevent me from buying coffee. Euros have also swung around by 15-20% over the past 2-3 years. The Brazilian Real lost 25% of it's value last year. Does that make them as bad as bitcoin ?

Your motivation for getting into bitcoin is your personal choice and I certainly hope that you profit from it. However, don't forget that bitcoin is an emerging technology going through fairly rapid adoption, as such, volatility, crashing exchanges, bubbles, bubble pops, etc. will be a part of it. And of course, I have to convert money from USD to BTC. Or from Marks to Euros. Or from escudos to Euros. That's just how it works.

<comment><USER8> > Euros have also swung around by 15-20% over the past 2-3 years.

In relation to the dollar. Which is totally irrelevant for day to day transactions inside the Euro zone. I still pay the same price for a coffee I did 2-3 years ago.

But at the moment Bitcoin volatility is still huge: It's currently not reasonable to offer coffee for a fixed number of Bitcoins, that, say, stay stable over a year.

Your analogy between debit cards and Bitcoins seems a bit flawed too: For the purposes of international transfers it might be apt, but for small day to day business like buying coffee, it may be better to compare it to cash. And then there's no bank stopping you from transacting in cash.

<comment><USER3> You pay the same price for coffee but you will certainly pay more for coffee beans, the market will only absorb the difference for a while.

I wasn't drawing an analogy between bitcoins and debit cards. I was taking about how a bank lets me access my money vs me having direct access to it. I cannot get cash in a foreign country without my bank cooperating unless I carry a world recognized currency (USD, Euro) in cash and try to exchange it somewhere.

The problem is that you read a comparison as an analogy. It's a comparison of our current dependency on the banking system vs bitcoins relative independence from the same.

</comment></comment></comment></comment></comment></comment><comment><USER9> I correctly called the peak at 1200 (although I did not think it would peak there twice), and I'm calling the bottom at 300. This article has a very poor opening:

 _Bitcoin is based on the idea that money gets its intrinsic value from its scarcity, which is a misconception since money gets its intrinsic value from the volume of transactions involving goods and services that use it_

No, bitcoin is based on the idea that money gets its intrinsic value from its trust model. That's why it has advanced crypto-mathematics to establish verifability, and so forth. Now. Bitcoin _promoters_ think that the scarcity can drive the value up to the point where it becomes widely adopted. Criticism of this model to spur adoption may be totally fair.

<comment><USER10> Are you predicting it will bottom at 300 before launching into another growth phase, or that it will remain closer to 300 thereafter?

I think the latter is naive. I think bitcoin is the first currency whose perpetual deflation is ensured by the contract that defines it.

<comment><USER9> it is entirely possible that the bitcoin proprietors will change the protocol to no longer be deflationary; although that would cause some large-scale flight. I am not convinced of the keynsian model that inflation is exactly supply divided by velocity; nor of the 'crude austrian' model that inflation is function of supply only... If the demand goes to zero, so will the value.

While I think that bitcoin will recover, perpetual deflation is not guaranteed. Indeed, in general deflation of bitcoin depends on an increase in demand that outstrips the increase in supply.

</comment></comment></comment><comment><USER11> If you and your whole family live in the U.S. and you have a couple credit cards, a debit card, and a bank account, Bitcoin is going to seem pretty useless. For you, the US dollar does just fine.

But the rest of the world isn't like the U.S. I visited Latvia recently, and my bank refused to let me withdraw money. Florida is full of Cuban Americans who want to send money to Cuba. Many people are imprisoned. The world is _full_ of borders that make moving money difficult.

Bitcoin's market cap is moving towards where it needs to be to float all of those transactions. Even if no one uses it to store value, and no one uses it to buy groceries, it is still immensely valuable just as a means to move value from one location to another. Even if no one holds Bitcoin for more than two weeks, it will still have a market cap far north of a billion dollars.

<comment><USER12> I'm cautious about your Latvia story - its sounds to me like the bike was worried about fraud. Thats pretty common - about half the times I go to the US, I have to ring up the bank and get the card unblocked.

That being said, there are countries attempting to control the flow of money. Argentina wants to enforce its price for the dollar. Cyprus wants to prevent everyone taking their money and running. and so on. However, most of these countries see attempts to circumvent their controls as illegal. I feel its unwise to get my hopes up about bitcoin for this sort of transaction for that reason.

</comment></comment><comment><USER13> It's far too early for I-told-you-sos.

<comment><USER14> Every bitcoin badmouther is using the price crash to tell everyone how right they were. Not really unexpected.

Speculative price swings are largely irrelevant, and bitcoin has value as a service regardless of the current price.

</comment></comment><comment><USER15> Bitcoin only gets its value from scarcity if you look at it from the context of a traditional currency.

It's volatile because there is a lot of speculation going on; there is a lot of speculation going on because nobody has figured out how to value it against a traditional currency yet (in other words: speculation transactions outweigh productive transactions e.g. the proverbial alpaca sock).

While there is scarcity - and said scarcity is driving speculation - <USER2> intrinsic value of btc derives from the cryptographic trust in the validation of the Bitcoin blockchain, and the promise that a btc will always be accepted as a bounty on the validation of a btc transaction.

It's fundamentally different than the promise inherent in traditional currency: that a unit of currency must be accepted for the repayment of debt. Instead, a unit of currency must be accepted as a bounty on the cryptographic assurance that a transaction is not fraudulent.

What defines trust in a system, and when does that come in to play in the valuation a system?

With a satoshi sent to an address that cannot spend its balance along with the cryptographic signature of a document, you can execute a proof of existence. Distributed, mathematically validated notary.

It can also be used as a decentralized, trust-based escrow system.

The value inherent in a single btc is more abstract than a brick of gold, and has more to do with Bitcoin itself.

</comment><comment><USER4> Bitcoin is a hedge on currencies, where you can turn it into other currencies there is value in it. Currencies always move in different directions and there will always be demand there. The generation is also created by the bitcoin network so there will always be activity for some time.

When you can't trade it for the USD then it is over. In fact maybe it will evolve nation currencies. I love what it is shaking up.

But just like currencies of countries there will be currencies now not bound to countries, that live well beyond the country maybe. It actually prevents gaming a country's currency too much (no artificially low currencies).

It is like gold in that you can't take a coin of gold down to the store but it has more chance to be a mainstream currency because it is digital. All money is digital, it can fit in much nicer than gold as well as having gold like properties. Bitcoin is actually better placed for hedging currencies and everyday usage than gold.

</comment><comment><USER16> Marc, are you aware that Satoshi referenced you by name? I always found that unexpected and hilarious.

[http://diyhpl.us/~bryan/irc/bitcoin- satoshi/email-p2presearc...](http://diyhpl.us/~bryan/irc/bitcoin- satoshi/email-p2presearch-2009-02-13-023120.txt)

<comment><AUTHOR> Thanks for letting me know Bryan. How have you been? Still hatin' on me after all these years? :) I always found you fascinating.

So is the mailing list firstname.lastname@example.com?

</comment></comment><comment><USER17> Well, you sure showed me. I'll think twice before contradicting you ever again.

</comment><comment><USER18> Bitcoin is more like gold than the dollar, except even less useful.

</comment><comment><USER19> First they ignore you, then they laugh at you, then they fight you, then you win..-Mahatma Gandhi (China fights bitcoin..)</comment>


Dollar Shave Club - <AUTHOR> https://www.dollarshaveclub.com/

<comment><USER2> How much is the Shipping + Handling on the $1 per month level? It seems to be included for 6 or 9 dollars a month.

</comment><comment><USER3> A straight razor costs ~$20-$100 for 50 years of shaving, monthly cost: way less than a dollar.

<comment><AUTHOR> Walking everywhere also saves you money on gas, but do you really want to do that?

I don't think a straight razor is a fair comparison to their product.

</comment></comment><comment><USER4> For real ?</comment>


Looking Glass: an extremely low latency KVM FrameRelay implementation - <AUTHOR> https://looking-glass.hostfission.com <comment><USER2> I actually set this up just the other day for my Windows 10 VM. To be clear, the idea here is to run a Windows VM (with near native performance by passing it a hardward graphicical device), then take the output directly from the VM graphics card's memory and feed that to a Linux host where it can display that output natively.

The primary demographic seems to be gamers that want to ditch Windows for Linux, but don't want compromise on performance. I can attest to the performance angle, but it has a number of rough edges.

This project seeks to solve input and output management. For example, I've been used a second monitor and a hardware USB switch, which is attached to my keyboard and mouse, for interacting with my VM. Looking glass actually performs excellently for input capturing for me, but I'm finding the video output just a touch too slow and find myself just switching my monitor input instead. I'm thinking that might have more to do with my using Intel integrated graphics on my host though, but I'm not sure. I'm pretty excited to see where this goes nonetheless.

<comment> ah- From what I've seen so far it copies every frame via the CPU and that gets quite slow if you want to do it 60 times a second at high resolution.

Optimus etc. use DMA, so you can copy directly between the two devices.

Hopefully looking glass will support that as well in the future. Last time I looked at least nvidias DMA support was officially restricted to quadro only, so not sure it'll actually happen.

<comment><USER3> Microsoft has support for cross-adapter rendering for (SurfaceBook dGPU is hotpluggable) - where textures are resident in the dGPU memory (when in use) but the render target surface lies in iGPU's memory which directly scans out that surface every vsync.

Technically, it is slightly more complex because of how vsync works but zero copy cross adapter rendering is possible.

I was an intern at the display kernel team this past summer and worked on a similar project for VR displays (which adds further complexity due to late stage reprojection and sensitivity to pipeline latency).

</comment></comment></comment><comment><USER4> Fellow network engineers: this isn't referring to the Frame Relay you're thinking of [0].

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

<comment><USER5> Nor the Looking Glass for that matter [0].

[0]: [https://en.m.wikipedia.org/wiki/Looking_Glass_server](https://en.m.wikipedia.org/wiki/Looking_Glass_server)

<comment><USER6> Nor Sun's old 3D desktop environment [https://en.wikipedia.org/wiki/Project_Looking_Glass](https://en.wikipedia.org/wiki/Project_Looking_Glass)

</comment></comment></comment><comment><USER7> I don't really understand what is it. Could this software finally allow me to play my Windows games on Linux host with near-perfect performance? Or is it something else?

<comment> ah- If you have two graphics cards and a modern processor you can pass one of them through to a VM that can directly use it with native drivers, so you get native GPU performance in that VM. However that means the picture only goes to the physical outputs of that second GPU.

What Looking Glass does is take the output picture of that GPU and copy it into a window on your host machine.

<comment><USER8> Is this much different than what a Thunderbolt-attached eGPU does when used to accelerate host graphics on a notebook? (I mean, besides the bandwidth available.)

<comment><USER9> Yeah, it's conceptually similar to Optimus or eGPUs but with two OSes instead of one.

</comment></comment></comment></comment><comment><USER10> Relevant video: [https://www.youtube.com/watch?v=okMGtwfiXMo](https://www.youtube.com/watch?v=okMGtwfiXMo)

</comment><comment><USER11> This is something that I was looking for a few years ago, I asked on the internet if it exists and was told it doesn't and wouldn't work fast enough. I didn't really believe those who told me it wouldn't work, but I didn't have the skills to write something like this either. Glad someone else did though. Thanks, this is amazing work!

</comment><comment><USER12> Congrats to Wendell at Level1Techs!</comment>


When starting a company, don't count on anyone but yourself. - <AUTHOR> http://egoist.blogspot.com/2010/08/when-starting-your-startup-dont-count.html

<comment><USER2> Take a step back and look the inconsistency in this statement and the original post.

A startup founder has to rely on people other than themselves. They rely on at least their customers. Many, including Chrometa, rely on partners and employees as well.

The difference is that you have successfully sold the promise of the company to your current customers and your partners and employees. With the other partners or aides, you have not made a compelling offer.

There are two major reasons why this could happen.

1\. Sell side. Your pitch was not sufficiently compelling, or you were not ready to deliver on your promise.

2\. Buy side. You're not selling it to the right person at the right time.

The overarching reason is that you were unable to establish an exchange of value. That happens. It will get easier once you build your company up. Eventually your company becomes 'magnetic.' It will attract interest rather than you having to persuade others.

But yes, _you_ will have to hustle.

<comment><USER3> Hey Sunir, those are all excellent points you make. Let me see if I can clarify what I was initially going for on my initial rant.

The mistake I made in our early days, and one that I still see amongst early- stage entrepreneurs (of course always easy to see in hindsight!) is that they put too much weight in how much somebody else can help their venture, particularly in those embryonic stages.

Let me pick on myself here, which is pretty easy to do. I had a lot of misconceptions about what made startups successful. I thought that building a great advisory board could take you to the promised land. I thought finding the right angel/VC could do it.

Which goes back to #1 that you point out above - the sell side - in the very early stages of Chrometa, my sell side value prop was not strong enough. You hit the nail on the head.

Hence, I wasted a lot of time trying to "sell" potential partners and such - when I should have been focused internally. These people were kind enough to take a meeting, and kind enough to act interested - that wasn't their fault, it was mine.

I got a little fired up here - partners are of course important. What I learned early on perhaps is don't get your hopes up on partnering before you've got your own house in order.

</comment></comment><comment><USER4> Your request to URL "[http://egoist.blogspot.com/2010/08/when-starting-your- startu...](http://egoist.blogspot.com/2010/08/when-starting-your-startup-dont- count.html/) has been blocked by Webwasher Proactive Scanning. The program could potentially perform operations, which is not allowed by your administrator at this time.

Malware Name: McAfeeGW: Heuristic.BehavesLike.JS.CodeUnfolding.A

Don't count on anyone's website either! :-)</comment>


The Ways of Javascript Inheritance - <AUTHOR>

Hey Hacker News!  Lets talk about prototypal inheritance in JS!
What's the best way of doing it from a code reusability standpoint?
What's the best way of doing it from a time to create instance standpoint?
What's the best way of doing it from memory footprint standpoint?
Of the ways I've seen and tried, John's method seems the easiest to use: http://ejohn.org/blog/simple-javascript-inheritance/
But I hate that it has to loop through every property every time you extend a prototype.
Most inheritance patterns I've seen need to have the original prototype cloned or instantiated in order extend a new prototype safely.  Is there a way to do it that allows all instances at all levels of the inheritance chain to still share the same common methods in memory where they aren't overridden?
Thanks! <comment><USER2> To cut the story short, there is basically a single way to do "proper" inheritance in javascript, which is Crockford's prototypal inheritance [1]. There are a dozen variations on it, here is one:

        function inherits (child, parent) {
            extend(child, parent)
            function Ctor () { this.constructor = child }
            Ctor.prototype = parent.prototype
            child.prototype = new Ctor()
            child.__super__ = parent.prototype
            return child
        }

        function Animal ...
        Animal.prototype.x = ...

        function Cat ...

        inherits(Cat, Animal)

See Backbone's implementation [2] for another example. This eventually morphed into the standard `Object.create` method [3], supported in IE9+.

[1] <http://javascript.crockford.com/prototypal.html>

[2] <http://backbonejs.org/docs/backbone.html#section-186>

[3] [https://developer.mozilla.org/en- US/docs/JavaScript/Referenc...](https://developer.mozilla.org/en- US/docs/JavaScript/Reference/Global_Objects/Object/create)

</comment><comment><USER3> I like something like jQuery.extend(true, {}, src)</comment>


Ask HN: What is your job title? - <AUTHOR>

Also are you with or against funky titles such as Ninja, Guru, etc..? <comment><USER2> There are titles they give you and titles you give yoruself. I personally am a "super admin" and a "human proofing tool" whereas in common acceptance, I am a "lawyer". Ps. totally up for "Senior Ninja"

</comment><comment><USER3> Software Engineer.

I find funky titles superflous and unnecessary. It would be ridiculous if other professions adopted this too. For example, imagine a limo driver calling himself 'captain of a chartered car'. Plain titles give you a general idea of what the person does. In general, Sofware Developer II/Senior Developer has greater responsibility than Softare Developer I etc. I think people will find it difficult to differentiate between a hacker and software ninja. Really, what is the difference?

<comment><USER4> If I ever become a dishwasher I'm going to negotiate for the title of "Culinary Technology Maintenance Technician".

</comment></comment><comment><USER5> Graphic Designer | Web Producer

Don't really care what title I'm given, unless it has "director" or "scholar" attached meaningfully.

</comment><comment><USER6> I'm at a small (marketing) firm. When we have multiple devs, I'm the "Senior Developer." But whenever I'm the only dev, the "Senior" prefix gets stripped.

I think titles like "Ninja" or "Guru" are just as overrated as "Web 2.0" or "Cloud."

</comment><comment><USER7> At Open Software Integrators: Senior Consultant

At Fogbeam Labs: Founder / President / Janitor

 _Also are you with or against funky titles such as Ninja, Guru, etc..?_

I prefer to refer to myself as a "Software Shaman".

</comment><comment><USER8> Day Job: Consultant II

My Startup: Supreme Overlord

I am against those gimmicky terms. They mean nothing and come and go. The company I work for is all about calling developers "rockstars".

</comment><comment><USER9> Financial Analyst.

I personally think the funky job titles are silly and unnecessary. Regular job titles are broad and nebulous enough.

</comment><comment><USER10> MicroComputer Systems Analyst I/II

For "funky" titles. The titles here are pretty ambiguous as you can see.

</comment><comment><USER11> Digital Marketing Manager.

Funky titles are ok for smaller startups but not really great for individual career progression

</comment><comment><USER12> Straight up 'Software Engineer'.

</comment><comment><USER13> Implementation Consultant

30/70 Consulting and getting requirements/Coding to get them done

</comment><comment><USER4> Maintenance Developer (because they think "Junior" has a negative connotation).

</comment><comment><USER14> Mobile Software Engineer. Or as I like to call myself App Conjurer

</comment><comment><USER15> Web Application Developer

I strongly dislike funky titles.

</comment><comment><USER16> Head of Creative Technology

</comment><comment><USER17> Business Development Lead

<comment><USER17> funky titles are ok as long as they're descriptive enough

</comment></comment><comment><USER18> Systems Specialist

</comment><comment><USER19> sys admin</comment>


Darpa working on major cyber security break through - <AUTHOR> http://homelandsecuritynewswire.com/darpa-working-major-cyber-security-break-through

<comment><USER2> _one program, CRASH, is based on the human immune system and will make it less likely that computers will spread cyber infections to other networks_

If I had a dollar for every time I've heard that... I mean, I can recall hearing this at least 18 years ago.</comment>


All Belgian residents issued with iodine tablets to protect against radiation - <AUTHOR> http://www.telegraph.co.uk/news/2016/04/28/all-belgian-residents-issued-with-iodine-tablets-to-protect-agai/ <comment><AUTHOR> Makes you wonder how safe those old power plants _really_ are...

Both the Netherlands and Germany have recently asked Belgian officials to shut down two of their oldest plants.

<comment><USER2> If you read how the two Belgian plants 'operated' (my impression: shut down, repairs, restart, discover a small problem a few days later shut down, repeat) the last few years, it surely makes you wonder. Wikipedia doesn't give much confidence, either.

[https://en.m.wikipedia.org/wiki/Tihange_Nuclear_Power_Statio...](https://en.m.wikipedia.org/wiki/Tihange_Nuclear_Power_Station): _" Since 2006 there has been a leak of 0.5-2 liters per day of mildly radioactive water from a deactivation-bath. After this was notified to the Belgium Federal Agency for Nuclear Control (FANC) (nl) Electrabel tried to find the cause of the leak. But on 11 July 2012 it became apparent that the leakage still exists. According to FANC this issue is "under control" and no radioactivity leaks outside the building"_

I know a nuclear reactor is all kinds of piping with hot sometime extremely reactive stuff flowing through it, so leaks are almost avoidable, but that text makes it look as if they cannot even find the cause (or worse: do not want to find it because they would have to spend money to repair it then) and use "but it is only inside the building" as an excuse. For me, that sounds as if there is a permanent problem with one of the defense rings.

</comment></comment><comment><USER3> So this is where Nuka Cola originates.</comment>


Ask HN: Collaborative Amateur Video Production App - <AUTHOR>

Hi,
so I was working on a product demo video that needed to showcase different unrelated scenarios of people using our product- Prowork(http://prowork.me).
I was out of office so we used Prowork to create and discuss the story board for the video. As we listed the board titles and descriptions as tasks, it occurred to me that the different scenes could be shot separately by different team members and then put together later in the studio. Now shouldn't there be an app for that?
I came across starsvu (http://www.starsvu.com/) and the youtube video (https://www.youtube.com/watch?v=4oETM0rMvqY) is very impressive but basically not what you want for casual/ amateur video production.
so basically the app should do:
1. - create storyboard,
2.- share wit friends,
3.- assign or let them pick boards/scenes,
4.- they return clips,
5.- put them together
and voilà. would love to see this happen, what do you think? <comment><USER2> See long time play in this space w. App called HITCHCOCK on iOS. It's slick and has a good community around it.

</comment><comment><USER3> We have also used it extensively and found the script/storyboard integration a must for collaboration.

<comment><AUTHOR> sounds nice, could u post a link to the app

</comment></comment><comment><USER4> makes sense...the putting together part could even be automated where you pre- define transitions and how each clip would fit together before assigning to friends/creators...and once clips are done and uploaded, you just watch your movie take shape...

<comment><AUTHOR> yup - many people would love to shoot movies, on their phones and cam-corders like on weekends and on holidays

giving presets like you just mentioned make it even easier

</comment></comment><comment><USER5> intereting use case of breking down video production to task level and delegating/crowdsourxing it. However, how do you stndardize production qulity

<comment><AUTHOR> the project admin would/should be able to specify in the board notes,

for instance - record (using iPhone4s) at 1080p HD video.</comment></comment>


IntelliJ IDEA 13 Brings a Full Bag of Goodies to Android Developers - <AUTHOR> http://blog.jetbrains.com/idea/2013/12/intellij-idea-13-brings-a-full-bag-of-goodies-to-android-developers/ <comment><USER2> Has anyone tried using Kotlin for Android development? (it's supposed to be lower runtime footprint than Scala, and it is officially supported by Jetbrains [1])

[1] [http://blog.jetbrains.com/kotlin/2013/08/working-with- kotlin...](http://blog.jetbrains.com/kotlin/2013/08/working-with-kotlin-in- android-studio/)

<comment><USER3> Kotlin works well for Android development. The annotations have gotten better recently, too, so you can interact with Android classes without too many null checks.

</comment></comment><comment><USER4> Version 13 is very awesome. We've been finishing our intellij plugin and are so close to having it be usable that it could be user ready in like 2 days which will be awesome because then I can spend more time using the new intellij. I'm also glad they fixed the git colors in the Darkula theme.

</comment><comment><USER5> Want to like IDEA, but using a Java (Swing) based UI, in both Mac and Windows, makes me always feel like when someones scraps a blackboard with his nails.

I could live with Eclipse though, despite SWT being also quite removed from the native experience. At least it had bloody native text boxes and scrollbars and such.

<comment><USER6> Java also hates Xmonad (I spent ~30 mins trying workarounds and then gave up, as each time it went wrong, I had to restart my session)

<comment><USER7> I haven't messed with my xmonad.hs in a long time, but adding

      setWMName "LG3D"

to my startupHook fixed most of the issues for me.

<comment><USER8> I had to install kde as I couldn't get matlab working in xmonad. Found out about this fix only recently.

</comment></comment></comment></comment><comment><USER9> Other than "multi device preview" I think Android studio has all the features that IDEA13 offers for android developers. IntelliJ is great and I do all my Java/Groovy based development from it, but I'm not sure about buying the license just to go upgrade to 13

<comment><USER10> The Sqlite debugger is also IDEA13 only I believe.

<comment><USER11> Isn't that the thing that requires the Ultimate Edition? That's why it is not in Android Studio.

<comment><USER12> Database support has always been an Ultimate Edition only feature. However, nothing prevents someone from building their own plugin. For example, there's a third party one for MySQL that's fairly popular.

</comment></comment></comment></comment><comment><USER13> I really want to like Intellij since it is so much more responsive then Eclipse, but I can't for the life of me get a working scala set up in IDEA or in the community version. Eclipse might still be a bit of a sloutch, but it works.

<comment><USER14> What issues are you facing exactly? I've been successfully developing Scala apps since IntelliJ 12 with no issues. It's leaps and bounds better than Eclipse. One thing to note that for sbt-based projects, I recommend generating the IntelliJ project from [https://github.com/mpeltonen/sbt- idea](https://github.com/mpeltonen/sbt-idea)

<comment><USER13> Getting it to work with SBT. Even generating the project with sbt idea I still can't get it to compile correctly. And I still haven't been able to get it attach a debugger.

I think the current issue is with SBT 0.13 which isn't supported by them right now.

<comment><USER14> I'm using SBT 0.13 on a fairly complex project. Not sure why it wouldn't work for you. What kind of project is it? Any specific frameworks you're using that are causing compilation errors?

<comment><USER13> Play2 pulling it in via SBT resolution so I don't have it "installed" on my development machine.

<comment><USER15> Are you doing "sbt idea" or "play idea?" From what I recall, "sbt idea" was broken, while doing it using the play launcher works, as they have some broken dependencies.

<comment><USER13> I use sbt idea. I can try play, but it would be great if it just worked.

<comment><USER16> Thing is, it _does_ just work...if you follow the directions Play gives you once you create a new project. Namely, to use their play wrapper around sbt.

(I am not saying this is a good idea, but I am saying it "just works".)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> I just recently started doing some Java development (despite vowing never to again), and one of the reasons I'm kinda cool with it is Intellij. Intellij makes it way easier. Things just work (subversion, Spring, hot swap).

<comment><USER18> >> Things just work (subversion, Spring, hot swap).

The same has been true for me in Eclipse for over 8 years.

<comment><USER19> Two things that do not "just work" first drove me away from Eclipse:

a) git integration. Egit is bad and barely functional. I ended up abandoning it and doing all my git interaction at the command line. I rarely need the git command line with IDEA. b) Maven integration. We use a custom Maven setup that I could never get Eclipse to work properly with; it insisted on using a stock setup that could not build our projects. IDEA's Maven support just works; I run the Maven goal from the sidebar and it runs in IDEA just like I typed "mvn <rule>" at the command line.

I still use Eclipse for C and C++ development, but I will probably abandon it for even that soon. I have just never been able to get into Code::Blocks.

<comment><USER20> If you love IDEA, you may well get the chance to use it for C & C++ soonish, as well, since they're working on a C & C++ IDE now. Hopefully it really _will_ be good for vanilla C - I have an aversion to C++, and little need for that support.

The lack of native development is one of the main things keeping me from giving IDEA a proper try. It may well be better than NetBeans, but NetBeans works well _now_ , and has decent C & C++ support (at least as good as CDT, anyway).

I do have a personal license for IDEA 12, and would have no problem paying for an upgrade to 13 - it's just not worth my time (yet) to do so.

There are a few annoying bugs I've run into in NetBeans 7.4, and Android dev isn't awesome in NetBeans, so maybe there'll be enough impetus for me to give IDEA a real shot soonish.

Or the NetBeans bugs will get fixed, and I'll just stick tight. I'm happy either way!

</comment></comment></comment></comment><comment><USER21> The only feature that really excites me is the Gradle support. Things like the 9patch editor seem horribly misplaced (you probably don't want your devs to be editing those...) and others seem so situational (the autocompleting sdk version - a one line config value that you set once per project).

Android Studio is not really usable as an IDE if you want to have a fully featured test suite because of the weird, half-implemented Gradle "auto-sync" magic ([http://www.sep.com/sep-blog/2013/10/17/android-studio-not- re...](http://www.sep.com/sep-blog/2013/10/17/android-studio-not-ready-for- primetime/)). Until then, it's still good ole' reliable Eclipse (I can't believe I just said that). Until a different IDE can support Robolectric _and_ Robotium/Instrumentation tests in the same projct that can be run/debugged inside the tool and report results in a window (command line and html test reports don't count, sorry), I won't be switching.

<comment><USER22> Weird, I know we have Robotium and Robolectric working fine in Android Studio at work. Although some versions do require a separate project, most versions are just sub-projects under a main folder with a shared build.gradle now. Not than any of us want to use it. You are just forced to if you want to use the latest features like AARs with Gradle. Eclipse is unfortunately obsolete and incapable of handling the latest stuff, even though we all used it for years and prefer it.

<comment><USER21> Last I checked (October) I could not get the build.gradle to play nicely. Most of the other material online involved using instrumentCompile to trick Android Studio into running your unit tests and a custom runner/plugin: [https://github.com/JakeWharton/gradle-android-test- plugin](https://github.com/JakeWharton/gradle-android-test-plugin)

If you have gotten it working in Android Studio, I'd be very keen to see how (if you are willing to share).

<comment><USER23> I followed: [http://www.peterfriese.de/android-testing-with- robolectric/](http://www.peterfriese.de/android-testing-with-robolectric/) I can't get it to run a specific (gives junit 3.8+ required error), but am able to run the whole suit.

</comment></comment></comment></comment><comment><USER24> I am confused about how the IntelliJ IDEA with android plugins competes with Android Studio. I thought that Android Studio is suppose to replace IntellyJ for android development.

<comment><USER25> Android Studio is a fork of the OSS IDEA by Google. IntelliJ IDEA is the version released by the actual company and is not affiliated with Google.

<comment><AUTHOR> IntelliJ IDEA and Android Studio FAQ: [http://bit.ly/1d7U0Kg](http://bit.ly/1d7U0Kg)

Q: Is Android Studio a fork of IntelliJ IDEA?

A: No. Android Studio and the Android plugin for IntelliJ IDEA are built from the same code, and all of the changes in Android Studio are, and will continue to be, available in IntelliJ IDEA releases.

<comment><USER25> It's a fork in the sense that it's a fork of the IntelliJ repo with Google/Android related assets added. So it's more of a branding fork than a code fork, but since its in a different repo I'd still call it a fork. But it's just terminology I guess.

<comment><USER26> But that ships with IntelliJ IDEA, so it isn't a fork. Android Studio is a subset of IDEA 13.

</comment></comment></comment></comment></comment><comment><USER27> Does the Android Studio canary build get new features before IntelliJ?

</comment><comment><USER28> I really hope the Gradle support is ported to Eclipse and that the Eclipse Android tools are actively maintained. I tried Android Studio but it's completely inaccessible with my screen reading software. Since it is based off IDEA I assume I would run into the same problem trying to use the new version so haven't bothered.

</comment><comment><USER29> After trying to use Android Studio with its Gradle integration behind a company firewall that requires all outside network access through the proxy, I just gave up and went back to Eclipse, where everything just works. Diving through different configuration options was just to painful to put up with.

<comment><USER30> Personally I think "doesn't work like Eclipse" is a good thing. If you don't mind trying again go to [http://www.jetbrains.com/idea/documentation/migration_faq.ht...](http://www.jetbrains.com/idea/documentation/migration_faq.html) first. You will also find CTRL+SHIFT+A combo useful - it's a fast search of settings/actions.

Properly set IntelliJ will boost your productivity many times. It's just an investment if you migrate from other IDE. I like to think about it as something similar to migration from crappy unit testing solution to a better one - it just pays off after some time.

</comment></comment><comment><USER31> Is the gradle support really better than in IDEA Community Edition?

Sure I can open the gradle.build file and edit it with syntax colorization but there is no smart auto-completion: you always see a giant list of objects, and not all of them are available.

<comment><USER32> The Gradle support is a part of Community Edition. Code completion should be available for dependencies and plugins (available in the Maven central). I've seen a few cases when there were no completion for the artifacts from the local Android repository. It will be fixed shortly.

</comment></comment><comment><USER33> Does anyone know a good software to create these kind of "screenshot gif"? I know my question is not directly related to the content of the article..

<comment><USER34> LiceCap is a great tool, and opensource: [http://www.cockos.com/licecap/](http://www.cockos.com/licecap/)

<comment><USER35> What a terrible name for a project.

</comment></comment></comment><comment><USER36> The XML code formatter (shilf+alt+L) is very strange. Maybe bugged. Eclipse does a better work.

E.g. [http://youtrack.jetbrains.com/issue/IDEA-103320](http://youtrack.jetbrains.com/issue/IDEA-103320)

</comment><comment><USER37> I'd like to try an IDE, since I usually end up using vim due to the fact that my projects often mix languages (Python, C, Clojure, occasionally Scala). How do Intellij, LightTable, SublimeText, etc. perform on those sorts of polyglot projects?

</comment><comment><USER38> Thank God for IntelliJ because Eclipse is the biggest steaming pile of shit excuse for an IDE.

I'm really glad Google is ditching Eclipse as the go-to IDE in favor of the IntelliJ-based Android Studio. Good riddance.

</comment><comment><USER39> I wish, they would have a free and lightweight version of the IDEA, so i could use it instead of Sublime Text.

<comment><USER40> You mean the open-source community edition that actually exists?

<comment><USER39> Not really actually. With the free community edition, you only get to manage "java" which doesn't work for me since i work with different programming languages with lots of front-end stuff as well. I meant to use it from editing xml, css, html to configure tomcat settings for example. On the other hand, i totally understand that they want people to buy it for fully featured version.

<comment><USER18> Eclipse is fully featured and professional and free as in beer and software.

<comment><USER41> "Fully featured" is not a binary condition. If Eclipse is fully featured for Java development, IDEA is much MORE fully featured.

</comment></comment></comment></comment></comment><comment><USER42> The more comments about IntelliJ IDEA I read, the more it reminds me of apple fans... It's just a tool and not a miracle! But hey, everyone is special and has the right to opinion, right? :)

<comment><USER43> coding is our jobs. The IDE is our primary interface. Of course its important. Its much more of a vital decision than what looks good (apple fans), its about what gets the most real work done.

Look at vim Vs. emacs for a better analogy.

<comment><USER42> What are you talking about? I use IDE everyday and I'm not questioning the importance of IDEs, i'm questioning the fan base :)

All I'm saying is that the whole "it's worth paying extra", "it's so much better and productive", "it has so many features"... is just bs... IMHO. Use right tool for the job and be open minded, that's all. If I have to switch to go lang tomorrow, should I start complain, whine and wait for IDEA for go or just do whatever I have to do?

And you cannot compare vim vs. emacs anology with this one, since hey both are free and open source, however IDEA is just a good commercial product, but not a silver bullet, that's all.

<comment><USER44> I don't think there will ever be silver bullets. :)

IntelliJ has a community version with the source posted over at GitHub. They also have a flavor for Python which recently had an open source version released. But as you said, to each his own.</comment></comment></comment></comment>


Get any a-Z char using only []()+{}/. in JavaScript (for XSS obfuscation) - <AUTHOR> http://sla.ckers.org/forum/read.php?24,33349,33405 <comment><USER2> Similarly, tabs and spaces can be used as a primitive form of binary. A simple decoder function will allow you to generate entire Javascript programs using only whitespace.

Javascript obfuscation can get really nasty. For those interested in pursuing the issue further, I recommend checking out Caffeine Monkey [1], an automated tool for analyzing and classifying Javascript. The paper [2] gives a good overview of Javascript obfuscation techniques and the implementation of the tool.

One notable thing about Caffeine Monkey is that it attempts to do behavioral analysis instead of signature-based analysis, thereby reducing the effectiveness of obfuscation.

[1] [http://www.secureworks.com/research/tools/caffeinemonkey.htm...](http://www.secureworks.com/research/tools/caffeinemonkey.html)

[2] [https://www.blackhat.com/presentations/bh- usa-07/Feinstein_a...](https://www.blackhat.com/presentations/bh- usa-07/Feinstein_and_Peck/Whitepaper/bh-usa-07-feinstein_and_peck-WP.pdf)

<comment><USER3> This reminds me of Acme::Bleach for Perl :)

[http://search.cpan.org/~dconway/Acme- Bleach-1.12/lib/Acme/Bl...](http://search.cpan.org/~dconway/Acme- Bleach-1.12/lib/Acme/Bleach.pm)

</comment></comment><comment><USER4> I'm missing the basics for this one. Why does ++[[]][+[]] == 1?

<comment><USER5> To start, you need to know that JavaScript has type coercion. Numbers can become strings, strings can become numbers, and arrays can become strings.

Thus, for example: [] in a string context becomes "". "" in a number context becomes 0. Thus if we were to do: "" - 1 we'd get the number -1. Additionally if we were to do [] - 1 we'd get -1. ++ is also able to coerce a string into a number.

If ++ is able to turn a string into a number then you're probably wondering why they just don't do ++[] and be done with it (to get 1, that is). The problem is that ++ is attempting to assign that resulting value back somewhere and since [] doesn't exist anywhere yet (it's temporary) it throws an error instead.

We could do something like this:

        var a = [];
        ++a; // 1

But we can't actually assign the result to a variable because we can't use alphanumeric characters. So what's another way in which we can assign the results to a variable? We can stick it into an array.

        var a = [ [] ];
        ++a[ 0 ]; // 1

This also works:

        ++[ [] ][ 0 ];

Now, we can't use 0 because it's alphanumeric so we swap 0 for +[] (+ turns the string "" into the number 0, [] turns into the string ""). Thus we get the final result:

        ++[ [] ][ +[] ]

<comment><USER6> The explanation of why ++[] throws error is actually incorrect. This has nothing to do with "existence" of [] (I'm not even sure what existence could mean here). Rather, it's the way ++ operator works.

++ requires its operand to evaluate to a _reference_, not a _value_. If operand evaluates to a value, a ReferenceError is thrown (well, actually it is internal PutValue method that throws error, but that's irrelevant here). Now, if we were to pass reference to ++ operator, it would "work" as expected. E.g.:

++({ x: 1 }).x;

In this case, `({ x: 1 }).x` is a reference, it evaluates to 1, and is then increased by 1 to produce 2 as a resulting value.

When you said "this also works" with `++[ [] ][ 0 ]` example, what happened is that `[ [] ][ 0 ]` evaluated to a reference too, and returned a value of array (inner one). The fact that something like ++[[]][0] "works" should already hint at the fact that "existence" of an object is a bogus reasoning ;)

So what we really need to understand here (besides type coercion) is the notion of references. Literals, for example, always evaluate to values: 1, "foo", true, ({ x: 1 }), and [] are all values. Expressions involving property accessors, on the other hand — foo.bar, [1][0], ({ x: 1 }).x — are all references.

Understanding this distinction can also help explain other aspects of Javascript, such as, say, simple assignments, where left hand operand is constrained by the same rules as ++ operator; it should always evaluate to a reference:

1 = 1; // ReferenceError, LHS operand is not a reference

null = 1; // ReferenceError, LHS operand is not a reference

// but

({ x: 1 }).x = 1; // works as expected, LHS operand is a reference

x = 1; // works as expected, LHS operand is a reference

FWIW, it is the same internal PutValue method that's invoked by `=` operator, and is why assignment to non-reference values result in an error.

<comment><USER5> "This has nothing to do with 'existence' of [] (I'm not even sure what existence could mean here)."

Ah sorry, I was referring to the fact that the array was already created and within another object that we were referencing. But yeah, thanks for your more-in-depth explanation!

</comment></comment></comment></comment><comment><USER7> At the risk of summoning Captain Obvious...

Is this for sneaking code past XSS filters? Or for making XSS attacks more difficult? Can someone explain the utility?

<comment><USER8> A lot of people do input validation by disallowing 'bad' characters.

The idea is to stop people buying JavaScript in comments, as that would be bad. Just strip enough characters that you can't do functions and everything will be...

...oops. Hope you remembered to filter out + and [] as well! Never mind, now all your visitors are automatically posting/up-voting spam comments or something similar. Better luck next time.

<comment><USER7> Captain Obvious here again. Doesn't all this go away if you use Javascript to inject untrusted text directly into the DOM rather than rendering it as HTML which is then interpreted by the browser?

And if so, it seems to me that there's a fairly obvious way to build that directly into templating engines and meta-languages like HAML.

<comment><USER9> That would work, but with the downside of lowering the accessibility of your site. Not everyone has JavaScript enabled, and so dynamic insertion of text wouldn't be accommodating to them.

<comment><USER10> How many people don't have JavaScript enabled these days? I guess you have to consider your audience. <http://www.w3schools.com/browsers/browsers_stats.asp> has some clues.

<comment><USER9> That's true for people that don't need alternate browsers. It's like, "why build wheelchair ramps outside of businesses when 99.99% of people are able to walk up steps?"

<http://www.section508.gov/>

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Here's a page to convert JavaScript into this small character set: <http://discogscounter.getfreehosting.co.uk/js-noalnum.php>

(From <http://twitter.com/jeresig/status/9680176440> & <http://twitter.com/jeresig/status/9680335152>)

</comment><comment><USER11> Wow - how does this work? Does anyone know or have a link to a place that might explain this?

<comment><USER12> it is basically various ways of making javascript return things like "NaN", "undefined", or "false", and then using a numbered index to return a particular character of that word after it is converted to a string.

so "NaN"[1] would be "a". "false"[0] would be "f".

since they are trying to do it without numbers, they can create them using things like "++[[]][+[]]" which returns a 1. by adding up different numbers you can get the digits you need.

<comment><USER13> Making strings out of nothing is hard, but how did they managed to execute that string out of nothing?

<comment><USER14> By deriving an eval-equivalent and indexing [] (read the comments).

<comment><USER13> Yes, I know how to make "eval", but how could it convert "eval" to eval() ?

Edit: by using []["sort"]["call"]()["eval"]

<comment><USER15> Yes, but why does _that_ work? I don't get:

+[]

or

[]['sort']

or

[]['eval']

for that matter, why does []['sort']['call'] work but []['call'] doesn't.

All of these look like they should be syntax errors to me. What am I missing?

<comment><USER16> Here's the breakdown:

      []["sort"]["call"]()["eval"]

is the same in javascript as

      ([].sort.call()).eval

The part in parentheses calls Array.sort with an undefined _this_ object, defaulting it to _window_. Array.sort returns _this_ after it's done. Global functions like _eval_ are stored on _window_ , so you end up with _window.eval_.

<comment><USER15> Ah. Thanks!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Wow, that's insane. Also, comparing hello worlds:

Brainfuck:

      ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.</comment><comment>.</comment><comment>--.>+.>.

JavaScript:

      ([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]])([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[+!+[]]](+[]+(!![]+[])[+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]())[+!+[]+[!+[]+!+[]]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+[][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]]((+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])+[])[+[]]+(![]+[])[+[]])[+[]]);

<comment><USER18> I'd like to file a bug report on your hello world. (Using webkit nightly on OSX 10.6.2)

[http://i159.photobucket.com/albums/t146/epochcoyote/8950ccb4...](http://i159.photobucket.com/albums/t146/epochcoyote/8950ccb4.png)

<comment><USER18> But it works properly in Firefox.

[http://i159.photobucket.com/albums/t146/epochcoyote/8528ac1e...](http://i159.photobucket.com/albums/t146/epochcoyote/8528ac1e.png)

</comment></comment></comment><comment><USER13> sla.ckers.org has the most epic thread of XSS vectors of all time

<http://sla.ckers.org/forum/read.php?2,15812>

You can find the the most bizarre javascript out there.

<comment><USER12> i think most of that has been summarized at <http://ha.ckers.org/xss.html>

</comment></comment><comment><USER19> Hello World example - CopyPaste this in your address bar: javascript:alert:(([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]])([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[+!+[]]](+[]+(!![]+[])[+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[+!+[]+[!+[]+!+[]+!+[]]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+[][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]]((+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])+[])[+[]]+(![]+[])[+[]])[+[]]))

<comment><USER20> Hello norld!

<comment><USER19> Hello norld! in Safari, Hello World! in Firefox</comment></comment></comment>