Ask HN: BugsEverywhere was a great idea – why didn't it catch on? - <AUTHOR> The BugsEverywhere (http://docs.bugseverywhere.org/1.1.1/)project has been dormant for a good five years but the idea of including a distributed bug database alongside your code seems like a no-brainer.  Several other systems (Fossil, AccuRev, Veracity) include this functionality but I'm wondering why BE didn't catch on with the CLI crowd since it can be layered on top of a variety of SCM systems. <comment><USER2> I'm also someone that fell in love with the concept of issue databases as source control artifacts.

I think the biggest problem is always going to be the "Stakeholder" issue, and just about everyone else is touching on this too. Issue databases solve a number of different problems for a number of disparate roles of people. As much time as developers spend embedded in an issue tracker, you also have PMs, Managers, Executives, Clients, Customers, Testers, and sometimes a panoply (or even panopticon) of all sorts of other "stakeholders" with one reason or several to be in and out of an issue database scattered across a wide variety of technical acumen.

For anything more than a small team of only technical people, one or more systems of reporting (in either direction) becomes generally required. Can Clients or Customers submit new issues easily? Can PMs (or Managers or Executives) get the reports they need? Can Testers accept issues as completed or file new bugs on them?

There's so much more workflow than just the Developer side of things, for better and sometimes for a lot worse. (The "Jira Effect" where nearly every issue tracker eventually seems to succumb to becoming a super-configurable business workflow engine with a built-in CRM and a support desk ticketing system and a hideous kitchen sink with terrible load times.)

There's probably still a chance to find a really good sweet spot for distributed issue tracking that has just the right amount of bidirectional reporting to fill an average development team _and_ their stakeholders' needs, but it's probably going to take a smart UX team to do it. A CLI-only approach seems unlikely to work, again just given the huge swath of technical acumen to be found with fingers in an issue tracking pie.

<comment><USER3> I'm not sure that's a big issue really. The repository is just a database. You're not forced to work on them manually with the low level tools.

There's nothing that would stop you from putting a full blown jira-like UI which interacts with that database. Well... Apart from that UI not existing yet. But in theory, you can have both. With a centralised main head in the same way people use central repository for git.

<comment><USER4> > I'm not sure that's a big issue really. The repository is just a database.

in large non-tech companies i see a pattern where the company adopts standard open source tools arguably better suited to open source distributed development (many small git repos, github/gitlab) -- but then there can be pressure to present information for ease of central governance and control

at $current_job there's pressure for 100-200 people to use a single jira project so auditing and risk can be done via that one jira project, whereas at the same time there are an increasing number of git repos containing code for different systems (or ci/cd/build scriptery for different systems)

the jira project everyone is forced to use has about 100 different states a ticket can be in (many synonyms) and about 30 different custom relationships defined between pairs of tickets - so it is challenging to sanely encode or track the state of tickets (lowest-common-denominator meaning that it cannot be a fair approximation of the reality of an individual team's process) while also being absurdly slow.

i am not quite sure what my take away is but it is completely non obvious how putting the issue tracking db in a single git repo would materially help any of this. a sufficiently entrenched bureaucracy can destroy the value of any technology...

<comment><USER3> > but it is completely non obvious how putting the issue tracking db in a > single git repo would materially help any of this

I think it could actually prevent bureaucracy from destroying the value. They can have whatever reporting, enforced flows, business states, etc that live in the repo. You get all of that info locally - so you can create a minimal, lean interface for only the small part of it that matters to you. One of the problems I had with JIRA where I used it was that it grew into a monster, even though I only needed maybe 3 functions out of it. It could be simplified from my side, but... the API was not exposed because corporate rules and the number of requests that would require to enable, made it useless to try.

</comment></comment></comment></comment><comment><USER5> Hey, I maintained Bugs Everywhere for a while! For four years starting in 2008. It sure seemed ahead of its time.

But also, behind the times in one important way. GitHub has created an expectation that anyone in the world can open an issue against and collaborate with a project. That's incompatible with requiring Git push access to make changes to issues.

I created another project -- GitTorrent -- which also tried to increase the decentralization of software production, and this tension of collaboration benefitting from centralized spam fighting and access control mechanisms was there, too.

Hopefully one day there'll be magic spam fighting blockchain decentralized identity dust that makes everything work with p2p.

<comment><USER6> > Hopefully one day there'll be magic spam fighting blockchain decentralized > identity dust that makes everything work with p2p.

If you aren't already familiar, you might dig Secure Scuttlebutt. Dat is also in a very similar space.

<comment><USER5> I really like SSB, but it doesn't work for this use case where a random person wants to open an issue on a repo. In SSB, you (as the open source project maintainer, say) only see content from people whom _you_ follow, or are part of your network graph. So random person's attempt to file an issue is invisible to you on the network. Because it's a gossip network.

<comment><USER6> > In SSB, you (as the open source project maintainer, say) only see content > from people whom you follow, or are part of your network graph.

This is exactly right, and is one of the main reasons we still use GitHub for issue tracking. There's some internal Git + issues + npm registry infrastructure that some of us use, but it only works when other contributors are within your web of trust. It also depends on SSB working, which means that broken SSB installations can't report bugs (!).

The main implementation defaults to downloading content from people you follow and people that they follow, but this could (and should (in my opinion)) be increased once we've finished partial replication and off-chain content. I'd prefer to download a public message addressed that's 5 hops away over a private message from 4 hops away, but right now we don't have infrastructure to do that.

Potential friends that are connecting to the network for the first time and are experiencing bugs should probably have some public bug tracker that they can report to, but I'd imagine that once someone confirms your issue that it'd be moved from purgatory into the formal bug tracker.

Bias disclaimer: I'm _very_ skeptical of GitHub-style issues, where anyone can add items to your todo list, and I'd really like to experiment with systems that require maintainer consent before an issue is hosted on the bug tracker.

</comment></comment></comment></comment><comment><USER7> I like the idea of the bug database synchronized with the code base, becoming part of the documentation, but here are my concerns.

Often people who are not developers put "issues" into the bug tracker and they might not find working with the command-line easy.

If an instance of the system is in use by many, debugging a problem experienced by a particular user might involve personally identifying information which should not be checked in with the source.

Also issue trackers sometimes deal with multiple branches of development. In a sane place you might have 4.8 and 4.9 in production and a 5.0-dev, fix a bug in 4.9, then port the fixes to the other branches. To do this you are thinking about the tree as a whole and that's easier done from outside rather than inside the tree.

<comment><USER8> > Often people who are not developers put "issues" into the bug tracker and > they might not find working with the command-line easy.

IME it's best not to have non-technical people entering bugs, they should be submitting through email, a simple form, automated crash tracker or something along those lines. Most issue trackers will contain so many fields that will make zero sense for someone outside (or even inside) your organisation. They won't know the priority, the won't know the component, they can't find relevant logs to attach, they don't know the internal workflow, they aren't familiar enough to search for similar issues. And that's before you get to the corporate mandated fields, there's some on our issue tracker I don't know, I have no idea if something is capitalizable. Similarly I don't think I've ever put in a successful request to our internal desktop support system, I have no idea what their division of responsibilities are and somehow always select the wrong team.

I've become quite religious about creating issues on behalf of people when we get support requests or relevant lunch room chats, otherwise nothing makes it up their side of the corporate org chart and back down ours.

</comment></comment><comment><USER9> Shameless plug warning. I'm the author of git-bug ([https://github.com/MichaelMure/git-bug](https://github.com/MichaelMure/git- bug)), a distributed bug tracker actively developed (even a gsoc this summer!). If you are interested by this topic I would very much like you to give it a try or even contribute.

git-bug try to improve over the previous iteration of this idea in several ways. To answer your question, those are what I think prevented them to catch on:

\- it doesn't pollute your project: no files are added alongside your code, no mess during a merge, bugs are stored in your repository but decoupled from your code workflow

\- it doesn't impose an interface: as you prefer, you can use the CLI tools, the interactive terminal interface or even a webUI. You could also integrate it to your editor, CI system ...

\- it allows outsider of the project, client, users ... to browse and open bugs, without asking them to install anything. Admittedly, git-bug is not there yet, but the goal is to have the webUI work as a public portal that a project could host easily, accepting authentication from outside system (github OAuth ...).

</comment><comment><USER10> There were several others active at around the same time, most with slightly different ideas on how to store the case data. One, for example, handled it with dot files committed as normal - no need to mess with refs.

One benefit of that method was that it was truly linked with the code, no need for additional push/pull commands or hooks. This also meant that you could tell the state of a case on a given branch without having to look through commit/merge history - it would become closed on master alongside the code merge.

That was also its downside though, since a case could have different comments/status on master vs branches where they started, you had to actually check each branch to see if someone else had already begun or not. Not having a grand centralized view was that one's downfall.

</comment><comment><USER11> Distributed databases like git you mean? Even git is no longer used as distributed database, thanks to GitHub.

<comment><USER12> Git being "distributed" version control is meant as distributed because it doesn't require a central checkout server, and GitHub is simply a distribution (not checkout) server

<comment><USER11> Yes absolutely, but I meant the workflows most people use these days (PRs) has turned GitHub into a "central" server.

</comment></comment></comment><comment><USER6> I think this is a great question.

I was originally interested in BugsEverywhere, but noticed that the website linked to a demo at [http://bugs.bugseverywhere.org/](http://bugs.bugseverywhere.org/) which was... not a demo. This gave me the impression that the project was completely dead, so I moved on.

Recently I've been looking at git-bug, which is similar, but I've been hesitant to use it because the readme talks about how it's alpha software and I'm not super excited about the demo web interface.

I'd be interested to hear what others think.

<comment><AUTHOR> I have a clone of the final repository state and had created a Java implementation in about 2013. I was interested in integrating it with Github and Eclipse at the time. Now I'm wondering about resurrecting that project and converting it to Go but I don't want to create something that doesn't get used.

</comment></comment><comment><USER13> I also favor issue tracking integrated with the source code and experimented with most of these systems. The first roadblock I noticed to using distributed issue trackers was that the client programs need to be extremely convenient to install on the personal OS and mobile device of everyone involved in the project, something which is very difficult to deliver. A web interface with editing capability could cover some cases, but then you're obliged to host it on a server somewhere.

</comment><comment><USER14> I would posit that the vast majority of working programmers have always-on internet while working. So an offline-capable bug tracker is not actually that much of draw.

<comment><USER15> Maybe I'm a special case, but once in a while I'm working on a local branch somewhere that doesn't have internet access, like on the subway.

I feel this is directionally the same win as the offline capability of a VCS like Git itself. If we have it, we come to expect it. And if someone took it away for some reason, we'd have a better conception of just how useful it can be.

</comment></comment><comment><USER16> Our CI already has a bug tracker. In addition, I think making a commit every time you change bug status (priority, etc) then having to resolve bug database conflicts is less than ideal.</comment>


Russian spy boasts the Internet belongs to the Americans, the blockchain is ours - <AUTHOR> https://www.nytimes.com/2018/04/29/technology/blockchain-iso-russian-spies.html <comment><USER2> I think it's okay. They can have "the blockchain"...

<comment><USER3> They're patenting it, you see.

</comment></comment><comment><USER4> If a public blockchain can belong to a single entity than it really isn't satisfying the moat sacred responsibility of a blockchain: to be trustless.

The fact that the times ran with this story despite the headline meaning very little just shows how hollow so much journalism is.

<comment><USER5> If the article seems messy, it's because it's about political rumblings rather than blockchain technology itself. Leaders are looking at it as a sort of "mechanism of the future" that they need to get in on. Per a quote from Gilbert Verdian, head of the British delegation at the ISO:

> To get behind it and back it now is going to put people at an advantage, > either politically or economically.

That's pretty much politician catnip. "Yes, please. We'd like some of that." And that's how the people being discussed in the article are looking at "blockchain" (I'm using quotes intentionally here) rather than a technical- oriented perspective. The article isn't about a blockchain implementation. Think of the people in the article as similar to a _stereotype_ of investors talking about the latest buzz-worth startup. They're excited about X, have some ideas on what X could mean, but don't necessarily have a deep understanding of X itself or how it's implemented. That's how some nation states are looking at future blockchain possibilities. The quoted Russians are basically saying "America won the internet, but we'll win the future (i.e., "the blockchain").

</comment></comment><comment><USER6> Surely this is just political grandstanding and nothing more.

The statement makes so little sense that either it 1) makes clear the spy does not understand the Internet, America, or Russia as the entities that they are in the real world, or 2) he is merely trying to make Russia sound good.

The internet does not belong to the Americans. If anything, the way the Russians have used the internet to subvert democracy and wage a new kind of war, I would say that if the internet belonged to anyone at the moment it belongs to the Russians! (using similar terminology as 'owned boxes' from the old hacker/cracker/scripts cultures)

And second, there is not one blockchain. If he means the entire branch of computer science and mathematics that makes up the workings of a blockchain, he's obviously a madman anyway.

I'll go with assuming the statement is meaningless grandstanding meant to achieve nothing but make Russia sound good to people who don't know anything about the topics discussed.

<comment><USER7> What can US do to disrupt the Internet? Turn off root DNS servers, stop issuing SSL certificates (let's encrypt is US entity and many other CA), undelegate a lot of domains, mess with BGP, cut the backbones. I know that many of those services are duplicated, but I think that US can wreak a huge havoc onto Internet. And Russia can't really do anything of that scale. They even struggle to ban Telegram, there's too much dependency on foreign services.

<comment><USER6> > And Russia can't really do anything of that scale.

I think they already have, though, and that is my point. I think Russia has done something far more damaging to the internet (and by extension our society) than anything you listed above. Everything you listed above are technical issues that any major player could overcome.

Russia has created false realities on the internet, something far more dangerous than rerouting or shutting down technical services.

</comment></comment></comment><comment><USER8> Which one? Every citizen can have one too.

</comment><comment><USER9> I'm really saddened that the NYT couldn't even understand what they were covering here...</comment>


Choose Your Own Best Gov-Sunshine App  - <AUTHOR> http://blog.wired.com/business/2009/04/choose-your-own.html <comment><USER2> Wow, this is great. A web app ABOUT the contest. How meta! Seriously though, we are really honored that Wired would support the contest like this.

And just to clarify, the entries were not limited to GPL: "All software you write has to be licensed under the MIT, New BSD or the GPL family of licenses."

</comment><comment><USER3> this is awesome, great post!</comment>


Women in Tech and the Hoodie Archetype: A Reading List - <AUTHOR> https://medium.com/code-like-a-girl/women-in-tech-the-hoodie-archetype-a-reading-list-382610c2d93a#.792ab24gg <comment><USER2> Please don't post articles which advocate gender discrimination on HN.

<comment><AUTHOR> I find it interesting that you feel this advocates gender discrimination. I am opening a dialog that women in tech feel that other women are harsher on them then men. The article was started by a woman. Bias towards women in tech does not only come from men. It comes from women too. We need to discuss all the angles it comes from to remove the bias.

<comment><USER2> "Thoughts from an office full of hoodie-wearing white guys" was probably a super-bad way of stating the article's subheading, then. If it's perfectly fine that the office is full of hoodie-wearing white guys, then why make a big deal out of their presence?</comment></comment></comment>


What I learned by switching to Bitcoin donations instead of traditional ads - <AUTHOR>

6 days ago I posted  http://www.reddit.com/r/Bitcoin/comments/202pts/im_taking_the_ads_off_my_popular_website_and/ ) about taking all the ads off my website ( http://www.spaceindustrynews.com ) and replacing them with donation links for BTC. I plan on doing this for 6 months and at that time if I'm not making enough money to keep the servers up I'll have to switch back to a traditional model.
Here's a recap of what has happened and what I've learned so far from my experience.
I've received some very positive feedback about my move away from traditional advertising to a donation based format. I've been contacted by numerous people in the industry ( NASA, etc. ) about this. They are truly intrigued and didn't really understand how I was going to keep the lights on.
The BTC community has been overwhelmingly supportive through this transition as well. I've gotten so many PMs from people that have built systems for easier BTC integration and I'm truly grateful for that.
How much BTC has been donated so far? Day 1: I received 0.0125 BTC which equals ~ $8.00 USD. Day 2: 0.0015 BTC = ~ $0.95 USD Day 3: 0.00 BTC = $0.00USD Day 4: 0.00 BTC = $0.00USD Day 5: 0.00 BTC = $0.00USD Day 6: 0.00 BTC = $0.00USD
There are probably a few reasons for this. One is that after the initial post moved down the page less BTC influencers were coming to the site. My normal audience comes from links and Google so who knows if they user BTC at all.
This news doesn't halt me one bit. I'm in this for a while and will continue doing what is right and what is good. Like I said before, this is still only a few days old so there will be design changes, traffic changes. I'm still 100% behind BTC!
Thank you for the donations, I really do appreciate it. <comment><USER2> You should strongly consider making a product and selling it, then using spaceindustrynews.com as a friendcatcher for that product. This lets you have a virtually ad-free experience for that site (with the exception of a few plugs for the house product every once in a while), and would probably be substantially more lucrative than donations or webmaster welfare (AdWords in a non-commercial niche). It will likely sell to a fraction of a percent of your audience, but given that rather more than that is people with high-paying jobs in e.g. engineering or the space industry, amounts of money which are lifechanging for you (when aggregated) are still pretty small beer for them.

<comment><AUTHOR> I've thought of this a million times over but really can't think of something that would be worthwhile to my readers that they can't get elsewhere. Of course I could do the normal swag, tshirts, etc. , but that's pretty boring and doesn't add to the user experience.

<comment><USER3> Charge $0.99-$1.99 for an iOS app that pulls content from your website and presents it in a mobile-friendly view. Advertise this app on your website as both a way to read your site on a phone and a way to support your website monetarily.

<comment><AUTHOR> Great idea. I can probably whip up an iOS app for that. Sounds like a weekend project :)Thanks!

</comment></comment></comment></comment><comment><USER4> Sounds like the trend, starting on day 3, is quite clear. It's not surprising, donations usually don't work.

<comment><AUTHOR> There's a way. I will find it. The content is worth not having ads.

<comment><USER5> I really appreciate your attitude! Hope it goes well for you, mate. =)

<comment><AUTHOR> Thanks for the encouragement, it means a lot :)

</comment></comment></comment></comment><comment><USER6> One thing, it's impossible to see the footer on your website with the infinite scrolling.

<comment><USER7> It looks like the infinite scroll only loads two times and then has a button to "load more" on the third time. Infinite scroll with a footer is generally a bad idea though. I would suggest either using a sticky footer so it's always at the bottom or moving the information to someplace that wont be moved by the infinite scroll.

That being said this will definitely be an interesting experiment and I look forward to seeing the results in 6 months.

</comment></comment><comment><USER8> What did the site look like with ads?

Have you considered making ads less intrusive? There are networks like this [http://decknetwork.net](http://decknetwork.net) that stipulate one small jpg ad per page.

Where do you get the content? Do you write any yourself? This looks like an aggregator/content farm. Why should I support that?

Coinbase allows recurring payments, you can ask people to subscribe essentially.

Ultimately I don't think it's very convenient for a large number of visitors, but you can probably get your $20 a day. Flattr was supposed to be micropayments for likes and it didn't work. With Bitcoin/DOGE there is a more passionate crowd that will donate if only to promote bitcoin and increase transaction volume.

</comment><comment><USER9> I'm not any the wiser, as you don't mention what your average ad revenue is like.

<comment><AUTHOR> On any given day my ad revenue is around $20.00USD. It pays the bills and then some at the end of the month. Sorry about not mentioning that.

<comment><USER10> I would suggest adding a Paypal (or similar) donation button as well, so non- bitcoin people, or those who wish to hold theirs, can donate too.

<comment><AUTHOR> Thank you for your suggestion. I've added PayPal to the mix. Though I feel that BTC is the future of currency I'm not sure everyone will feel the same way.

</comment></comment></comment></comment><comment><USER11> This is a marketing plan, not a business plan.

Accept other forms of payment. If you feel strongly about Bitcoin, that's great. Accept it as a payment form. Advertise to all bitcoin savvy users. But you are destining yourself to fail by only accepting Bitcoin.

Also, not sure your readership. But it probably makes more sense to do a subscription, cause someone that sends you a few dollars won't likely send you more. And your regulars are the ones who will pay. Not the random-google- passer-by.

</comment><comment><USER12> Whilst a interesting move I would suggest offering donations via alternative means, PAYPAL, postal cheque even being two that spring to mind. Have a donate button that links to the options. Then you will get a better feel of how the donation model works instead of limiting to bitcoins. Which in some countries would be illegal I believe. Not sure what the geographic distrabution of bitcoins is, or if that information is mineable in any way beyond maybe memberlists from mining pools.

<comment><USER13> This is the first thing I thought. Given the mild but noticeable hassle of converting USD to BTC, and the position of BTC in the eyes of many ("hang on to all of it, the value will keep going up!"), there may be potential impulse donators who just won't do it in Bitcoin.

Actually, I wonder what sort of income there'd be with a "joke money" cryptocurrency with an associated tipping culture, like Dogecoin.

</comment></comment><comment><USER14> I'm developing a new service (Bitcoin related). At first I was considering BTC donations being the only form of income, but I've noticed every time I look up a BTC donation address there's little to no money transferred to it, even for popular websites. I think I'm going to use a percentage of each transaction as payment instead...

<comment><USER15> The game 2048 which was on the front page a few days ago got a lot of donations.

<comment><USER16> Was on the front page for a while, and yet, only 0.47 BTC donated: (unless they used more than one address since then)

[https://blockchain.info/address/1Ec6onfsQmoP9kkL3zkpB6c5sA4P...](https://blockchain.info/address/1Ec6onfsQmoP9kkL3zkpB6c5sA4PVcXU2i)

That's no more than a day of income for a so-so developer (in the US, at least), so I'd hardly call that "a lot of donations". You could earn more on a low-grade task on Freelancer.com or eLance, and I consider 2048 a quality piece of work. The popularity has probably peaked, so I doubt it'll ever even get to 1.0 BTC.

</comment></comment></comment><comment><USER17> Thanks for sharing the results so far. The problem with accepting bitcoin on a site that doesn't have anything to do with bitcoin, is that you're limiting your audience.

I would venture that only 1 - 5% of your visitors even have bitcoin. So basically, you're trying to get donations from only 10 to 50 users for every 1,000 visitors you get. If we then assume that 1% of those visitors will donate $1, you are looking at only $1 to $5 for every 10,000 visitors.

This just doesn't make sense from a business perspective. I would include other ways to make donations.

</comment><comment><USER18> I hope this works out for you. I'd really like to see micro-transactions replace advertizing as the primary revenue source of the web. I'm afraid your experience so far shows that we haven't reached that tipping point yet. What percentage of your audience even has any bitcoin to donate? It has to be 1000 times more frictionless before I see this working outside of a niche (that you don't seem to be in).

Good luck.

</comment><comment><USER19> While way too many websites have turned advertising into something 'bad', it doesn't have to be that way. Sites like Smashing Magazine and such offer non- intrusive advertising that displays services people might want to use.

Advertising in and of itself is not evil, it's how people have chosen to utilize it that's given it a bad rap.

<comment><USER20> I do consider advertising in and of itself to be distasteful. But of course some implementations are better than others, and yes many people are ok with some types/amounts.

</comment></comment><comment><USER21> Have you considered adding dogecoin and/or litecoin? The inflationary nature of dogecoin lends itself to a higher transaction volume than bitcoin, whereas bitcoin inherently encourages hoarding, not to mention the overwhelmingly generous nature of the dogecoin community in general.

<comment><AUTHOR> Doge seems like a good idea. I have reached out to that community on Reddit to see what they think and they seem very enthusiastic.

The problem with Dogecoin is that I can't find anything relatively close to coinbase.com as a wallet.

</comment></comment><comment><USER22> Makes me really hopeful for Tidbit to succeed and become more widely adopted and accepted...I know that I plan to implement it on my sites (default off with opt in of course).

[http://tidbit.co.in](http://tidbit.co.in)

</comment><comment><USER23> I recommend supporting other cryptocurrencies, particularly dogecoin.

</comment><comment><USER24> Good luck. Thank you for sharing!

<comment><AUTHOR> Thanks Josh!

</comment></comment><comment><USER25> This is one of the primary purposes for developing valME.io - to give quality content providers a better way to make money from doing exactly what they already do, and without advertising. You can read about the details here: [http://valme.io/c/gettingstarted/faq/kqqqs/how-valme- works/](http://valme.io/c/gettingstarted/faq/kqqqs/how-valme-works/) and the genesis of the idea here: [http://valme.io/c/gettingstarted/faq/pkqqs/the- genesis-of-va...](http://valme.io/c/gettingstarted/faq/pkqqs/the-genesis-of- valme-io-what-were-you-thinking/). We would welcome your content and be happy to give you a free community called /SpaceIndustryNews (or whatever you want to call it). If you're interested, when you register, just indicate it's you.</comment>


Dynamic Hash Tables (1988) [pdf] - <AUTHOR> http://www.csd.uoc.gr/~hy460/pdf/Dynamic%20Hash%20Tables.pdf <comment><USER2> Hash tables for me were not just a data structure, I had some form of love for this way of organizing data. Can't forget the articles in the Dr. Dobb's issues about the new hashing schema, or how the new processors caches + access locality could change the game and so forth. But at this point, in 2018, I believe that hash tables should be _rarely used_.

Take Redis for instance. I used an hash table to start. Very early in the project I discovered that people were going to use it to store large amounts of data and rehashing times were a too big price to pay, so let's switch to an incremental rehashing schema, with all the complexity. Then there was to implement some form of iteration (see the Redis *SCAN family of commands). So let's fight against the complexity of an incrementally rehashing hash table in the context of a stateless cursor iterator. and so forth.

Basically a decent implementation of hash tables end being slower and more complex to handle than a good radix tree implementation (not to implement, radix trees when full featured are a nightmare to get right, if you have a stateful iterator). So once you implement a good radix tree (check for instance the "rax.c" file inside Redis source code, or simply [https://github.com/antirez/rax](https://github.com/antirez/rax)), you start to see that, hey! you have all the advantages of an hash table, but it's faster, the key space is sorted, you can iterate it in many ways, and the memory usage is much smaller.

So I'm not sure at this point, other than "the simplest dictionary data structure I can implement just recalling from memory", if there are great applications for in-memory hash tables as data structures. They are perhaps starting to be more interesting for disk applications.

For all my new projects I imagine myself just copying rax.[ch] and use it, unless there is some very odd reason why an hash table will be preferable.

<comment><USER3> The issues you give make sense when your datastructure grows very large or contains hash-unfriendly data, but it seems a plain hash table would still be appropriate in day-to-day scenarios. A simple int→int mapping is very fast in a hash table, and even string keyed hash tables are near unbeatable if you can reliably cache the hashes. The cases Radix trees win seem fairly small, as do the times you need incremental resizing.</comment></comment>


Show HN: Findmelike – Bayesian visual search for art - <AUTHOR> http://findmelike.com

<comment><USER2> Some observations from 6 testruns:

\- works good when i "like" with a very broad category (i.e. click on all icons, landscape/city, maps, people - regardless whether i actually like the picture to hang on the wall or not)

\- sometimes shows repeated images

\- if a category has not enough pictures in it to show, it doesnt work (synthetic images / pop art)

\- robbie williams and elvis presley portrait appear in result even when i liked landscape only, likewise neuschwanstein and beach oilpainting appear when i liked people portraits

for a poster buying decision i would enter "epic landscape", or "elvis presley" or "menger sponge render" into a textsearchengine and the result would be much more precise to what i actually like to see and much faster.

I see two usecases regarding buying a poster:

1\. i am a robot and need some poster out of a predefined set of broad categorys

2\. i am a tasteless human who enjoys klicking like and who needs to hide a hole in the wall with some semi-random image.

So my main problem with using this for a likeable-image decision is the constant collision of what the picture actually contains for me as a human to read into, and what the pixelbased train algo wants me to do (which i am unsure of what criteria it has).

But all the poster-buy-stuff application aside this is really interesting and for my understanding a difficult problem - nice work!

<comment><AUTHOR> Thanks for your comments.

We try to respect the uncertainty in the calculation of preferences. For instance, if you click a blue Elvis poster, we don't know if it because you like blue or Elvis, hence we end up showing some items that may be far from what you are looking for.

That being said, there is without doubt room for improvement and we got a lot of data to help with that today. In the Bayesian lingo, this is all about fine-tuning the priors.

One of this things we are excited about is the use case where the user knows what they want, but don't know the word for it. For instance it may turn out that I may like Expressionism (this is in fact true) but I don't know the word for that.

If you know that you want an Elvis poster, there isn't much point in using Findmelike right now. I think it would be _very_ cool to have both a text search box where you could enter what you know, and then get the Findmelike visual choice search on the matching items to narrow those down aesthetically.

<comment><USER2> yes, it is also likely that just my personal preferences are somewhat incompatible to this procedure, as i cannot imagine wanting something diffuse i have not even a general description for.

The mixture with a text input as basis for a visual choice sounds good. Also it could be nice if the orientation and aspect ratio of the liked images would be taken into account.

</comment></comment></comment><comment><USER3> I think this is awesome! However for me then most interesting thing is the tech behind it. Having worked in the same office as the team behind this and been to a few talks that Tom's given, here are a few things that HN might find interesting.

* Built by the same guy behind BayesHive: [https://bayeshive.com/](https://bayeshive.com/)

* An example of probabilistic functional programming in the wild. (This let's you build programs where the variables are probability distributions.)

* Good example of something built in Haskell that really speaks to the strenghts of the language!

Maybe Tom could give us a brief synopsis of how this was built and how it works?

<comment><AUTHOR> Thanks Ben.

On the programming side:

* 100% Haskell. Even our post-install script in the packages we build for the server are in Haskell.

* Use Spock and postgresql-simple

* 95% of functionality is in a library which is written in Nice Haskell - e.g. all functions are total, type safety where it makes sense.

* Library consists of data types, pure functions, and functions that live in a DB monad. All code is decoupled from the request-response server implementation.

* Front-end in AngularJS

On the statistics/learning side:

* We apply Bayes' theorem every time you press that green "Next" button. There is a statistical model for your choices based on your ultimate preferences, which we estimate.

* Lots of tricks to bring this inference down to 50ms on a modest CPU and to maximise information yield from user interaction.

More examples of this choice paradigm coming in the next few weeks.

</comment></comment><comment><USER4> Really impressive, and I really liked it.

The search narrowed down pretty quickly to working out that I liked Kandinsky and Klimt. This is awesome accurate on the one hand, but annoying on the other hand. If I wanted to know which artists I like I'd just remember it. :-)

That's just me being "funny". It did bring up some nice pictures that I didn't know.

</comment><comment><USER5> Love this tool and think it starts to get really interesting when you think of other applications beyond posters.

</comment><comment><USER6> interesting idea but what others dont seem to talk about is the ui, small changes could give you big improvements i think. like the if you hoover outside of the original grid then it changes to the poster under it and not only if you leave the closeup box which has a lot of empty space.

</comment><comment><USER7> Very nice indeed, found something to hang in my living room ;) Nothing to add more, I'm just impressed.

</comment><comment><USER8> The demo does not appear to do anything. I click on a poster, and a tick appears and that's it.

<comment><AUTHOR> Sorry if this wasn't clear. After clicking a poster and the tick appear, click the green "Next" button to see posters like the ones you have clicked in the first place.

<comment><USER8> I assumed Next just showed another page of results. Maybe you should popup the next button only after the user has clicked on a poster? Also, after I clicked next, I got what appeared to be unrelated posters which is what made me think I was looking another page of random results.

<comment><AUTHOR> Thanks for your feedback and your suggestion. Findmelike obviously didn't work so well in this case - we should be able to offer more accurate recommendations by refining our model based on the data we have obtained today. Also, we clearly have some UX work to do. Our mobile experience is not very convincing.</comment></comment></comment></comment>


Russian Top Secret Hypersonic Glider Can Penetrate Any Missile Defense - <AUTHOR> http://sputniknews.com/politics/20160611/1041185729/russia-hypersonic-glider.html <comment><USER2> Sputnik is the new Pravda or Russia Today. Worth taking anything it says with a pinch of salt.</comment>


Martin Shkreli indictment [pdf] - <AUTHOR> http://www.bloomberglaw.com/public/desktop/document/USA_v_Shkreli_et_al_Docket_No_115cr00637_EDNY_Dec_14_2015_Court_D/1?1450368872 <comment><USER2> My first reaction to his arrest was joy and then I saw comments about him getting "beat up in jail" to put it lightly.

People who say those kinds of things are no better than him. Possibly worse.

The solution to dealing with people like him is to be able to separate them from society or fix the system so it can no longer be exploited so "easily".

He may have hurt a lot of people but it's been through proxy as far as we know. Like Drone strikes, if you can't see the damage you're doing you can't feel guilty about it.

Like Morgan on the Walking Dead. I do believe Martin is a good guy on the wrong path.

It's easy to come together to have shared hatred for this guy and it's hard to realize

I can do better as a human being with empathy towards someone who is broken; sad and probably doesn't understand why people hate him.

He's just being "successful" as it was always defined to him.

Like the Boston Bomber. Getting "Revenge" does not stop the perpetual cycle violence and misbehavior.

The Wolf of Wall Street was a glorification of this type of behavior and a lot of people saw Jordan in that movie as a "Hero"

<comment> FLUX-YOU >Like Morgan on the Walking Dead. I do believe Martin is a good guy on the wrong path.

Not sure how you can defend that with this floating around.

        I'm definitely the real fucking deal. This
        is not a fucking act. I threatened that
        fucking guy and his fucking kids because
        he fucking took $3 million from me and
        he ended up paying me back. He called my
        bluff. He said, "You're not fucking going to
        go after me." [I said] "Yes I motherfucking
        will." I had two guys parked outside of
        his house for six months watching his every
        fucking move. I can get down. I don't think
        RZA knows that. I think he thinks I'm
        some powder puff white guy CEO that's
        got too much money. No. No, no, no.

[http://mic.com/articles/125657/turing-ceo-martin-shkreli- wan...](http://mic.com/articles/125657/turing-ceo-martin-shkreli-wanted-to- make-former-colleague-and-family-homeless)

[http://hiphopdx.com/interviews/id.2825/title.martin- shkreli-...](http://hiphopdx.com/interviews/id.2825/title.martin-shkreli- plans-to-bail-out-bobby-shmurda)

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

<comment><USER3> I don't know, I take that as a nerdy white dude who desperately seeks attention trying to impress the hip hop heads out there (that kind of talk is extremely common in the rap game).

<comment><USER4> I disagree with this form of dismissal as a rule.

If someone says something and then says "it was a joke", "it was a game", "I was just making a point", that doesn't cancel out the words and their impact - social atmosphere is not an intellectually pristine environment. You will change the atmosphere by yelling "fire" in a crowded theater and once it's done, there is no going back.

Likewise, if we dismiss someone's statement because "it was attention seeking", "they didn't really mean it", "something was misunderstood", "it's just part of the culture", that _also_ doesn't cancel it out.

There are plenty of young, impressionable folks who latch on to ideas unthinkingly because they cannot take anything seriously at their age and level of maturity. But that is not usually the case with a 32-year-old adult like Shkreli, or people in hiphop culture, or people in actual street gangs.

Posturing language exists to make a claim to credibility. It serves a real purpose and is used in an instrumental way, for the purpose of conducting business on the terms of those who use it. The people who exploit this language the best contain in their personality some particular combination of motivation and lack of restraint, enabling their threats to be real to some degree.

Shkreli already displays such a personality among multiple facets. There is no reason to deny him the possibility of simply being a bad human being who is in need of careful monitoring by society.

<comment><USER5> >>> "You will change the atmosphere by yelling "fire" in a crowded theater and once it's done, there is no going back."

>>> "Posturing language exists to make a claim to credibility. It serves a real purpose and is used in an instrumental way, for the purpose of conducting business on the terms of those who use it."

>>> "enabling their threats to be real to some degree."

>>> "There is no reason to deny him the possibility of simply being a bad human being who is in need of careful monitoring by society."

Do you realize what you're advocating here? Also, referencing "fire in a crowded theater" is usually looked upon as a canary for those who don't know what they're talking about in regards to free speech

<comment><USER6> I don't think I'm following, other than the implication that chipsy is ignorant about free speech. For the sake of discussion, why not spell out your concerns?

</comment></comment></comment></comment></comment></comment><comment><USER7> > On or about December 2, 2010, Investor 1 [...] asked SHKRELI in an email > about, inter alia, the fund's assets under management and the names of its > independent auditor and fund administrator. SHKRELI told Investor 1 that > MSMB Capital had $35 million in assets under management and that the fund's > independent auditor and administrator were Rothstein, Kass & Company, P.C. > and NAV Consulting Inc., respectively. At the time of this representation, > MSMB Capital did not have an independent auditor or administrator, and > SHKRELI had lost through trading the approximately $700,000 that had been > invested by the four Capital Limited Partners. _In fact, as of November 30, > 2010, the value of assets in MSMB Capital 's bank and brokerage accounts > totaled approximately $700._

<comment><USER8> I found it funnier how they tried to short sell $1M of stock and somehow got $7M in the hole. Must have been some leverage on that deal :v

<comment><USER9> Actually that is very "easy" to do, first you short sell some stock (naked short) for $1M, then the stocks value goes up by $8M. You are asked to cover your short and even after your $1M you are still left holding $7M in liabilities.

<comment><USER10> This is incorrect. You can't talk about absolute $8mill gain without talking about the total market cap (total value) of the stock. What would have happened that the company its not increase by $8mill but increase by 8 times the current value which is more possible to happen for small cap stocks.

<comment><USER11> If I sell something for $50 million and need to spend $58 million to cover, I'm down $8 million. There's no need for an 8x increase in valuation.

<comment><USER10> Yes agreed with your example. The total loss in your example is only 16%. In the example provided above he starts with $1mill and has a loss of $7 mill. Thats a 700% loss.

</comment></comment></comment></comment></comment></comment><comment><USER12> Seriously disappointing news.

Shkreli seemed like such an obvious troll in how he defended his price gouging by saying that a CEO's role is to maximize profit for the benefit of shareholders...and yet did so in such an unnecessarily obnoxious way that if he truly were the uber-capitalist, he would know that bragging and drawing attention to what an asshole you are does _not_ achieve the true capitalist goal. I would've bet money that in a year, he would reveal that his act was just a trolling piece of noble performance art to raise awareness of how evil corporations could be.

I'm holding out hope that getting arrested and indicted is still all part of his greater plan, though if so, it's a bit more elaborate than it needs to be, IMHO :)

<comment><USER13> So, if not a troll / performance artist, what is he then? Just a very stupid person with a bloated ego? How does someone so stupid make it to CEO of a pharmaceutical company at 32?

<comment><USER14> It seems that his intelligence was undermined by the size of his ego... and he's certainly not the first successful person to fall in that trap

<comment><USER15> He should stick to building self driving cars to spite musk.

</comment></comment></comment></comment><comment><USER16> There was a lawsuit a little while back [August], Retrophin, Inc. v. Shkreli, and reading the complaint it seems to be basically a litany of fraud, so wouldn't be surprised if these charges had a bunch of overlap with the earlier lawsuit -- although I haven't yet read the indictment.

[http://www.bloomberg.com/news/articles/2015-08-17/retrophin-...](http://www.bloomberg.com/news/articles/2015-08-17/retrophin- sues-founder-shkreli-for-65-million-in-u-s-court)

PDF of complaint: [http://www.plainsite.org/dockets/download.html?id=214847399&...](http://www.plainsite.org/dockets/download.html?id=214847399&z=82042533) from: [http://www.plainsite.org/dockets/2mxis2kze/new-york- southern...](http://www.plainsite.org/dockets/2mxis2kze/new-york-southern- district-court/retrophin-inc-v-shkreli/)

Edit:

The Retrophin complaint also contains more detail about what happend with Merril Lynch:

 _24\. Shkreli also had to contend with Merrill Lynch, which had sued him and MSMB Capital in connection with the Orex Trade (the "Merrill Lynch Arbitration"). Shkreli and MSMB Capital had entered into a settlement agreement with Merrill Lynch that required Shkreli and MSMB Capital to execute confessions of judgment in favor of Merrill Lynch. The confessions of judgment would not be filed if Shkreli and MSMB Capital timely paid the agreedupon settlement amount. Shkreli funded the Merrill Lynch settlement – and avoided the filing of the confessions of judgment – by causing a $900,000 investment in Retrophin equity securities made by MSMB Healthcare to be recharacterized as a "loan," causing the "loan" to be repaid with interest, and using the "loan" proceeds together with other money taken from Retrophin to pay Merrill Lynch. See generally ¶¶47-58, infra._

</comment><comment><USER17> I hope the investigation has been ongoing and didn't start as the result of political pressure.

Edit: No need to hope anymore. Grand jury started in January and investigations ongoing since 2012.

<comment><USER18> By reading the filing, the investigation is years old.

<comment><USER19> Going to guess that pissing off too many powerful people can also move you to the front of the list.

</comment></comment></comment><comment><USER20> What I'm curious is how this affects the Wu Tang Clan's album he bought?

[http://www.nytimes.com/2015/12/10/business/media/martin- shkr...](http://www.nytimes.com/2015/12/10/business/media/martin-shkreli-wu- tang-clan-album.html)

<comment><USER21> Someone filed a FOIA with the FBI to try to get them to release it: [https://twitter.com/wisemana/status/677510714236510209](https://twitter.com/wisemana/status/677510714236510209)

Seems like it's unlikely that you can just FOIA arbitrary data from a CD or hard drive that's been seized during an investigation though.

<comment><USER22> Sadly they haven't got it: [https://twitter.com/NewYorkFBI/status/677597263540191232](https://twitter.com/NewYorkFBI/status/677597263540191232)

<comment><USER23> The request was invalid from the start and OP probably knows it.

FOIA is not used to obtain information contained _in_ the seized material, but information that arose during the investigation. If for some reason, the information created in the investigation contained the actual recording from the album, then you could at least theoretically ask for that information. If not, then there was no information to ask for in the first place.

 _What can I ask for under the FOIA?

A FOIA request can be made for any agency record. You can also specify the format in which you wish to receive the records (for example, printed or electronic form). The FOIA does not require agencies to create new records or to conduct research, analyze data, or answer questions when responding to requests._

</comment></comment></comment></comment><comment><USER24> I'm very conflicted:

1) "Innocent until proven guilty" and "wow, that timing sure is convenient".

2) LOL. _grabs a bucket of popcorn_

<comment><USER25> I am the only one hoping the judge offers bail, then raises it 5000% over the norm?

<comment><USER26> No sense giving the defense any more reasons for appeal. Whether the guy is a scumbag or not, whether he has a lot of money or not, the criminal justice system should not be imposing undue burden or punishment based on public opinion regarding a matter that isn't even relevant to the case.

I won't lose any sleep when this guy goes to prison for a long time, but no sense doing nonsense that will only mildly inconvenience him and give potential grounds for appeal.

<comment><USER27> any chance he doesn't end up in prison, though?

I might be naive, but I'm under the impression that the book doesn't get thrown at white-collar criminals in the US.

what are the odds he just ends up on probation?

<comment><USER26> I don't know any of the specifics of the case and IANAL so I couldn't say. My lay understanding is that this is a pretty straight-forward case and he will see the inside of a jail cell.

Personally, I think that impression (which is popular) is largely because A) white-collar criminals can typically afford better representation than someone e.g. accused of armed robbery; B) we're much more likely to hear about someone who embezzled $30 million getting off with a slap on the wrist than we are to hear about someone who broke into an empty apartment building getting a similarly light sentence.

<comment><USER28> Also, armed robbery is often much easier to prove than more complex securities fraud.

</comment></comment></comment></comment></comment></comment><comment><USER29> I watched his stream on Twitch about a month ago and he came across as a nice guy. Viewers were asking him for career path, post-secondary education, and bio-tech advice. He was responding to questions politely and seemed to be pretty chill.

From what the media reports on him and what I saw on Twitch, seems as though he may have a bit of a Jekyll-Hyde type personality.

<comment><USER30> Here are all his live streams. Half of them seem to be investing lessons.

All videos: [https://www.youtube.com/channel/UC8gjB1PSXv_oAUSAQ16S0fA/vid...](https://www.youtube.com/channel/UC8gjB1PSXv_oAUSAQ16S0fA/videos)

Example investing lesson: [https://www.youtube.com/watch?v=xeKinQ7t-xU&t=58m29s](https://www.youtube.com/watch?v=xeKinQ7t-xU&t=58m29s)

Edit: Not sure if these include videos/recordings from Twitch.

</comment></comment><comment><USER31> He was too loud about it and it was good to see how messed up the pricing game is in pharma from it. It brought tons of attention to it.

They want to sweep him under the rug and make everyone believe this is fixing something. This arrest is akin to Martha Stewart getting one of the few indictments from insider trading after events like Enron went down.

It is a show, it is a game, he played it too loudly. He became the public fall guy show piece in my opinion. Going after him for a multi-year SEC investigation right when he made another big price change? Too much attention was brought to drug pricing and controls, and they had something on him.

</comment><comment><USER32> Interesting that the crime which was "serious" enough to motivate law enforcement was theft of capital, NOT drug price gouging. It had nothing to do with Daraprim. Of course, Mr. Shkreli's recent popularity in the headlines _may_ have greased the wheels of this investigation a bit.

 _Update_ : As has been pointed out, this comes as no surprise since this kind of price gouging is perfectly legal.

<comment><USER33> As it stands, there's no law against price gouging. As morally questionable as his pricing is, there's nothing illegal about it. "Being a dick" isn't a criminal offense. Yet.

<comment> lloyd-christmas Hopefully it never is. One person's dick may have another person's respect. umm... figuratively.

</comment></comment></comment><comment><USER34> Isn't Martin doing exactly what the rest of the pharma industrial complex is doing - extracting money from insurance companies by working the healthcare system? You can't personify the pharma industrial complex, Pfizer doesn't have a human face or name, but Martin does, so we direct our hatred of the complex at him. Am I wrong? Misplaced hatred does nobody any good, and none of the social media commentary I've seen has expressed a nuanced understanding of why singling out Martin is justified.

<comment><USER35> Did you bother to read the indictment? If you had, you would realize that he's not being arrested for price-gouging. That bullshit's still legal.

He's been arrested for securities fraud. He didn't get in trouble for stealing from the sick and needy, he got in trouble for stealing from the rich and powerful.

</comment></comment><comment><USER36> I know everybody is happy to see Martin in Jail. (I'm indifferent)

It makes you feel good, you feel justice has been served.

But let me give a harsh dose of reality, if he is going to court/jail, shouldn't most of the Wall St. bankers be in jail.

Including every bodies favorite banker John Corzine. [http://www.newsweek.com/stalking-jon- corzine-317733](http://www.newsweek.com/stalking-jon-corzine-317733)

So before you feel good about feeling good, let's not forget that many bankers walk free in society and this is more of click bait story, just saying.

</comment><comment><USER37> Honest question: why is this of interest to HN outside of schadenfreude?

<comment><USER38> According to Wikipedia:

"In September 2015, Shkreli received widespread criticism when Turing obtained the manufacturing license for Daraprim, and raised its price by 5,500 percent (from $13.50 to $750 per tablet)."

</comment></comment><comment><USER39> Cynical me has to wonder if this has less to do with stealing and more to do with getting the plebs riled up to the point they start wanting to shine a light on the whole ecosystem. Powerful people in government and industry are... well, not the kind of people who take lightly to having their loot threatened.

Note to self: if you ever take up stealing as a primary business, do it quietly and don't attract attention to your fellows.

</comment><comment><USER40> Posted earlier with a slightly easier-to-digest summary at [https://news.ycombinator.com/item?id=10753102](https://news.ycombinator.com/item?id=10753102)

In short, he was arrested for securities fraud. This isn't related to his price-hiking antics, rather it involves his work running pharmaceutical companies and lying to investors.

</comment><comment><USER41> For those who need it translated from legal, I found this article which helps explain it a more concise way.

[http://www.reuters.com/article/us-usa-crime-shkreli- idUSKBN0...](http://www.reuters.com/article/us-usa-crime-shkreli- idUSKBN0U01IM20151217)

</comment><comment><USER42> While I can't argue the indictment is a bad thing, I think at best it helps point out that, as long as you're not "too big", government is more than happy to go after you.

</comment><comment><USER43> Am I the only one who thinks that this guy needs psychiatric attention, not jail? Every time i saw an interview conducted with this man he seemed like a complete psychopath.

<comment><USER44> Prison is where many (most?) psychiatric patents get "treatment" these days.

</comment></comment><comment><USER45> When they indict your lawyer too you know you really fucked up.

</comment><comment><USER46> When dealing with sociopaths, you have think of them like diseases and not even begin to attempt to relate to them in human terms. Saying "I'm glad that Skreli went to jail" should be stated with the the same joy or sense of justice as saying "I'm glad Ebola was contained." Saying something like "I hope Ebola learned their lesson, hahaha" shows that you don't understand Ebola. There's a lot of wealthy sociopaths out there. I hope this story calls attention to this and raises a bit of "sociopathic awareness"

<comment><USER47> >When dealing with sociopaths, you have think of them like diseases and not even begin to attempt to relate to them in human terms.

I personally believe you should _never_ dehumanize people, no matter how bad they are. Once you write off certain people as non-human it becomes much too easy to commit atrocities.

<comment><USER46> If you're the victim of a sociopath, it's easier to sleep at night thinking that what happened was just some accident of nature. To accept the alternative, that another "human being" did what they did for no other reason than "because they could" is a recipe for a lot of suppressed internal rage.

</comment></comment></comment><comment><USER48> Add a [PDF] tag?

<comment><USER49> This is the PDF [http://www.bloomberglaw.com/iframe/document/X1Q6NI1EDLO2/dow...](http://www.bloomberglaw.com/iframe/document/X1Q6NI1EDLO2/download?blaw_go=false&bulk_ordering=false&display_context=http&doc_container=content_document&imagename=1-1.pdf&rails=yes&root_url=http%3A%2F%2Fwww.bloomberglaw.com%2F&show_entries_filter=false&summary=yes&web_base_url=%2Fdocument)

</comment></comment><comment><USER50> Funny thing is, Shkreli has more in common with a startup founder-CEO than with Bernie Madoff.

</comment><comment><USER51> The indictment makes it obvious that this started long before Daraprim was in the news. I'd say this isn't politically motivated, at least not for that reason alone.

<comment><USER52> They were investigating him but he was largely unknown outside of some financial and biotech circles. After Daraprim and the subsequent public outrage, not to mention his grating "bro" public persona, he became one of the most hated men in America. They were going to nail him for _something_ as a result of that investigation.

Remember, they got Al Capone in the 1930s for tax evasion - not all the other things he was certainly guilty of. Several other gangsters were convicted of things like mail fraud.

If you're guilty, or even just under investigation, don't paint a target on your back. A smart person would know to lay low. Schkreli ... didn't.

<comment><USER53> Charging someone for what you can prove != 'political motivation.'

<comment><USER52> Correct, but who's to say where the investigation would have stopped if they didn't uncover anything at first? If he wasn't so publicly reviled, it may have been dropped if wrongdoing wasn't immediately uncovered. But because he was so out there in public and so publicly reviled, he may have insured that investigators kept looking at him until they _did_ find something they could make stick.

I would note that I have no knowledge of the investigation beyond what's being reported (and only a cursory knowledge of that). I could be totally wrong. Maybe these charges were immediately obvious to investigators and it's just taken them almost a year to get their ducks in a row. I'm just theorizing here based on some historical knowledge of famous criminals and how they were eventually brought down (see my comments above on gangsters in the 20s and 30s).

</comment></comment></comment></comment><comment><USER54> Does the gleeful reaction to this bother anyone else? It's understandable in a way, but it grosses me out.

<comment><USER55> read up on sociopathy, you'll likely change your mind.

</comment></comment><comment><USER56> The ones here being happy at this guy being indicted are the ones that defend economic libertarianism later for the sole reason that it allows them to pay less taxes, regardless of what's in the public interest. Disgustingly selfish.

<comment><USER57> What is the basis for this comment? I'm sure that a lot of people who are "happy at this guy being indicted" are not economic libertarians.

Also, who defends economic libertarianism "for the sole reason that it allows them to pay less taxes, regardless of what's in the public interest"? I know that's a favorite caricature of libertarians that's dear to those who don't agree with libertarianism, but that doesn't mean it's true.

Not that your comment is particularly worth of discussion, but you'd think there would better reasoning behind calling out a broad category of commenters out as being "disgustingly selfish".

</comment></comment><comment><USER58> good. let the bastard rot.</comment>


Defunctionalize the Continuation - <AUTHOR> http://www.pathsensitive.com/2019/07/the-best-refactoring-youve-never-heard.html <comment><USER2> Defunctionalisation is a beautifully powerful technique. I've found it fits really neatly with the initial algebra pattern of data processing as repeated conversion of a "description" structure into more useful "implementation" structures.

In particular, my most recent project at work consisted of a system that takes a description of a computation from the user and successively performs optimisation passes on the description until we get a description of something that could run really efficiently, and then evaluating that efficient description into an actual computation that you really can run. If the successively-more-optimised descriptions are all defunctionalised to the greatest possible extent (in effect, deferring any concrete implementation details for as long as possible), you have much broader scope to optimise during later passes (since all the information "remains visible", not hidden away in function calls).

Moreover, this approach is extremely testable: initial algebras are built to be re-interpreted, so you can write reference evaluators for them; while defunctionalisation gives you a way of checking output without needing to run any pesky programs.

<comment><USER3> That's super interesting. May I ask what domain you're working in, where this sort of problem arises?

<comment><USER2> Dev at a quant finance research shop. I would love to write more about it, but I've signed some very strict paperwork :( broadly, it's the core of a data analytics system, taking a bunch of quant descriptions of data analysis and "compiling" them into highly efficient minimal-overhead forms that can run on market data in realtime and in sim. Very fun project!

</comment></comment></comment><comment><USER4> Kudos for providing a nicely-formatted transcript of this talk and not forcing us to watch a video. Learning about defunctionalization (and lambda lifting, which is closely related) was how I first managed to understand what this "first-class functions" language feature/pattern was all about, and why it could be useful. It's something that should be generally taught as part of any introduction to functional programming.

</comment><comment><USER5> Reminded me of [https://en.wikipedia.org/wiki/Immanentize_the_eschaton](https://en.wikipedia.org/wiki/Immanentize_the_eschaton)

<comment><USER6> Reminded me of [https://www.youtube.com/watch?v=l4nOHdUntyM](https://www.youtube.com/watch?v=l4nOHdUntyM)

        Ow, we want the funk (we're gonna turn this mother out)
        Give up the funk
        Ow, we need the funk (we're gonna turn this mother out)
        We gotta have that funk

</comment></comment><comment><USER7> Note that you don't have to defunctionalize to be serializable or perform other manipulations. Tagless final style extensible-interpreter techniques allows direct-style programs to be serialized and manipulated.

<comment><USER8> How so? Tagless final style usually requires a monad instance; how can you describe the result of a call to fmap in a serializable way without executing it?

<comment><USER9> Presumably you execute it with an instance that does serialization instead of interpretation.

<comment><USER8> But you can't serialize a function - that's the whole point of the post.

<comment><USER10> But if you're writing an interpreter, you _can_ serialize the result of 'evaluating' the structure of your 'function' made out of components that are being interpreted by your code, thus turning your 'function' (when evaluated with one set of code) into a data structure (when evaluated by something that serializes each of the components making up your function)

<comment><USER8> At that point you've already evaluated it and can't recover the original program - you're serializing the result of interpretation, not the computation to be interpreted. Since that computation might contain arbitrary functions, the only way to serialize that would be if you had a way of serializing arbitrary functions.

</comment></comment></comment></comment></comment></comment><comment><USER11> Jimmy's transcripts are great. I have been reading through his blog in preparation for a podcast interview and at first, I was a bit skeptical that a transcript could replace a talk but now I find I am liking the format.

</comment><comment><USER12> Over the years there have been countless times when I had to convert an easy to understand recursive program into a messy state machine or a heap of callbacks, for one reason or the other.

I always did these conversions in an ad-hoc fashion but this approach based on CPS + defunctionalization is definitely much clearer and easier on the brain!

</comment><comment><USER13> I'm having trouble working through the recursion -> iteration process with functions that return a value. For instance, what if instead of printing the tree, we were summing the tree, as in a fibonacci sequence?

recursive:

      def fib(n):
          n = min(n, 0)
          if n > 1:
              return fib(n-1) + fib(n-2)
          else:
              return n

CPS:

      def fib(n, kont):
          n = min(n, 0)
          if n > 1:
              return fib(n - 1, lambda x: x + fib(n - 2, kont))
          else:
              return n

but then I get stuck at defunctionalizing. I can't figure out where the logic of combining values from the reduction step should go, or how to properly structure the continuation data structure.

      # BROKEN -- where do I combine the values?

      def fib(n, kont):
          n = min(n, 0)
          if n > 1:
              return fib(n-1, {"val": n, "next": kont})
          else:
              return kapply(kont, n)

      def kapply(kont, n):
          if kont: return fib(kont["val"] - 2, kont["next"])
          return n

</comment><comment><USER14> This sounds really interesting, but I'm getting a bit confused trying to apply it to a simpler problem. Say I start with this recursive function to filter a list:

      def my_filter_recursive(l, f):
          if l:
              x, *xs = l
              if f(x):
                  return [x] + my_filter_recursive(xs, f)
              else:
                  return my_filter_recursive(xs, f)
          else:
              return []

In Continuation Passing Style it becomes:

      def my_filter_cps(l, f, kont):
          if l:
              x, *xs = l
              if f(x):
                  my_filter_cps(xs, f, lambda y: kont([x] + y))
              else:
                  my_filter_cps(xs, f, lambda y: kont(y))
          else:
              kont([])

Then I think with defunctionalisation it becomes:

      def my_filter_defun(l, f, kont):
          if l:
              x, *xs = l
              if f(x):
                  my_filter_defun(xs, f, KontAdd(x, kont))
              else:
                  my_filter_defun(xs, f, KontSkip(kont))
          else:
              kont.apply([])

      class KontAdd:
          def __init__(self, var, kont):
              self.var = var
              self.kont = kont
          def apply(self, acc):
              self.kont.apply([self.var] + acc)

      class KontSkip:
          def __init__(self, kont):
              self.kont = kont
          def apply(self, acc):
              self.kont.apply(acc)

      class KontPrint:
          def apply(self, acc):
              print(acc)

Is that right? It seems that we've basically just moved the recursion from one place to another.

<comment><USER15> Hello peconn,

This is right, although you could replace KontSkip(kont) with just kont. Defunctionalization does not just "move the recursion from one place to another." Rather, it doesn't change the recursion _at all_.

Also, your example is actually harder than the one in the talk, because it can involve an arbitrary amount of work after the last call to my_filter_recursive.

Like in the example in the talk, you still need merge the various calls to apply, and use tail-call elimination.

Merging:

        def apply(kont, acc):
            if isinstance(kont, KontAdd):
               apply(kont.kont, [kont.var] + acc)
            else:
               print(acc)

You will now actually need two levels of tail-call elimination because there are two recursions, rather than one as in the example in the talk. apply becomes this:

        def apply(kont, acc):
          while True:
                if isinstance(kont, KontAdd):
                   kont = kont.kont
                   acc = [kont.var] + acc
                else:
                   print(acc)
                   break

You can then inline this into my_filter_cps and do tail-call elimination again.

      def my_filter_defun(l, f, kont):
        while True:
          if l:
              x, *xs = l
              if f(x):
                  l = xs
                  kont = KontAdd(x, kont)
              else:
                  l = xs
          else:
            acc = []
            while True:
              if isinstance(kont, KontAdd):
                 kont = kont.kont
                 acc = [kont.var] + acc
              else:
                 print(acc)
                 break

<comment><USER16> One little beef with CPS (for an interpreter) is that use it cause a hit on performance. Defunctionalization could be use to improve on that?

</comment></comment></comment><comment><USER17> Very nice! I wrote a library (not long ago) for stackless recursion in Clojure, which uses core.async and the go macro to automatically turn recursive calls into defunctionalized continuations - no (structural) refactoring required! [1]

It's not as fast as a plain iterative version would be, though, and the article gave me some ideas to experiment with.

[1] [https://github.com/divs1210/xodarap/](https://github.com/divs1210/xodarap/)

</comment><comment><USER18> This is a very nice technique. I tried it for a couple of algorithms and while the author said that it a pretty mechanical to go from a recursive function to an iterative one, I think the non-mechanical work required to go from recursive to the CPS style is about the same as the work required to go directly from recursive to iterative. At least that was my experience.

</comment><comment><USER19> James is a fantastic person and an excellent teacher. Jimmy, if you're reading the comments, hello and thank you!

</comment><comment><USER20> If the old hacker news server in this example were to crash, wouldn't that mean they lost the context of their continuation)? Wouldn't this mean it is better to use the discrete data as the continuation (which they achieved by realizing all the continuations in code)?

</comment><comment><USER21> Thanks, I learned something new today.</comment>


Bespin Bookmarklet: edit code or other text on any page with a textarea - <AUTHOR> https://bespin.mozillalabs.com/bookmarklet/

<comment><USER2> Broken rather miserably everywhere I try it. It's always one or more of: the controls are mis-sized; the controls aren't even remotely in the correct locations; the text field is way too small; there's no submit button; the controls don't respond to clicks (especially the one that appears as the top- of-three on the bottom. language?).

Neat idea, would love it if it worked, and might be perfect if embedded, but as is? Fail.

(on Safari 5)

</comment><comment><USER3> I can't seem to get the Bespin Bookmarklet to work with the text box in hacker news comments' text box. I tried the same thing over at reddit and same situation. I can type text in the box but the submit button doesn't respond nor do the drop down menus. Attempted with latest versions of chrome and firefox. Disabled NoScript as well.

<comment><USER4> Same here.

</comment></comment><comment><USER5> Pretty slick. They seem already to be updating it (compared to their demo's display).

</comment><comment><USER6> i just tried to post this come using the bookmarklet (safari 5) but none of the controls seem to be responsive. #fail</comment>


The Movement to Break Up Facebook Has Begun - <AUTHOR> https://gizmodo.com/the-movement-to-break-up-facebook-has-begun-1826190338 <comment><USER2> Terrible idea.

You keep it unified because then you have a single entity to regulate. The problem with Facebook does not stem from a lack of market competition but rather its fundamental business model of allowing anyone to purchase ads.

If we are concerned about Facebook being used as a vector through which bad actors try to influence elections - which we should be - then we keep it unified and regulate it so that ad purchasers must be vetted and approved, especially if the content of their ads relates to politics.</comment>


Update on Creative Commons Licenses and "In Memoriam" Accounts - <AUTHOR> https://blog.flickr.net/en/2019/03/08/update-on-creative-commons-licenses-and-in-memoriam-accounts <comment><USER2> What's a good alternative to Flickr? Doesn't have to be free.

I use 500px but that's for my better shots, I liked having a place to put just about anything worth editing in LR and PS. I don't think the value is there for the price they want.</comment>


What's gone wrong with democracy - <AUTHOR> http://www.economist.com/news/essays/21596796-democracy-was-most-successful-political-idea-20th-century-why-has-it-run-trouble-and-what-can-be-do <comment><USER2> Well. That's the problem with democracy. Sometimes the ordinary people don't vote the way their betters intended them to. That doesn't necessarily mean democracy is broken. Just that sometimes the majority of the populace want things which are not very admirable.

<comment><USER3> From the same publication that wrote this about the Bilderberg meetings, surprisingly failing to mention their effect on 'democracy' around the world: [http://www.economist.com/node/17928993/](http://www.economist.com/node/17928993/)

And yup, not voting how the establishment and their media wants you to, is quite rightly an issue for them.

" The Economist is 50% owned by the English branch of the Rothschild family and by the Agnelli family through its holding company Exor." [https://en.wikipedia.org/wiki/The_Economist](https://en.wikipedia.org/wiki/The_Economist)</comment></comment>


Root Domain Support for Amazon S3 Website Hosting - <AUTHOR> http://www.allthingsdistributed.com/2012/12/root-domain-amazon-s3-website.html <comment><USER2> This is great news. Back when we were building DotSpots (now defunct, sadly), our website was built entirely in GWT. We weren't just serving a static site - we had the full functionality being run in GWT-compiled code. This meant that the majority of the site itself could be hosted from a static domain, and only the APIs behind the scenes needed to be running on our EC2 fleet. At least that was the idea.

We managed to get the majority of the static images and JS running off CloudFront back then, but were always stuck serving html from our EC2 boxes (a combination of what was available from AWS at the time, and the previous one- day minimum timeout of CloudFront). We put a lot of work into optimizing them so that they'd be super lightweight and could be served quickly. It was pretty fast considering that we weren't able to put all of the static-like files into S3/CloudFront.

Now that you can host the whole static bits of your domain through S3/CloudFront, I'd love to give this another shot with a future project. With strongly-named resources (ie: resource name == MD5) being served with one-year expiration times from Amazon's infrastructure, you could build a blazing fast dynamic site without having to spin up a single EC2 box.

Exciting!

</comment><comment><USER3> That's really awesome. Lately I've been a fan of a Static+API architecture where the site content is served static and dynamic content is loaded through an API call to api.mysite.com and bound using an MVVM. With caching set, static content is never re-requested and API calls are immediately made when a user loads a page. My server can be a simple event io platform like node, and can handle more requests because it's not building dynamic pages, just directly getting data from the db or memcache to serve back json. Unit testing is simplified because my tests are all integration tests against the same API my webpages use. I can write test scripts to create new users, login, run features and verify the JSON results. Basically use my site from the commandline if I want to, or provide 3rd party api support with no extra effort. I'm not a fan of rest urls mixing data with content requests so I use query params to specify the data to request in the api call. Like homework.com/assignment?id=324324 - when the page loads (immediately from cache) the javascript reads the id and makes the API call to get the content. Anyone else using this kind of design?

<comment><USER4> GETs are easy, what about POSTS? Unless you support CORS?

<comment><USER5> CORS is supported in most browsers today. Even IExplorer 8 has support for it. If you really want older browsers too, you can always fallback to flXHR.

</comment></comment></comment><comment><USER6> This is excellent news. S3 turns out to be an extremely inexpensive static hosting service, yet very scalable. Now I don't have to run Apache on an EC2 instance to host static files.

This would be great for client side JS apps that don't need any write-back to the server. Local storage is pretty much supported in all modern browsers.

</comment><comment><USER7> What is the uptime, being Amazon and all?

<comment><USER8> S3 is designed for 99.99% availability, and carries a service level agreement providing service credits if a customer's availability falls below 99.9%. See (<http://aws.amazon.com/s3-sla/>) for more info.

</comment></comment><comment><USER9> Finally!</comment>


Love on Campus - <AUTHOR> http://www.theamericanscholar.org/love-on-campus/ <comment><USER2> A bit romanticized, but a worthy read. The University is a very different place these days.</comment>


Localtunnel - Share localhost with anyone on the web. [ruby gem] - <AUTHOR> http://progrium.com/localtunnel?news=hnnaw

<comment><USER2> This was posted yesterday: [https://news.ycombinator.com/item?id=6080048](https://news.ycombinator.com/item?id=6080048)

</comment><comment><USER3> hahahahahaha</comment>


Canadian pilots no longer have to fly real aircraft to keep valid licences - <AUTHOR> http://www.theglobeandmail.com/news/politics/canadian-pilots-no-longer-have-to-fly-real-aircraft-to-keep-valid-licences/article32204718/ <comment><USER2> I built one of these certified simulators; they are not what you will find at most people's desks. We built a cave with a large number of 120Hz 1080 projectors custom modified to sync in tandem to shutter glasses, and used a medical device for sub-millimeter head position tracking. The cockpit was an actual, decommissioned helicopter with working interfaces.

It was an incredible experience to build and operate; I never did stick around for the final install, which was going to mount the cockpit onto a platform capable of rotating and lifting in a variety of crazy ways.

<comment><USER3> What is the purpose of the head position tracking? Did the aircraft you build the simulator for has some sort of advanced HUD that always shows correctly no matter the position of the pilot head??

<comment><USER2> So it would feel real; you could look out the side window, or shift your weight to look around trees or to get a better view down the side of the helicopter.

I work in VR now and honestly nothing comes close to the experience we built.

<comment><USER4> >I work in VR now and honestly nothing comes close to the experience we built.

This is an interesting statement, because in all the wide sphere of points where VR can be applied, it seems to me that the only place of any 'validity' or .. true social value .. (i.e. not gaming/entertainment) .. is in the realm of training for high-performance/life-critical operator scenarios.

Which is not to say that these things can/can not be gamified - but perhaps that the end result of such a stringent effort by society to apply VR technology to training and simulation of otherwise-life-threatening roles/responsibilities/duties is that it all becomes a bit of a game.

What I mean to say is, why is there such a gap between "work in VR" and "built serious simulator system", in your opinion?

<comment><USER5> > in all the wide sphere of points where VR can be applied, it seems to me > that the only place of any 'validity'... is in the realm of training for > high-performance/life-critical operator scenarios.

We're already seeing socially important applications outside of training. VR is being used as part of treatment for PTSD and phobia; it can provide a very believable experience of a traumatic stimulus in a safe environment. VR may prove to be a powerful tool for psychotherapists.

More broadly, I think we have underestimated the psychological significance of presence. Users respond to convincing VR experiences in a totally different way to other media. This difference seems to be relatively durable and does not fully diminish when the novelty wears off. Pilots in simulators experience real physiological stress, even when they are experienced simulator users.

How would the world change if most of us got our news through VR - if we felt that we were stood in Mosul or Aleppo, flinching at every bang, reflexively crouching down for safety?

>What I mean to say is, why is there such a gap between "work in VR" and "built serious simulator system", in your opinion?

There's a vast difference between a $2000 consumer system and a $2,000,000 simulator. A headset can't approach the fidelity of a real cockpit with real controls and instruments, mounted on a huge hydraulic motion rig. VR technology is constantly advancing, but there will always be a gap between an expensive single-purpose system and a cheap general-purpose system.

</comment></comment></comment></comment></comment><comment><USER6> It would be nice if we had either public driving simulators or classes that you could use to improve your driving and response to erratic other drivers. I suspect that the lack of this deliberate training is one reason why driving is much more dangerous than flying. Back when I owned a car, it seemed like all of the classes on driving marketed themselves as either:

1) A totally unchallenging formality that will satisfy the requirements for keeping your license.

2) Training for police to use a car as tactically while being shot at.

There didn't seem to be any middle ground for people who just felt like they'd like to reduce their chances of killing a cyclist.

I wonder if it would profitable to build an arcade machine and charge people to play a more immersive version of Crazy Taxi, GTA, or some prohibition bootlegger simulator.

<comment><USER7> Bridgestone's Winter Driving School comes to mind immediately, [http://winterdrive.com/](http://winterdrive.com/)

Fundamentally, I think most drivers view driving as just a thing they do, and give no thought to the possibility of improving. So having classes or simulators isn't going to help, because they wouldn't take advantage of them.

<comment><USER8> _So having classes or simulators isn 't going to help, because they wouldn't take advantage of them._

...unless it becomes a requirement for a license.

</comment></comment></comment><comment><USER9> This article is factually incorrect. Here's some glaring examples:

> United States and European Union, which still compel pilots to meet > stringent standards to keep their licences valid, including a requirement to > actually fly a plane.

Not true, at least not in the US. According to 14 CFR 61.56 (i) "A flight simulator or flight training device may be used to meet the flight review requirements of this section"

> There is a whole host of skills you don't exercise in a simulator

True, but the opposite is also true. I can think of number of scenarios that can be practiced in a sim but cannot be safely or legally practiced in aircraft. Example of such scenario: engine failure in instrument meteorological conditions.

> If you had a heart issue, would you go and see a heart surgeon that hadn't > operated in five years

I wonder if Mr. McConnell is aware that every single line pilot who files B787 or A380 today did all their training for that airframe and passed the rating test in a flight simulator.

The reality is all airline pilots train in flight sims these day. There is no practical way of doing that in actual aircraft. If one can do all their training and pass the license test in a sim why can't they do periodic flight review in a sim?

</comment><comment><USER10> Simulators are not the problem for renewal, they get increasingly better with time.

The problem is relying on automation instead of real piloting skills

I trust much more a pilot practicing manual flying in a simulator than doing real flying in "Children of Magenta" mode

<comment><USER11> For those like me who, though not a pilot, enjoy watching Aircrash Investigation and similar programs, and finds the investigations and findings inspiring/sobering/educational as a software engineer, and like me weren't aware of the "Children of [the] Magenta" phrase, this article and audio piece [1] looks a good place to start. The phrase was used in a 1997 presentation - available publicly [2] - by American Airlines captain Warren Van Der Burgh, who said that (quoting the article's summary of his words): "The industry has turned pilots into "Children of the Magenta" who are too dependent on the guiding magenta-colored lines on their screens." He makes his case with some very funny lines, too. Quite the humorist: "I got stuff to worry about, don't I. Heads up stuff. It's probably not a good time to be typing." [3] immediately precedes his explanation of the phrase.

[1] [http://99percentinvisible.org/episode/children-of-the- magent...](http://99percentinvisible.org/episode/children-of-the-magenta- automation-paradox-pt-1/)

[2] [https://youtu.be/pN41LvuSz10](https://youtu.be/pN41LvuSz10)

[3] [https://youtu.be/pN41LvuSz10?t=510](https://youtu.be/pN41LvuSz10?t=510)

<comment><USER12> It's an area of ongoing research as well, e.g. the Humans and Autonomy Lab at Duke. (Missy Cummings, who is the director of the lab, used to be a Navy fighter pilot.)

I expect we'll hear a lot more on this topic. Assuming you're at all skeptical about the timeframe for full automobile driving automation, it seems a certainty that we'll have a (significant) period when stuff works most of the time--until it doesn't. And, given that lots of people drive distracted today, what's it going to look like when the car can drive down the highway most of the time on its own?

</comment></comment></comment><comment><USER13> It seems to me that the #1 way to predict pilot performance in emergencies is whether the pilot has encountered the emergency before and lived. If so, running the pilot through the most scenarios possible in a given unit time would seem to be a good strategy to train pilots, and simulators would increase the rate of scenarios per unit time versus a real aircraft.

However, you can't get away from actually flying a plane. There's little things you don't practice in the simulator, like making sure you have your handheld VHF radio, checking for water in the fuel tanks, and how to balance cargo, that you'll never learn in front of a computer screen.

If it's anything like network administration, I'd say something like 20% real experience vs 80% simulated might be a good mix. People who favor just one or the other lack performance under adverse circumstances compared to admins who do both, I've noticed.

</comment><comment><USER14> I was under the impression that 95% of the time, the pilot sits in the cockpit doing nothing, other that watching the autopilot by a clear sunny day. Whereas in a simulator the pilot is busy practicing challenging environments.

I am not qualified to have an opinion on whether a pilot can do simulators only but intuitively, an hour of simulator seems to be worth more than one hour of real life flight.

<comment><USER15> American B2 bomber pilots practice 14+ hour long-endurance missions in simulators before they're ever allowed near a real ($2B+) aircraft

<comment><USER12> I suspect though that knowing you're being tested in a simulator, even if it is a boring long-endurance mission, could still affect how you think about it and approach it.

</comment></comment></comment><comment><USER16> Ah politics. It appears that this story is really about getting more funding for flight time for aviation inspectors.

From TFA:

> Many of Transport Canada's aviation inspectors, some of whom are licensed > pilots, are not able to keep their licences current because Conservative > spending cuts imposed in 2011 curtailed their ability to fly government > aircraft. He believes the department changed the rules to ensure federal > aviation inspectors maintain the proper credentials.

> A CFPA survey of licensed aviation inspectors, conducted in April, found > that about half have not been assigned flight training for more than a year > and one in 10 has not been assigned to flight training for up to 10 years or > more.

> "With the stroke of a pen, Transport Canada has devised a work-around so > their own pilots comply with Canadian Aviation Regulations," Mr. McConnell > said. "Aviation inspectors who are pilots are becoming like traffic cops > without a driver's licence. This situation undermines public safety and > inspectors' credibility with the industry they are supposed to oversee."

</comment><comment><USER17> Is CAE a major player among flight sim companies? Because in that case, there's clear economic incentive in making simulator training accepted.. first in Canada, with the hope that other countries will follow. Big company will get a good chance to export their product.

<comment><USER18> Yes they are. For military and commercial aircraft.

</comment></comment><comment><AUTHOR> Some relevant links:

[http://www.tc.gc.ca/media/documents/ca- publications/9-LRA-e....](http://www.tc.gc.ca/media/documents/ca- publications/9-LRA-e.pdf)

[http://www.rcinet.ca/en/2016/10/04/pilots-licence- simulator-...](http://www.rcinet.ca/en/2016/10/04/pilots-licence-simulator- fly-regulation-change/)

I would love it if a developer involved in Transport Canada approved simulator software could comment.

</comment><comment><USER19> My father is a flight instructor in New Zealand, he said simulator use there is credited towards yearly flying hours.

The only difference I can see between a modern simulator and the real thing is lack of consequence.

</comment><comment><USER20> Quoting Marc Garneau, the Transport Minister:

 _I am sure it has been done based on a serious look at what is important for our pilots to do._

Yeah, except fly a real plane to maintain that pilot's license.

</comment><comment><USER21> Simulators are great for training on emergency scenarios that can't easily or safely be done in a real airplane, or practicing and learning new avionics or systems but they shouldn't be a substitute for real flying experience. This is a bad decision.

<comment><USER3> As a pilot that is learning. Why can't a simulator recreate the real flying experience? Especially on this fly by wire aircrafts?

<comment><AUTHOR> Completely putting aside the question of the quality of the simulation of the aircraft and physics involved, one possible reason is that simulations can remove extreme emotions from the equation. The pilot _knows_ they won't die in the simulator if they make an error. (This can be both a positive and negative gain.)

To take it to the extreme, would you be willing to attempt landing a real 747 solo, having only ever flown using simulators?

<comment><USER22> I will be willing to do it. I won't be willing to be present in an aircraft while someone elae does it. Not because I am a pilot - just I am ok with dying from my own mistake.</comment></comment></comment></comment>


Study shows IE6 users have below average IQ (~80) - <AUTHOR> http://technolog.msnbc.msn.com/_news/2011/07/29/7196999-internet-explorer-6-users-have-low-iqs-study-says

<comment><USER2> Previous reports of this story:

<http://news.ycombinator.com/item?id=2818847> <\- This has all the comments

<http://news.ycombinator.com/item?id=2822935>

<http://news.ycombinator.com/item?id=2822162>

<http://news.ycombinator.com/item?id=2823776></comment>


Which language is best suited for communication with computer systems and AI - <AUTHOR> http://www.quora.com/Which-language-is-best-suited-for-communication-with-computer-systems-and-artificial-intelligence

<comment><USER2> All natural languages have their share of irregularities; I don't think there would be much to choose from between them. See Steve Pinker's _Words and Rules_ , then an introductory linguistics text on syntax to get a more systematic view. We never really notice the complexities of language until they are pointed out to us, because our minds are designed by evolution to handle (or generate, if you prefer) language. There are still many problems in formalizing even relatively straightforward syntax of everyday language.

<comment><AUTHOR> But still there is work going on and for most part scientists adopt English for that purpose. Though it is most widely spoken language but it is also most varied and irregular language because of its loose grammar and style.

</comment></comment><comment><USER3> That's a really interesting question. I remember one time when I actually started to design a new spoken language which could be understood by machines. Didn't get too far with that though.

<comment><AUTHOR> How was your approach with that? Can you elaborate.

<comment><USER3> I had some clear and systematic way as I recall, but it was so long time ago that I don't really remember what the idea was.</comment></comment></comment>