Can Open Source R&D reinvigorate Drug Research? - <AUTHOR> http://www.nature.com/nrd/journal/v5/n9/full/nrd2131.html

<comment><AUTHOR> Open source software grew out of the Free Software movement, which was modeled on the activities of scientists. Papers would be published in journals for everyone to read. It was free to teach a scientific theory to your students. Researchers built on each others' work.

Drug research is scientific research. The distribution of drugs is actually pretty cheap -- once you know the formula, you can usually make the drug rather inexpensively. It's the R&D that needs funding, and it's currently funded by proprietary drug companies much like Microsoft, Adobe etc. built THEIR software. But years later, IE still sucks and open source browsers have helped the world a lot. Our mobile phones all run WebKit. We are lucky that Netscape open sourced their codebase and formed Mozilla, which at the time was an precedented move. These days, Apple, Google and Facebook work with the open source community, whereas Microsoft is becoming more and more irrelevant. If they joined with the open source communities instead of hiding their code they would probably bounce back -- for example if they threw out their old rendering engine and based IE10 on WebKit.

Certainly patents and software help the old business models that rely on them (drug companies, newspapers, proprietary software companies). I think in software we have shown that over time, free information and community collaboration can produce better, more stable, more standards-compliant products. The question is, can we do this in other areas?

I would argue that we have to separate the distribution network (Apple distributing apps, etc.) and the R&D. The distribution networks have to compete on price, efficiency, ease of access, etc. But the R&D is not necessarily done by drug companies. What happened to all that money we raise in "find the cure" walkathons? Where does it go? A lot of the drug research is done in universities, where papers are published openly and freely. I expect the drug companies to fight open source research just like Microsoft fought open source. But at the end of the day, there has to be a good system in place to fund R&D as a community that SHARES knowledge with the world.

Don't get me wrong, clinical trials cost money, and dealing with the FDA costs money. But as far as innovation, there would be MORE innovation if people freely published the knowledge and built upon what others have done. You made a drug based on this gene sequence? I can make one that helps these gene sequences. That's the future, imho.

The surprising truth about what motivates us: <http://www.youtube.com/watch?v=u6XAPnuFjJc>

Smart people aren't just motivated by greed. Lots and lots of professors in university are motivated simply by making a difference in their field, and in their world. They want to make a breakthrough because they love their work. Sometimes they donate everything they get back to the university. Similarly, the kids who grew up with computers formed a hacker culture that loves to show off what they did to others. I think the first steps should be to foster that sort of "open source culture" among kids learning science in high school and college, and to provide the infrastructure for better online journals. When they finish grad school, they will often publish their research for free as a matter of helping the world. The drug companies won't be able to charge a huge markup on the drugs. The drugs would be manufactured at cost by the distribution networks (which are regulated by the government, of course, so no one slips a mickey in the drugs).

A great example of an open source drug is this "cure for cancer" discovered in Canada:

<http://www.youtube.com/watch?v=7LXH-TJYS5w>

it may very well cure cancer in lots of different people. DCA has already been produced for over 100 years and no one can patent it. Which is great for the public at large. Imagine people taking DCA after the FDA has certified it, and it being produced cheaply. Basically, I think that we are just starting to see the ways in which a patent-less and copyright-less world can actually produce more innovation and useful solutions for people, than one where information is locked up in corporate silos and controlled by special interests.

<comment><USER3> Well said.

It is a colossal myth that pharma companies have to charge a lot for patented medications because of development costs (this is the story pushed, of course, by Big Pharma themselves). However, they spend most of their money on advertising:

[http://www.sciencedaily.com/releases/2008/01/080105140107.ht...](http://www.sciencedaily.com/releases/2008/01/080105140107.htm)

Instead of innovation, a certain amount of pharma research is devoted near the end of a drug's patent lifetime to merely tweaking that established, well- studied drug a bit to produce a slightly different form. Product extensions with these slight modifications, generally of dubious benefit, can get at least 3 years of market exclusivity if their developments involve clinical research. Thus, what we get are slow rollouts of extended release, timed release, buffered, etc., etc., formulations of some old drug. Here's a good paper on some of the other strategies used by pharma to extend patent protection:

[http://nofta- ip.jinbo.net/files/Patent%20term%20extension%20...](http://nofta- ip.jinbo.net/files/Patent%20term%20extension%20strategies%20in%20the%20pharmaceutical%20industry.pdf)

"Second, the pharmaceutical industry is not especially innovative. As hard as it is to believe, only a handful of truly important drugs have been brought to market in recent years, and they were mostly based on taxpayer-funded research at academic institutions, small biotechnology companies, or the National Institutes of Health (NIH). The great majority of "new" drugs are not new at all but merely variations of older drugs already on the market. These are called "me-too" drugs. The idea is to grab a share of an established, lucrative market by producing something very similar to a top-selling drug. For instance, we now have six statins (Mevacor, Lipitor, Zocor, Pravachol, Lescol, and the newest, Crestor) on the market to lower cholesterol, all variants of the first. As Dr. Sharon Levine, associate executive director of the Kaiser Permanente Medical Group, put it,

If I'm a manufacturer and I can change one molecule and get another twenty years of patent rights, and convince physicians to prescribe and consumers to demand the next form of Prilosec, or weekly Prozac instead of daily Prozac, just as my patent expires, then why would I be spending money on a lot less certain endeavor, which is looking for brand-new drugs?"

[http://www.nybooks.com/articles/archives/2004/jul/15/the- tru...](http://www.nybooks.com/articles/archives/2004/jul/15/the-truth-about- the-drug-companies/)

A formed editor of the New England Journal of Medicine noted, "The combined profits for the ten drug companies in the Fortune 500 ($35.9 billion) were more than the profits for all the other 490 businesses put together ($33.7 billion) [in 2002]. Over the past two decades the pharmaceutical industry has moved very far from its original high purpose of discovering and producing useful new drugs. Now primarily a marketing machine to sell drugs of dubious benefit, this industry uses its wealth and power to co-opt every institution that might stand in its way, including the US Congress, the FDA, academic medical centers, and the medical profession itself."

<http://www.wanttoknow.info/healthcoverup>

<comment><AUTHOR> Thanks for bringing up those points. I can really only speak from my position in the software industry and say that every time I see a patent suit in the news, it seems to be harming innovation. Like I said, the big companies spend a lot of money on squashing the competition, which already includes branding, advertising, and so forth. Patents are a great weapon that may be marketed as helping the little guy, the startup, protect themselves. But in reality, this is the more likely scenario: startup gets a few patents. Big company sues them for something, and startup runs risk of going bankrupt. Big company had more patents, and more money.

When it comes to big companies, they use the patents as weapons against competition and innovation (and why not, that is their fundamental purpose: to enforce a monopoly). Google doesn't want to pay royalties to Apple for the H.265 format or whatever. (That's one example that comes to mind.) If we ignore startups for a moment, the big companies could compete directly instead of invoking government-enforced monopoly rights. You could see how competition on actual BENEFIT to the public would be improved if patents were out of the picture. There would still be advertising budgets.

I have a question: We've had patents and big pharma for a long time now, right? Why does all the mainstream medicine in this country have only one answer for almost all diseases: PHARMA DRUGS? And how much better did they get at curing cancer? More people get cancer today than 100 years ago, but how much better did they get at improving people's quality of life with various types of cancers?

Meanwhile, do you hear a lot about treatments to ANY major disease that are not monetizable as drugs? Most doctors talking about this are marginalized by the medical community. Can it really be that there are no other types of treatments out there besides pills? And that there aren't any cures to be found? The FDA requires clinical studies to be done before a drug can claim to diagnose, prevent or treat any disease, understandably. But look at us as a society. We need a better way of organizing and verifying medical information about various drugs, research, conditions, etc.

It seems to me that the information the public is exposed to is dominated by the pharma companies. They advertise to the public ("ask your doctor about XYZ" -- really, I gotta tell my DOCTOR about it?). They push their products which have been certified by the FDA ... and sometimes, they're wrong and their drugs harm people. Meanwhile, most of the innovation comes from the independents, the university labs. If they published information freely we would all benefit. I'm not sure what could be done to reform the FDA system, though.

<comment><USER4> "Mainstream medicine" doesn't have "only one answer for almost all diseases." Think of the almost stereotypical statement from a doctor: "Stop smoking, eat less, and exercise more." There's research in burn therapy and speech therapy and many other fields which has nothing to do with drugs. The push for mosquito netting is a prevention remedy for malaria. Go back in history and you'll find that garbage collection in large cities was often run by the public health department. Even the law that "all employees must wash hands before going back to work" is there for a medical reason.

Here's what the WHO says about cancer: <http://www.who.int/mediacentre/news/releases/2003/pr27/en/> . 1/3rd of the cases can be prevented by "Reduction of tobacco consumption", "A healthy lifestyle and diet", and "Early detection through screening". The first two of those have nothing to do with drugs.

Also: "The predicted sharp increase in new cases – from 10 million new cases globally in 2000, to 15 million in 2020 - will mainly be due to steadily ageing populations in both developed and developing countries and also to current trends in smoking prevalence and the growing adoption of unhealthy lifestyles." Feel free to download the full report.

As for "treatments to ANY major disease that are not monetizable as drugs"; vaccines are not drugs. Getting the shot for tetanus is much less profitable to a pharmaceutical company than going through treatment, but no one seriously argues for removing the vaccine so pharmas can make more profit.

Economically, if there is a major disease then people will pay to not have the disease. Therefore there's always going to be an issue of money involved, even if it's promoting a diet or exercise program. The flip side of your question is, do any major diseases have a remedy which can be done without monetization? Most of the historically big ones are _solved_ (eg, by washing hands before assisting in a birth, or making sure children get vitamin D). Plus, the non "mainstream" medicines are also influenced by the money; look how big the homeopatic industry is.

"There are no other types of treatments out there besides pills?" I just listed a half-dozen.

"And that there aren't any cures to be found?" Pardon? Up until the 1980s the treatment for gastric ulcers was "rest, bland foods, and drink milk." Now we know most ulcers are caused by Helicobacter pylori and it's completely curable with drugs. How is this not a cure? Or what is it you want?

As for "a better way of organizing and verifying medical information about various drugs, research, conditions, etc." -- what is it you want? Go to <http://cdc.gov/> . They've spent a lot of time compiling overview information. Want more information? Medical researchers have spent a lot of time providing exactly what you've asked for. What is it you want?

If anything, it's the paradox of choice. There's so much information that most people ignore what's available, because they would rather not have to wade through everything. Which is why drug ads, and dieting ads, and fitness ads, and so on work. Sad to say.

The statement that "most of the innovation comes from the independents" is just wrong. Read <http://www.nature.com/nrd/journal/v9/n11/abs/nrd3251.html> . During 1998-2007, 252 new drugs were approved by the FDA. 58% had their origin in pharmaceutical companies, 18% in biotech, and 24% from universities.

Besides, most of the university research _is_ published freely, although it can cost money to access the journals (or a visit to a research library). And just because a novel compound shows effectiveness in a research environment doesn't mean it will become a good drug, and there's a lot of research which needs to be done to get from "I have an idea which works in a test tube" to "here's a new treatment for a disease", and most of the intermediate steps are "doesn't work, try again."

<comment><AUTHOR> Thanks. I mostly posted my last message as a way to get informative responses, which I think this is :) I sometimes like to learn more about a subject matter I'm interested in, while discussing it, so it was late at night and I decided that was a good way to learn a little more -- by overstating my case in my ignorance and getting different viewpoints.

Although I do want to ask one thing ... to answer whether there are treatments to ANYmajor disease that are not monetizable as drugs, you said that besides drugs, there are also vaccines. But aren't vaccines developed the same way -- basically patented by pharma companies? Also, is there a list somewhere of cures developed in the last 30 years? I just have this impression that the pharma company is a big "sponsor" of medicine and that alternative treatments or cures don't really take hold in the mainstream medical community (i.e. when you go to a doctor) ... and that there is very little "official" information about them. So it's hard to figure out what works and what doesn't when you have a disease that may be cured using alternative methods, like some forms of cancer etc.

<comment><USER4> So you want me (or others) to hand walk you through the field of medical research, instead of doing 10 minutes of Google research?

Did you go to the FDA or NIH home pages to research your questions? FDA lists a number of other non-drug remedies on their home page including medical devices, radiation devices, xenotransplantation, and blood substitutes.

"Cures developed in the last 30 years" is highly judgmental. Does LASIK surgery to correct nearsightedness count as a cure? Is being overweight a disease? And gastric bypass one possible cure? What about hepatitis C treatment which has a 90% likelihood of clearing the body of the disease, vs. 40% without the treatment? Do you count melanoma cures, by detecting the disease early and removing affected tissue? Diabetes used to be deadly. Now is isn't cured but it is easily treatable. Does that count? Cochlear implants so that once deaf people can now hear? Artificial corneas so the blind can see again? HIV treatments so that what was once a guaranteed death sentence within 5 years is now a manageable disease?

Did you at all try searching for the answers to your question? Just about everything I listed here should be common knowledge.

Yet when I look for pages that talk about useful treatments and remedies, they are overwhelmed by people like you who disbelieve all the successes, and are _SURE_ that the pharmaceutical industry is hiding the real cures. Since you know, employees at pharmaceutical companies and their friends and family never get those major disease.

The reason there is little "official" information about alternative treatments is that they've been tested over and over again, and not proven effective, and in cases harmful.

Bear in mind that there's a big and mostly unregulated industry behind alternative medicines, so there's also strong political pressure to keep those so-called treatments available. The homeopathic industry in the US has revenues of around US$1 billion. The chiropractic industry makes about $18 billion in revenue, with $430 million by sales of "supplements." Traditional Chinese Medicine is about $5 billion and acupuncture about the same. This is at least $10 billion of industry - surely they can provide rigorous tests. Just how much of the alternative market is spent on research? Not much that I can tell.

That gives a strong incentive to either castigate "mainstream" medicine or to promote itself as "complementary", and little incentive to verify claims. Since you overstate your case, I'll overstate mine - you are being brainwashed by snakeoil charlatans.

There is no evidence other than anecdotal stories that alternative medicines cure any sort of cancer.

<comment><AUTHOR> Makes sense. The situation is definitely more complex than I have thought about.

When I said "non drug treatments" or "cures", what I meant was... are there many examples where a disease was investigated and either

1) a treatment was found which was available using a non patented substance, such as DCA (which was available for a hundred years), basically research published by a pharma company that found you can treat a disease in a way that doesn't make money for pharma companies via patents, or

2) a cure that basically eliminated the disease in most cases so no further treatments were necessary.

I am not asking this with an agenda, I am just genuinely curious. I want to find such a list.

It would also help me understand better whether the current system is capable of producing and popularizing treatments (and cures) which may not be helping the pharma company's bottom line. I don't want to parrot quacks who talk about pharma "suppressing" this knowledge, just wondering how often knowledge like this is willingly published, and where.

The reason it seems plausible to me that this issue might be a problem, is the economics and incentives of it. If you were a pharma company and you sunk $100M in research for a cure of disease X, and somehow you found two things (in your own labs, say), that

a) there is a treatment that you can patent and charge a markup to recoup your investment and make a profit, and

b) there is an equal or superior treatment which cannot be patented because it was freely available or there is prior art

I don't see your promoting or even publishing (b) as being fiscally responsible to your shareholders and your company's bottom line. So it seems to me there would be a conflict of interest if a non patented treatment is found. A similar case can be made for a cure. Why push the cure if pushing the treatment generates a much bigger long term return on investment? It just seems to me that there is some conflict between the interest of the shareholders and actually publicizing a cure. Of course, there is some value in the PR that your pharma company found the cure, but if it's estimated to be less than the profit from the ongoing treatment, what is the incentive? What is the company going to do?

<comment><USER4> You dismissed vaccines earlier, since can be covered under patent. But Salk refused to patent the polio vaccine. In the mid-20th century, polio was killing more American children than any other communicable disease. Now it's nearly eradicated.

Just read <http://en.wikipedia.org/wiki/Jonas_Salk> . It brought tears to my eyes. "By the time Thomas Francis stepped down from the podium, church bells were ringing across the country, factories were observing moments of silence, synagogues and churches were holding prayer meetings, and parents and teachers were weeping." "It was as if a war had ended."

I'm sure companies could have made more profit selling tens of thousands of iron lungs a year. I refuse to believe that sort of profit was a serious consideration.

Something more prosaic - cavities are greatly reduced with fluoride treatment. Fluoridated water and/or toothpastes have greatly reduced dental bills.

And I can't stress this enough: research consistently shows that exercise is healthy, eating fruits and vegetables is healthy, and that cigarettes are not healthy. There's almost no cost to these and there's no patent coverage at all.

If you want something more disease like, then again I point to stomach ulcers. Most are caused by H. pylori infection, and the first treatment was a standard antibiotic, which was off-patent by the time the bacteria link was discovered.

Or cholera. The best treatment for that is oral rehydration therapy, which in general "saves millions of children a year from death due to diarrhea - <USER2> second leading cause of death in children under five." In the home-made version, "1 liter of boiled water, 1 teaspoon of salt, 8 teaspoons of sugar, and added mashed banana for potassium and to improve taste." People get better faster with antibiotics, but they will recover so long as they are sufficiently hydrated. Simple, but people in the 1800s didn't know this and sometimes it killed up to 2/3rds of the people on the wagon trails out to the US West.

This simple treatment didn't receive world-wide recognition until the 1970s, based on fundamental research done in the 1960s. (There were people who prescribed this sort of treatment earlier, but without enough studies to be persuasive, nor with physical explanations of why it should be effective.) But with it the mortality rate is under 1%, instead of 50%.

The best cure, btw, is prevention via improved water treatment. That has nothing to do with pharmaceutical companies.

Your view of the patent system, pharmaceutical development, and the people who work in them is woefully simplistic. If I worked for a company and found that the cure for malaria/cancer/whatever was to eat an orange every day then there's a huge personal incentive for me to publish. For one, that would likely lead to a Nobel Prize. Remember also that most of the people doing drug research got into the field because they want to cure or at least treat disease. They think that drugs or vaccines are the most likely solution, but that's a means, not an end. Do you really think that if a researcher found a non-drug solution that they would be able to stay quiet?

Or like I said earlier - drug discovery researchers and their friends and family come down with the same diseases as others in their community. Why would someone want to "suppress" information which would lead to their parents being treated for Alzheimer's, even if it isn't a drug treatment. Or do you really think people working for pharmaceutical companies are so amoral and concerned with the bottom line?

For that matter, look at organizations like the Novartis Institute for Tropical Diseases. It's co-sponsored by the drug company Novartis, which has said it "will seek to make treatments developed by the NITD available without profit to the poor in developing nations in which these diseases are endemic."

I am not saying the drug companies are pure of heart. There's strong economic incentives to find medicines which can treat heart disease, for example, in part because people don't exercise, don't eat the right foods, and continue to smoke. Given two diseases they are more likely to go after the first world disease, where there's more money to be made, than a third world disease, where there isn't. But the people who make up the drug companies are human, and want to help other people.

Your argument about fiscal responsibility is a nearly worthless concept. Consider that I am a CEO of a large company and I've said that we would contribute $10 million to charity during the year. A shareholder might sue me for irresponsibility. But that might be what's needed to keep me as head of the company. Or it might be justified as improving morale, since its employees feel better about how their work helps others. Or it might be good advertising and improve the company's market image. Your statement assumes that immediate short-term money is and should be the only concern in a company and that's simply not the case, else no US company would ever donate money to charity.

Or as another example, do you think it's fiscally responsible for Oracle to contribute money to Oracle Racing, which funds Larry Ellison's sailboat racing interests?

Lastly, there are a lot of diseases in the world. Most attempts at a cure fail. Most pharmaceutical researchers fail to discover even _one_ drug in a career. Finding a non-pharmaceutical cure would, for the books, count as just another failure. The odds of finding a non-pharmaceutical cure between the time that a lot of money has been spent on finding a pharmaceutical one and the time that it would have made most of its revenue, is small. It's much more likely that another pharmaceutical company will introduce their own drug for the same market during that time. Seriously, by the time someone's spent $100 million on a drug (so about 20% of the way to market), there's been a huge amount of research on the disease, other forms of treatments, the drug pathway, and so on, including research outside of the company. The case you talked about is so unlikely that I can't see anyone making a decision based on that possibility.

Now your homework is to read the Wikipedia pages for cholera, polio, Jonas Salk, smallpox, typhoid, penicillin and Albert Alexander, and Helicobacter pylori and Robin Warren.

<comment><AUTHOR> Reading this I thought, I'm glad that Hacker News has so many smart people. I learned a lot :) Thank you for your thoughtful response. And I did follow up by looking on Wikipedia!</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Notes on privacy and data collection of Matrix.org - <AUTHOR> https://gist.github.com/maxidorius/5736fd09c9194b7a6dc03b6b8d7220d0 <comment><USER2> XMPP self hoster here.

I've been revisiting moving to self hosted Matrix around every 4 months now for 2 years, and every single time I failed.

The reasons vary; initially synapse refused to work, then I got stuck trying to set up a multi-domain service.

That said, this document verifies what I feared in the background: what matrix offers as self-hosted is too simple to be true, and thus it's no surprising I never got it completely running.

XMPP has it's own issues, but when I self host it, it's there, nowhere else. No identity servers, no push servers, no jitsi servers in the background.

It seems like I'm going to be with XMPP for a much longer time.

<comment><USER3> My experience is that synapse is not harder than ejabberd (I don't have experience with other XMPP servers)

Matrix tries to do a lot more than XMPP. In my experience, people find XMPP too limiting, so they don't use it.

<comment><USER2> > Matrix tries to do a lot more than XMPP

It's not that simple. Many doesn't know about omemo, jingle, etc, when it comes to xmpp. Or xmpp bridges like biboumi.

Matrix is is doing the same thing, but on differrent - and way more complicated - infrastructure ideas.

Prosody is definitely much simpler to configure, even with multiple domains, especially when per domain specific setting are needed.

<comment><USER3> The problem with omemo, jingle, etc. is that you have makes sure that the XMPP components you use support them. It would be fine if all popular implementations support those features, but that's not the case.

So you can't just say, let's use XMPP. You have to be very specific and make sure people use the right versions.

You can say that Prosody is easy. I don't find the following list easy: [https://prosody.im/doc/modules](https://prosody.im/doc/modules)

And you probably need 'Component "conference.example.org" "muc"' for any kind of 'room' support.

The the next question, does prosody have the equivent of federated rooms in matrix. Here is a list of XMPP extensions in the documentation: [https://www.prosody.im/doc/xeplist](https://www.prosody.im/doc/xeplist)

I guess the answer is, there are no federated rooms in prosody.

Another question is whether it is possible to send someone an XMPP message when that person is offline. I have no idea how to search for that.

<comment><USER4> No federated rooms. Offline messages are supported.

I guess newer Prosody supports this and much more out of the box but the generic configuration instructions I used are here: [https://serverfault.com/questions/835635/what-prosody- module...](https://serverfault.com/questions/835635/what-prosody-modules-do-i- need-to-support-conversations)

> The problem with omemo, jingle, etc. is that you have makes sure that the > XMPP components you use support them. It would be fine if all popular > implementations support those features, but that's not the case.

Isn't this also the case with Matrix that no implementations except the official ones support E2E encryption?

<comment><USER5> > Isn't this also the case with Matrix that no implementations except the > official ones support E2E encryption?

This isn't true. There are independent working E2E implementations in weechat- matrix and pantalaimon (python-nio), nheko (mtxclient), and even a read-only one in purple-matrix. Meanwhile lots of independent apps build on the official SDKs (e.g. Seaglass on macOS, bots like Matrix-Recorder, the various Riot forks, etc)

<comment><USER4> Glad to hear the update, thanks!

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I was pretty disappointed when I learned one of my contacts on Matrix was receiving my messages on his Gmail. That's a feature I would rather the client to not even have so people don't accidentally enable it. I hope it won't take too long for a more privacy-oriented client than Riot to appear. The best thing right now is MiniVector, which is a stripped down Riot fork with fewer permissions required: [https://github.com/LiMium/mini-vector- android](https://github.com/LiMium/mini-vector-android)

<comment><USER7> Interesting concern - I'm thinking I'd like the various clients to alert me back - as a message sender that the messages were being auto forwarded to a non secure place like gmail - of course I think the option to turn off notifications should be possible on both ends.

<comment><USER6> That's a good idea. The important thing I think is to create a culture of privacy-preservation around the whole Matrix ecosystem so that features like that make it to the various clients.

</comment></comment></comment><comment><USER8>
        The following stack will be used as reference, with users
        connecting via web, desktop and smartphone clients:

            Client: Riot-web v1.2.1,
                    Riot Desktop v1.2.1,
                    Riot Android v0.9.1

            Server: Synapse v1.0.0

Version numbers are probably sufficient to in a general scientific setting. They are usually a precise reference to a specific piece of software anyone attempting to replicate the investigation should be able to find their own copy of the software and have reasonable confidence their copy is identical.

Unfortunately, it might not be a good idea to trusting that a version number consistently maps to a specific URL, or that a server will give the same file to everyone each time they ask fo a URL. We know that sending different versions to different people is common ("A/B testing"). If you're investigating the security of something or worse: you suspect you might have sentient opponents actively trying to deceive you, then version numbers are no longer sufficient: you should also include _cryptographic checksums_! The only way you can know that the file you received is the same is if you have e.g. SHA-2 hashes as proof. Even better, if it's important, include the RIPEMD-160, SHA-1, CRC32, and any other available hash/checksum because why not add redundancy and give people options.

<comment><AUTHOR> Totally fair point, thank you for bringing it up. Given the numerous build types (source, pip, debian packages, etc), what would you suggest to do in this case? Give the git commit hash maybe?

<comment><USER8> A traditional approach is to attach a checksum file with all of the relevant packages, in the usual ${hash}sum output format (hashes truncated for HN-page readability):

        $ sha256sum *
        e406bcc...51c199a  riot-android-0.9.1.tar.gz
        8020cc6...d6126c1  riot-v1.2.1.tar.gz
        443b612...51e0cef  synapse-1.0.0.tar.gz

> Given the numerous build types (source, pip, debian packages, etc)

In the interest of making a reproducible investigation, it might be a good idea to include hashes for the specific packages being investigates.

> Give the git commit hash maybe?

That would probably work? This gets into the problem of _reproducible builds_ , where builds from different environments might not be identical. This means documenting that you used "a build of version 1.2.1 git commit 7446799e4b0e3e65122f5642b5f3a8c59aae15bf" means something slightly different than saying you used "riot-v1.2.1.tar.gz with SHA256 8020cc617367a4318be090b1562a26571f1a3417b0d4a52b2d4f19e03d6126c1". That said, obviously having literally any hash to work from is _much_ better than using version numbers alone.

Github links that include the commit hash might be useful, but it seems like you cannot link to both a tag and a hash? I wonder if github supports links that are a combination of [https://github.com/vector-im/riot- web/releases/tag/v1.2.1](https://github.com/vector-im/riot- web/releases/tag/v1.2.1) and [https://github.com/vector-im/riot- web/commit/7446799e4b0e3e6...](https://github.com/vector-im/riot- web/commit/7446799e4b0e3e65122f5642b5f3a8c59aae15bf) ?

<comment><AUTHOR> After talking with the other contributors of the doc, we decided on not going into further details.

We acknowledge the need for reproducible investigation, but the document did not explain in a scientific manner how we reached such outcomes. We had to draw a line to keep the document on point with our message. Adding hashes wouldn't really make a significant difference.

We'll make sure to keep this in mind if we do write a follow-up with details on reproducible checks thought. Thank you for your insight!

</comment></comment></comment></comment><comment><USER9> Thanks for the review. I feel like I gave them too much of a trust :(

Matrix devs, instead of battling the reviewer here, please make a proper blog post and explain what is really going on here. Tell us the truth about your data handling and the data retention.

The reviewer did his own share of work. If there are mistaken parts in his reporting, please correctly explain them in a civilized way in a possible blog post.

thanks

<comment><USER5> apologies if it seems like we're battling the reviewer; it's just that there is a bunch of stuff which is simply incorrect, which is frustrating. did you see our pdf response, out of interest?

<comment><USER9> Hi,

Yeah, the issue with all these replies is that the real replies that addresses the issues can be lost. I really recommend that you put that on your official blog so we all can benefit from reading your response.

<comment><USER5> yup, our plan is to fix the valid issues highlighted here and blog a response.

<comment><AUTHOR> Or what about joining the room given on the research paper and actually participating in the discussion? We would love to have some proper interaction where we can exchange network output and screen recordings that simply show first hand what we are talking about...

Replying to a blog to a living research document intended to be used by another project/protocol feels silly. Whatever you write certainly is not all up to date anymore with the corrections we made thanks to the Matrix community that joined the room, and the Grid community that kept on discussion the doc.

Where is Matrix.org tho? This could also be a good occasion for the three new guardians to join the community.

</comment></comment></comment></comment></comment><comment><USER10> This is a fantastic read. Thank you for investigating this and writing about it in such a clear way.

<comment><USER11> +1 for the thanks. I considered self hosted Matrix for a professionals community, but your researched basically killed that path for me.

Much to improve.

<comment><USER5> Pretty much everything pointed out in the OP _only applies_ if your setup is configured to use a 3rd party identity, integration server and notary (trusted_key) server. So if you are selfhosting and you want to avoid using 3rd party servers, don't use them!

Agreed that we should do better at presenting a max-privacy config preset and explaining how identity/integ/notary servers work to users (without making the UX unusable), but to throw away the whole project over this is throwing out the baby with the bathwater, imo.

<comment><AUTHOR> I believe you are missing the point of the document. It is not so much where the leaks go, but that they happen when there is no consent or knowledge of the transfer.

Example: for Scalar, the issue says that Riot talks "too much" to it. The research is not about how many times Riot talks to it. It is that Riot talks to it before the user explicitly requested the service, and in a way that the user does not expect.

As we wrote in the paper: "Privacy protection is a mindset". It is not about fixing individual issues and then have new ones pop up because the underlying problem is not fixed. It is about having a process in place so it cannot happen again.

</comment></comment></comment></comment><comment><USER12> Uhhh the default configuration harvests your contacts database, wtf?

<comment><USER5> No, Riot/Mobile explicitly warns and prompts you to opt in if you try to discover contacts by email/phone number. It looks like this on Android:

"Riot needs permission to access your address book contacts to find other Matrix users based on their email and phone numbers. Please allow access on the next pop-up to discover address book users reachable from Riot."

That said, this analysis does have a few valid points in it, specifically:

* We should probably provide a click-thru when users interact with 3rd party identity lookup servers or integration managers

* We should hash contacts when doing bulk lookups

* Riot/Web has a bug where it talks to the integration manager too frequently ([https://github.com/vector-im/riot-web/issues/5846](https://github.com/vector-im/riot-web/issues/5846))

* Notary servers should eventually be removed entirely (as per MSC1228).

However, most of the rest of it is alarmist and disproportionate FUD, plus the author has sadly forgotten to disclose that he's working on a hostile fork of Matrix. A point by point response is at [https://matrix.org/~matthew/Response_to_- _Notes_on_privacy_a...](https://matrix.org/~matthew/Response_to_- _Notes_on_privacy_and_data_collection_of_Matrix.pdf) fwiw (apologies for the PDF, but Google Docs doesn't seem to expose a read-only view of commented docs.)

<comment><USER13> > "Riot needs permission to access your address book contacts to find other > Matrix users based on their email and phone numbers. Please allow access on > the next pop-up to discover address book users reachable from Riot."

I know very well that concise wording in UIs is incredibly hard, but this wording is misleading. It makes it sound like Riot will not work unless I allow access to the address book. I'd suggest something like this:

> Riot can check your address book to find other Matrix users based on their > email and phone numbers. If you agree to sharing your address book for this > purpose, please allow access on the next pop-up.

<comment><USER5> Yeah, that's way better - thanks. have pushed the change at [https://github.com/vector-im/riot- android/commit/786bf017852...](https://github.com/vector-im/riot- android/commit/786bf017852fad184bf3b7b2a0e51eb20b6a87b6)

<comment><USER14> 10 minutes from a hacker news comment to a github commit. Respect

<comment><USER9> That is just a text change, very superficial

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> The document has been updated from feedback received all over the community, including new identified leaks and possible data correlations.

We encourage anyone who already read the initial version to check out the revisions of it for new content or re-visit the document.</comment>


Cache Lines Are The New Registers - <AUTHOR> http://simonask.tumblr.com/post/30645840195/cache-lines-are-the-new-registers <comment><USER2> The AT&T Hobbit processor didn't have registers, just a stack and aggressive caching there -

<http://en.wikipedia.org/wiki/AT%26T_Hobbit>

It's an interesting idea. It probably makes thread switching very cheap (just change a pointer, a PC and maybe a condition code register).

[As the wiki article says, we were going to use it for the Newton, but the price kept going up and the chip was buggy.]

On game consoles, at least, successful developers know how the cache works at a detailed level; it's surprising how often it's cheaper to recompute something than to fetch it from memory again. It's a waste to fetch a whole cache line for a single byte, and you'll see good titles make very good utilization of their cache fetches (e.g., 70%).

DSP programming environments often provide ways to lock cache lines so replacement doesn't hose performance.

At the shared L2/L3 level, things get really complicated, since you suffer cache replacement from other parts of the system. (Why did our frame rate go down? / Oh, we sent an HTTPS request, which brought in the crypto stuff and ...). It's not something you can analyze or deal with statically, and good tools and test methodologies are essential.

<comment><USER3> The TMS 9900 (and its predecessor, the TI 990 minicomputer) had a similar sort of idea, except back in the days of less layers of caching. [https://en.wikipedia.org/wiki/Texas_Instruments_TMS9900#Arch...](https://en.wikipedia.org/wiki/Texas_Instruments_TMS9900#Architecture)

(Of course, those days, there weren't orders of magnitude between the time to execute a single instruction and the time to access DRAM or ROM.)

</comment></comment><comment><USER4> I like this premise. Unfortunately, cache lines aren't nearly as visible as registers in a debugger, so the author's claim that the next generation systems languages may need to provide convenient controls (and implied visibility) into this class of optimizations seems particularly apt. Nowadays, cache-related optimization appears to center around experimentation on a particular hardware setup. Hopefully, that will improve in the future.

In the meantime, Herb Sutter has been demonstrating some interesting cases of cognitive dissonance in terms of code optimization. His work is a lot of fun to read.

</comment><comment><USER5> from the blog post: >The best any of them can do, however, is to make guesses as to what the optimal performance characteristics of the cache structure on each CPU is going to be.

Well actually most mainstream compilers support profile guided optimization which allows the compiler to do a good job of reorganizing the code to minimize instruction cache misses as the compiler then has runtime data which provides the necessary hot/cold codepath statistics.

</comment><comment><USER6> Any sane computer architecture should assume high availability of stack memory. The idea of preserving a memory block to replace stack won't buy you anything.

Btw: why not write a test instead of just guessing?

</comment><comment><USER7> Seems to me the answer lays in having the compiler more tightly bound with the nature of the OS - such that, for example, adjustable stack sizes and generalized metrics about application performance, can be used to make apps fill the cache-line most optimally.

In Embedded/Safety-Critical works, such metrics are available; often-times though, compiler/OS levels of support/integration/inter-operation are insufficient to high-performance tuning .. and of course, for a lot of industrial applications, not necessary (or encouraged, at least) in the first place.

However I wonder what an attempt such as the one to make an exclusively Lua- based OS (and, thus Application-Set) might produce in terms of optimizing cache line fills; I say "Lua" because it of course has a pretty good mechanism for determining memory usage patterns ("all elements", "each element", "diverse access patterns" .. something that tables and metatables can easily assist) .. and with a strong App base on a LuaOS tweaked specifically for the cache/CPU combination its running on, perhaps we will see some interesting new endeavours in this department ..

</comment><comment><USER8> The article's last point is a little questionable:

> compilers could defer stack usage in favor of a reserved area of program > memory for temporary values, that has a very high likelihood of always being > in cache.

"A reserved area of program memory for temporary values, that has a very high likelihood of always being in cache" -- this is a fair definition of the stack.

> the stack is function-local.

Depends on your definition of "function-local". Yes, variables local to an individual function are stored on the stack, but the stack frames for multiple function calls are adjacent in memory. It's not like entering or exiting a function will always switch to a different cache line. Someone who looks at "disassembly of optimized code in the wild" should be well aware of this.

> For temporaries that don't need to persist past calls to other functions, > some performance could be gained by avoiding cache misses on stack memory > that isn't going to be used after the function returns anyway.

You should be able to achieve this in the current world with aggressive use of scopes to explicitly expire particular locals before the end of a function, or use of inline functions.

It is an idea for a compiler optimization, however: Expire a local variable at the last point it is used in a function. There are a number of subtleties though: The compiler would have to be able to reorder local variables to make sure the expirable ones are at the top of stack when they expire, would have to mark variables for which pointers are taken non-expirable (unless the pointers themselves, or values derived from them, themselves don't escape the function), and would make stack frames more complicated to parse for debuggers and backtrace displays.

</comment><comment><USER9> Prefetch insertion was done years ago, but disabled (at least in GCC) because it has never shown any performance benefit, even when we disassemble and see it inserting prefetches in exactly the places it should. In general, the hardware prefetchers are spectacular in most x86 implementations, and it's roughly impossible to beat them in all but the weirdest situations.

(This is true of at least every processor since core duo, AFAIK)

Graphite/et al (and similar implementations) are the future. They are a very large amount of work to get right, working, and performing well, but the benefits are immense.

They can basically transform loops optimally for any set of cost functions you can come up with.

(This is actually the easy part, the hard part is generating reasonable code from the resulting loops :P)

There are numbers, but not from those particular implementations.

</comment><comment><USER10> _Every time the operating system decides that it's time to run a different process, all caches are invalidated (on account of the virtual memory system)._

They what? I know most processors will blow the TLB, but I don't think any processor would toss out megabytes of cache.

</comment><comment><USER11> Don't modern CPUs (like x86) have about a zillion registers internally, which are, behind the scenes, allocated to the virtual registers (AX, BX, CX etc) that are seen from the assembly level?

Itanium has a register stack, and I'm pretty sure it wasn't the first.

[http://software.intel.com/en-us/articles/itaniumr- processor-...](http://software.intel.com/en-us/articles/itaniumr-processor- family-performance-advantages-register-stack-architecture/)

<comment><USER12> Yes, modern out-of-order processors have on the order of 200 physical registers which are mapped to program registers by renaming.

Cache and register utilization are critical (register utilization not so much because of the latency of loads from cache--which are fast--as because loads from cache are a scarce resource; a typical core can manage only one or two per cycle), but maximizing TLB reach turns out to be even more important than cache for some algorithms that deal with large data sets.

</comment></comment><comment><USER13> HotSpot (Java's JIT compiler) generates prefetchw.

</comment><comment><USER14> The high level problem is that compilers take the memory layout of data as given and punt on optimizing the memory behaviour of programs. Partly the fault of languages that aren't amenable to dynamic data layout optimizations but it doesn't seem a very active area of research either.

<comment><USER9> What?

Compilers have been studying and doing data and loop reordering (for memory optimization) optimizations for many many years.

In fact, some of these are even famous ([http://www.hpcwire.com/hpcwire/2007-11-09/compilers_and_more...](http://www.hpcwire.com/hpcwire/2007-11-09/compilers_and_more_gloptimizations.html)). Look at the art hack.

This is a very active area of research. CGO, one of the main compiler conference, has had many papers on memory and data optimization in the past 5 years, and PLDI did before that.

Google for "structure layout optimization compiler", "Data structure optimization compiler", "polyhedral loop optimization compiler".

</comment></comment><comment><USER15> > Every time the operating system decides that it's time to run a different > process, all caches are invalidated (on account of the virtual memory > system).

Unless you have a virtually indexed cache I don't see why an OS would want to do that.

</comment><comment><USER16> This is also important for index-heavy applications, llds for instance treats cache lines as registers and heavily optimizes for cache friendly operations:

<https://github.com/johnj/llds>

</comment><comment><USER17> I'm feeling smug. My compiler for LoseThos is not very optimal, but it doesn't matter! I made many improvements, only to discover no benefit.

For old school programmers, it's just not right, for example, that floating point math is almost as fast as fixed-point. (I did my graphic library as fixed-point.)

<comment><USER18> I guess he's worked out that his last account was hell-banned ...

<comment><USER10> He's known about it. I wonder why he's trying a new one...</comment></comment></comment>


Designing APIs for Asynchrony - <AUTHOR> http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony

<comment><USER2> I have code that calls back synchronously if a value is in memory and asynchronously if it has to make a network call to get it. It's simple, and I'm not persuaded by this post (or the one it recommends) to make it more complicated. In this particular use case it seems enough to know that the callback _may_ occur asynchronously, so you can't assume that anything will still be in scope.

<comment><USER3> This is not really about scope. In the particular case of JS scope is not an issue at all; the engine handles the closures and scopes for you.

The issue is that once you start doing serious work with asynchrony -- filtering streams, handling disconnects, backing out of parse errors, and dealing with parallelism all at the same time -- then being able to reason clearly about the control flow is paramount to getting anything done.

If sometimes code below the callback registration will be executed first, and sometimes not, depending on unpredictable runtime state, it's game over. Even if you understand the code and it works now, good luck when a dependency update introduces a new corner case and your app's control flow has been radically changed and you're stuck midnight-debugging the mess.

I guess this is one of the things you learn in the trenches, along with avoiding global variables and not optimizing prematurely.

<comment><USER2> You're right that "scope" isn't the right word to use there, but I still can't think of a better one.

Trying to accommodate the complexity you describe ahead of time could well be its own mistake. One thing I've learned in the trenches is to wait for most things to prove to be a problem before adding complexity to address them. I believe you that there are cases like you and the OP describe, where "all sync or all async" is a good invariant to have. But I don't believe it's a general rule, the alternative to which is doing it wrong (or even the devil, as in the OP).

Another thing one learns in the trenches is that almost all general rules about software are bogus and end up distorting one's thinking. It's better to choose invariants on a system-by-system basis.

<comment><USER3> Isaacs is writing from a node context, where apps are basically collections of third party modules glued together. In that kind of world, it's expected that things will work a certain way and not deviate, or your code ends up being crusted up by the glue and exception handling.

The issue with "wait until it's a problem" in node is that dependency updates can and will ruin your assumptions if you haven't been diligent about doing things the standard nodeish way. For better or worse, the node community pushes this pretty hard.

So the way I see it, this isn't about blind application of general rules. It's about having a standard API in your framework. And I firmly believe that the reason npm ecosystem works so well is because of people following these standards.

Though I do agree izs appears to be overgeneralizing his conclusions.</comment></comment></comment></comment>


Poems of my Father #3 – The First Snowfall - <AUTHOR> https://medium.com/@russroberts/poems-of-my-father-3-797a00b44a00 <comment><USER2> I enjoyed the article until the questions at the bottom and then I got nasty flashbacks to high school English.

School killed any love I had for poetry for years. I thought poetry was this thing where you spent a minute reading a page, then spent an afternoon over- analysing it, looking for hidden meaning and writing 10 pages about it.

I think the best way to appreciate poetry is to simply read it, and that's it. Your mind will naturally ponder on it, if it wants to.

<comment><USER3> I agree up to a point, but disagree there is no value in analysis _at all_.

Lots of authors have intentionally inserted contextual references to their poems which _are_ worthy to point out. Since lots of old poetry was written in time when _everybody_ was supposed to be familiar with a certain classical body of work the poems might need some explaining sometimes to fully be read as the autor intended.

In our pop-culture filled context you could have a poem about a car called Falcon and a cat called Chewie and you would go a-ha, I wonder what deeper references are there.

But actually treating poem as an algebra problem really is taking it too far.

<comment><USER4> > But actually treating poem as an algebra problem really is taking it too > far.

Not really, a lot of poems (the symbolists come to mind) are actually meant to be treated as semantic puzzles or mathematical problems. Lewis Carroll is perhaps the most famous - and one of the greatest example of the intersection of maths, logic and poetry.

One of the best poetical analysis I had the pleasure of reading in recent years is a very probabilistic (rather than algebraic) reading of the French poet Mallarme, who was himself fascinated by randomness and probabilities:

[https://lareviewofbooks.org/article/book-of-numbers- meillass...](https://lareviewofbooks.org/article/book-of-numbers-meillassoux- on-mallarme/)

> The Number and the Siren argues that there is a Number at the heart of the > poem [...] and the book cycles through a lot of textual analysis, along with > close readings of related poems (themselves encrypted with numbers)

Highly recommended read.

</comment></comment></comment><comment><USER5> Hidden mental treasure all around us. Beautiful. Thank you.</comment>


Chumby is back - <AUTHOR> http://forum.chumby.com/viewtopic.php?id=9209 <comment><USER2> I find it frustrating that the blog post does not explain what a Chumby is.

Neither does the chumby.com homepage.

Incredibly, neither does the item description in the Chumby store.

I'm sure that this announcement is great news for someone, but is Chumby supposed to be a well-kept secret? Why make it so hard to discover what a Chumby does and for who?

<comment><USER3> Had to look it up on Wikipedia myself: [http://en.wikipedia.org/wiki/Chumby](http://en.wikipedia.org/wiki/Chumby)

I do vaguely remember it now. Surprised he doesn't just do a Chumby 2 on kickstarter.

<comment><AUTHOR> Producing new hardware would probably require a bit of renegotiating, and there are likely enough devices out there either in new old stock or unplugged to satisfy demand.

I'd love to see a Chumby distribution for the Raspberry Pi, for example, to support something newer and in production, but that would require figuring out a way to legally license FlashLite from Adobe again.

</comment></comment></comment><comment><USER4> Interesting, I've got 3.5 Chumbies :-) This is not a good thing for me :-(

The Chumby was a product from Bunnie Studios which was an ARM system with a touch screen, embedded is a bean bag kind of case. It had an application which is basically a flash player (yes on ARM, the only one I know of these days) and it would cycle between flash applications on a "channel." Some times it would cycle through to an advertisement.

It has an accelerometer, speaker, 320 x 240 x 16 touch screen, a couple of USB ports and a wireless network connector. You can wire up a USB serial port to the console if you have something like the AdaFruit FTDIFriend board.

It very much was the classic case of something "before its time" and the business model was kind of dicey. If you didn't want commercials you were out of luck. Once the company shut down they left a server up serving the one App I really liked, "Space Clock" which was a clock like you might see on a Star Trek universe ship (it has a very LCS look to it).

The site has been revived and a new business model has been put in placed, $3 per month subscription for the ability to run 'apps' on your Chumby. I presume it no longer shows ads.

Its sad for me because it has a really crappy clock app now that runs instead of the space clock, and that is going to force me to finish up my OS replacement. The thing is based loosely on the old Beagle board and much of the things that run on that board run on the Chumby. In particular there is a Ubuntu image for it.

I get the subscription thing, but I don't get the price. For $36/year you can run quite a bit of server. A single droplet ($5/month) can serve up several thousand Chumbies (they don't make I/O requests all that often). $3 a year would have made more sense to me, even $5 a year. Anything more than $12 a year and I'm just not going to go there.

The reason I have 3.5 is that the .5 is the 'Chumby Guts' option that Adafruit offered for a while. It was all of the parts, minus the squishy case. At $99 for the parts it was a really good deal for a small ARM linux system with a touch screen. I wish them luck, and I'm glad they are back, but I think they need to rethink that price.

<comment><USER5> I think there's a little bit off in your summary of the post-demise events, but not much. After Chumby closed its doors someone (anonymous investor?) kept paying the server bills for quite a while, presumably as they attempted to find a buyer for the remains including the customer base. Meanwhile one or more former staff (Duane) kept things going on the forums and could deal with a few things on a volunteer basis as his time allowed.

Once it became clear that a purchase wasn't going to happen, Duane was able to purchase it for what I suspect was a fairly small amount of money. That's the point where the change over to "Space Clock" happened, because as it turned out there were some international addresses chewing down amazing amounts of bandwidth, etc. some of them for no clear reason.

I haven't kept track, but at one point there was a USB-bootable local version of the Chumby software available for download, though apps were problematic. I don't know if it improved beyond the level of "choose your apps by putting the files in the right place and editing GUID-like values in a config file" or not.

My wife still uses her Chumby as a clock, but I was actually thinking about stealing it from her so I can use it as a simple streaming audio alarm clock - that functionality is built right in.

<comment><USER4> I've been in contact with Duane, I would be really curious as to what the international IP's were doing exactly. One of my Chumbys lived briefly on the Internet and a number of things tried to hack it but for the most part it has been reasonably safe. I did use the SSH option to go in and get a better firewall running on it.

Like you I think the Chumby is a great 'viewer' into things digital. Whether it is the time, my calendar, or whatever. My long neglected project is a Ubuntu with a DirectFB driver and the QT4 widget set. I'm going to have to see what it will take to bring that back. Robert Nelson has an excellent toolchain/process for building images for these things and ARM Linux has gotten a lot better in the last half decade.

</comment></comment></comment><comment><USER6> This sort of dedication (in addition to him being a great developer, hacker and all around swell guy) is why anyone would be lucky to work with/for Duane Maxwell.

</comment><comment><USER7> What is this company? The linked blog post does little to enlighten me, and even after reading the chumby.com homepage I'm still unsure. It looks like they sell hardware? For what purpose?

<comment><USER8> They used to sell hardware devices, similar in design to a digital picture frame. These were internet connected devices that could display different apps or feeds.

They were kind of a mix between Tablets and Dashboards.

</comment></comment><comment><USER9> The Chumby was cool 4 years ago... When the Chumby services started getting flaky as their business died I replaced mine with an Android tablet in a sound dock. The Android tablet is more reliable, has more apps, and doesn't turn into a worthless brick when the internet goes down. I still have the Chumby in a box somewhere, maybe now that services are back up I can sell it and recover some of my cost.

<comment><USER6> The use case for chumbies was intended to be different than Android apps in the sense that you have "channels" of rotating information (photos, tweets, whatever) that you can consume in a non-interactive manner (most of the time) which doesn't really map well to Android apps.

While I'm an avid Android user (phone & multiple tablets and even do Android programming as my current "day job"), I still think there is room in the world for the chumby "vision" though if it were to work long term it would be better served by eventually moving the system off of Flash and decoupling the service and apps even more from the existing hardware (it would be better as a software platform that ran on whatever, including (for example) raspberry-pi boards which are in some ways spiritual descendants of the chumby hardware).

disclosure: I worked for chumby until it died.

<comment><USER10> Well, the reason Android (or iPad) isnt suitable for this is the right app just doesnt exist yet.

Wouldnt Chumby just be more suited to make a $5(expensive!) app for iOS and Android (hell, make it a webservice) that incorporated the previous Chumby feeds?

<comment><USER6> We did produce a chumby Android app prior to the company going out of business, I think it still exists.

Putting it on iOS was a no-go because of iOS' refusal to support Flash. Even today it would still be kind of iffy on iOS unless it was all based on HTML and JavaScript since AFAIK that's the only way (via UIWebView) that Apple will allow any app to be as dynamic as a real chumby control panel app would have to be, which then becomes a bit of a problem as far as backward compatibility to existing chumby hardware goes since they are pretty CPU/RAM starved for web stuff.

But you're right in that (as I mentioned in the other post) the system would be better served by being a multiplatform software play in the future rather than being stranded on old ARMv5 devices running Flash Lite.

</comment></comment></comment></comment><comment><USER11> Look up Sony Dash, it was Sony's version of the Chumby. Got it for free with a notebook purchase and it's still running beside my bed however I stopped using most apps long ago. Loved the concept but the execution left a lot to be desired. CPU could never make the flash based apps feel snappy. Still makes a sweet alarm clock though.

One app would load content from any url you specified. Tied it to a script that summarized the status of our servers so I could monitor it anytime.

</comment><comment><USER12> I desperately tried to buy a Chumby when they came out. "Only shipping to US!" .. Fine, ok - whatever... I'll have it mailed to a friend and pick it up from them.

"Oh, trying to use a non-US Visa/Mastercard?? No no no"

.. Then gave up. Trying to throw money at a company that won't take it, they went bust. Not surprised.

</comment><comment><USER13> woah. I might still have a couple of the 3" and 8"(?) units around still in the box...

<comment><USER6> I still have a few unboxed insignia infocasts (3 and 8) and a few drawers full of Chumby Ones, a couple of Chumby 8s and a few chumby classics, in addition to some old prototype boards and even a Sony Dash with sshd enabled (rare, because Sony locked down the retail hardware).

Even while the chumby service was down I would often pull these out to use as special purpose devices (eg. mpd servers for net radio), they are still pretty good small linux boxes that go great with Go development.

<comment><USER14> I too have a few Infocast 8's sitting around. My Chumby One (white plastic) died a while ago (reboot loop) unfortunately.

Are you aware of what the best current linux firmware is for the Silvermoon (8") platform? The OpenEmbedded versions I've seen are fairly old released from when the devices first went on sale, and I'd love to make use of them.

<comment><USER6> Unfortunately I don't think there is a newer version of the kernel than that, at least not that anyone has released (it is possible xobs/Sean Cross might have code for a newer build laying around somewhere, but if so I'm not aware); not long after that version was baked the layout of the ARM platform in the linux kernel diverged a lot and the older kernel version was from a time where hardly any of the SoC vendors (including Marvell) were getting anything into the mainline.

It would theoretically be possible to get a 3.x kernel up by forward-porting the divergent patches between that OE kernel and the linux kernel version from that time, but I'm not aware of any current working code for that. Due to the changes in the kernel, it wouldn't be trivial to do.

</comment></comment></comment></comment><comment><USER15> Oh? [http://files.chumby.com/blocked.html?188.8.131.52](http://files.chumby.com/blocked.html?126.96.36.199)</comment>


What to consider before adding Markdown to your app - <AUTHOR> https://adamlynch.com/markdown/ <comment><USER2> Very thorough and well-written essay. Thanks!</comment>


A High-Fat Diet Alters Crucial Aspects of Brain Dopamine Signaling - <AUTHOR> http://www.sciencedaily.com/releases/2010/07/100713011053.htm <comment><USER2> The biggest thing reading 'Good Calories, Bad Calories' did for me, was make me question every single scientific study in _much_ greater detail. It's shocking how much niche* scientific research makes it's way into the 'news', 'common knowledge' or even public policy.

I don't mean this as a knock against this specific study -- however, we don't have enough information to conclude _anything_ about it.

* = where 'niche' implies a strict and specific set of conditions or even assumptions, reducing 'general applicability'

<comment><USER3> The big part of this article that raises my skepticism is that it's talking about rat studies without mentioning that there are very many well known, dramatic, and fundamental differences between rat and human metabolisms.

</comment></comment><comment><USER4> It's too hard to see what this means from the information in the article. What was the protein and carb content? Was it a low-protein diet or low-carb (I'm guessing low-protein given other study results)? How many rats? Were they obese to begin with? etc. etc.

</comment><comment><USER5> Interesting, but fairly useless article. I have no idea what this means. Maybe this is a good thing? Fat is satiating and helps you feel full.

Also, a high-fat diet by implication means you've removed either protein or carbohydrate, if you're holding calories constant. A low carb diet, if low enough, puts your body in ketosis, and your brain switches from using glycogen for energy to ketones. For all we know the title could have been "A Low-Carb Diet Alters Crucial Aspects of Brain Dopamine Signaling."

</comment><comment><USER6> I wish the article would be a little more specific about what _kind_ of fat they're talking about. Saturated? Polyunsaturated? Raw? Processed?

For example, if they're talking about processed polyunsaturated fat, it's probably a leap to apply the conclusions to raw butter.

<comment><USER7> It's also contradictory to existing research. They're saying a decrease in dopamine due to high-fat intake is linked to obesity, however high-sugar diets are known to increase dopamine release, which increases the bodies demand for sugars which leads to diabetes _and_ obesity.

If it's a choice between the two then to me it's better to be fat than fat and diabetic.

You're also correct, polyunsaturated fat behaves wholly different than monounsaturated, or saturated, or hydrogenated. Even if they all have some effect, is one less or more dramatic than another?

Finally, is this going to be useful to anyone in planning their diet to control weight or is it just more utter bunk like 'avoid eating carbs'. If I'm avoiding carbs and avoiding fat, I'm left eating ultra-lean-ground-beef and fat-reduced chicken, which means I'm on a ultra-less healthy version of the Atkins.

Perhaps these diet doctors can simply say: Don't be a fat ass, exercise and eat a good mixture of protein, fat and carbs because excluding one is quite probably extremely bad for your health.

<comment><USER8> To me that sounds like the hedonic treadmill rather than a contradiction. Fat and sugar increase dopamine, the extra dopamine reduces the number and/or sensitivity of D2 receptors over time to compensate, and so your baseline declines until you need that extra dopamine hit just to get back to normal.

And it sounds more useful for designing drug treatment than diet. If your eating isn't out of control, you don't have much of the problem the article is about.

<comment><USER7> No fat decreases dopamine, but sugar increases and both cause obesity. Logically, balancing the two would cause no increase or decrease and should lead to a balanced weight, yet the researches don't say this they say people should avoid eating fatty foods or carbohydrate rich foods.

I'd be interested to see whether a balance of protein/fat/carbs in equal 1/3 parts by weight or 1/3 parts by calorific quantity provides the least effect on our dopamine levels.

I know personally that when I was on a high-fat diet, I lost weight. I've also lost weight since I switched from margarine to real butter (note: you'd be surprised how easy it is to clean baked foods when it's real butter, it took literally 5 seconds to get a bowl spotless with just hot water which normally took about a minute after being soaked in hot water with detergent in it), plus my food tastes a lot less like plastic.

I'm sure this has something to do with my working in construction, however I've never been sugar-sensitive. I literally tackled a bag of brown sugar with a spoon as a kid and didn't get a sugar rush, while my wife has gotten a sugar rush off a caramilk bar.

</comment></comment></comment></comment><comment><USER9> So what does this mean? How does this change the motivation for working (for food etc). Can it be reversed? How does it interact with other dopamine processing and dopamine producing actvities (e.g. drugs, sex etc)?

</comment><comment><USER10> Do rats eat fat in nature? I don't know anything about animal nutrition, but is this like feeding protein to say, rabbits, which are herbivores?

<comment><USER11> Rats are omnivores, eating a nice, balanced diet like us humans. However, even if they were straight herbivores, they could still find plenty of fats. Nuts are a significant food source for small mammals and tend to be fairly high in fat content.

</comment></comment><comment><USER12> Reminds me of the Science News Cycle: [http://www.g2weather.com/.a/6a010535bea9f5970b0133f1e3258297...](http://www.g2weather.com/.a/6a010535bea9f5970b0133f1e32582970b-800wi) (image)

<comment><USER13> Actual source: <http://www.phdcomics.com/comics/archive.php?comicid=1174>

</comment></comment><comment><USER14> Here I was, excited to post a bunch of reasons why this paper doesn't really support its conclusion, only to find all the comments on HN already well informed and adequately skeptical.

</comment><comment><USER15> Dopamine systems are related to motivation, compulsions, and addictions.

It's unclear whether the changes detected by this study would be correlated with more or less addictive behavior, task-persistence, long-range goal- seeking, executive function, etc.

But, it suggests ideas for further research about diet and behavior.

</comment><comment><USER16> Questions a reader should ask:

What was the percent fat in relation to carbohydrates/protein? From what I've read read both a low fat (<20%) and extremely high fat (75-80%) are healthier than a high fat diet (45%).

What type of fat was added to their diets? All fats were not created equal.

</comment><comment><USER17> Further information took a bit to track down but I found it here: [http://www.ssib.org/web/past_programs/SSIB_2010_Abstracts.pd...](http://www.ssib.org/web/past_programs/SSIB_2010_Abstracts.pdf)

The full article is available for purchase here: [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi...](http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6WB2-5087F0J-19&_user=10&_coverDate=06%2F30%2F2010&_rdoc=1&_fmt=high&_orig=search&_sort=d&_docanchor=&view=c&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=d1ecda4fc9cdb9796fbe6992d14607d2) though I wasn't willing to buy it.

From the abstract:

\--

 _Consumption of a high fat diet affects phasic dopamine release and reuptake in the nucleus accumbens J.J. CONE 1,∗ , H.A. ROBBINS 2 , J.D. ROITMAN 2 , M.F. ROITMAN 1,2 1 Program in Neuroscience, University of Illinois at Chicago, USA 2 Dept of Psychology, University of Illinois at Chicago, Chicago, IL, USA The rate of obesity has climbed dramatically over the past several decades as food high in fat content has become more read- ily accessible. In the US alone, approximately one third of adults are considered obese. Obesity has been correlated with changes in the mesolimbic dopamine (DA) system. Human imaging stud- ies have revealed that DA terminal regions differentially respond to food depending on body mass index. In animal subjects, high fat diet exposure reduces motivated behavior and responses to amphetamine. Thus, high fat diet exposure may lead to obesity, in part, through feed forward mechanisms that suppress mesolimbic DA signaling. Here, we determined the effects of different durations of high fat diet exposure on phasic DA release evoked by electrical stimulation of the ventral tegmental area. Rats were given ad libi- tum access to either a high fat diet (60% kcal/g from fat; HFD) or a low fat diet (10% kcal/gm from fat; LFD). After different durations on the diet (2, 4 or 6 weeks), rats were anesthetized with urethane. Phasic spikes in DA concentration were evoked once every 2 min by stimulating the VTA and measured using fast scan cyclic voltam- metry at a carbon fiber microelectrode in the nucleus accumbens. DA function was assessed by altering the number, frequency, and intensity of current pulses before and up to 1 h after cocaine injec- tion. Cocaine caused a dramatic increase in evoked DA in LFD rats. In contrast, cocaine caused a much smaller increase in evoked DA in HFD rats. The data were modeled to determine if baseline and cocaine potentiated differences in evoked DA between LFD and HFD rats were due to changes in DA release, reuptake or both. The results demonstrate that high fat diet exposure results in dramatic changes in phasic DA signaling. Given its established role in reward, rein- forcement and motivation, these changes in phasic DA signaling likely contribute to further imbalance between energy intake and energy expenditure.

doi:10.1016/j.appet.2010.04.046_

\--

The abstract still doesn't say what kind of fat it was (saturated, pufas, etc) only that it was 60% kcal/g for high fat and 10% kcal/g for low fat.

The linked summary also says nothing about how they measured the dopamine effects which turned out to be anesthetizing the rats, giving them cocaine, and then measuring their dopamine levels. The study seemed to show that cocaine caused a dramatic increase in the dopamine levels of the low fat diet rats and much less of an increase in the high fat diet rats.

As far as I can tell from that abstract:

Low fat diet = much higher dopamine response from cocaine

High fat diet = lower dopamine response from cocaine

So the authors are concluding that the lower response will lead to eating more fat in order to get the dopamine reward.

Further reading on dopamine: [http://scienceblogs.com/developingintelligence/2007/02/dopam...](http://scienceblogs.com/developingintelligence/2007/02/dopamine_for_dummies.php)

</comment><comment><USER18> I guess that would explain why Cain killed Abel.

Hehe, not really :)

</comment><comment><USER19> reduced release sounds bad. but reduced reuptake sounds good!</comment>


Ask HN: Is it possible to get the original 1977 Star Wars? - <AUTHOR>

I.e Star Wars 1977, before George Lucas kept stuffing around and changing things in it. <comment><USER2> [http://www.amazon.com/Star-Wars-IV-Limited- Edition/dp/B000FQ...](http://www.amazon.com/Star-Wars-IV-Limited- Edition/dp/B000FQJAIW)

"for the first time ever on DVD, the original films as seen in theaters in 1977, 1980 and 1983."

I guess this should work</comment>


Anonymous Versus EFF? Corporate Donation Riles Activists - <AUTHOR> http://www.wired.com/threatlevel/2011/11/eff-palantir/ <comment><USER2> Wow. EFF taking money from Palantir? That is...confusing.</comment>


Submarine cables - onreact-com http://www.newscientist.com/gallery/mg20227061900-exploring-the-exploding-internet/1

<comment><AUTHOR> Who pays for these?

<comment><USER2> They are generally funded by coalitions of multinational telecommunications companies (AT&T, BT Group, Telstra, Bharti, etc) and built and maintained by specialized marine fiber-laying companies.</comment></comment>


India bans 59 Chinese apps including TikTok and Helo - <AUTHOR> https://thenextweb.com/in/2020/06/29/india-bans-59-chinese-apps-including-tiktok-and-helo/ <comment><USER2> This is a right move, in my view.

Chinese infiltration takes a myriad of forms and data collection is one of the biggest.

And those apps form a basis for click-of-the-button hacking.

And ordinary users will find it very very difficult to determine if an app is Chinese made or not.

And the Chinese govt. will have it's fingers in everyone of them, one way or the other.

What I do worry now is that since China has been exposed, it will resort to even elaborate deceptive methods to hide itself and it's infiltration.

China is not to be trusted.

<comment><USER3> >China is not to be trusted.

Same as the US i suppose.

<comment><USER4> They are not even in the same universe when it comes to comparing trustworthiness .

It's NK & China and then there is everyone else.

<comment><USER3> >trustworthiness

Maybe, but i would not trust anyone of them.

Hint? Iraq has Chemical weapons, and the UAE is our friend, oh and the best one trump says he is high IQ, bidden is low IQ ;)

</comment></comment></comment></comment><comment><USER5> India just pulled a China (e.g. China banning FB, Google, etc.)

</comment><comment><USER6> How big was tiktok in India anyway?

<comment><USER7> Big enough that American Tiktok users would regularly see Indian content.</comment></comment>


The Zoom Privacy Backlash Is Only Getting Started - <AUTHOR> https://www.wired.com/story/zoom-backlash-zero-days/ <comment><USER2> > It's as though, in suddenly shifting from the office to work from home, we > didn't so much move the conference room into our kitchens as into the middle > of the public square

So it's like the old good internet, where we didnt have to lease our lives from google and apple? i think that's great</comment>


Ask HN: Self Hosted Alternative to Campfire - <AUTHOR>

We really like Campfire and need that sort of functionality, but due to security restrictions (outside of our control) we need something we can host on our own servers. Any recommendations? <comment><USER2> IRC. Setup an IRC server, turn on logging, install a web IRC client and there you go.</comment>


Google's Demo Slam - What is it? - <AUTHOR> http://demoslam.com/

<comment><USER2> I'm guessing "show the world what you can do" is code for "land a job at Google".

</comment><comment><USER3> it's aps.net, running on iis, and the domain is registered on godaddy.com. This must be fake...

</comment><comment><USER4> So what's it all about then.

</comment><comment><USER5> no idea - but the idea of supporting overweight rabbits sounds good.

</comment><comment><USER3> wtf? it's asp.net+IIS, on Google???!!

<comment><USER6> google store also runs on asp. <http://www.googlestore.com/googlesearch.aspx>

      curl -v "http://googlestore.com
      < Cache-Control: private
      < Content-Length: 0
      < Location: http://www.googlestore.com/default.aspx
      < Server: Microsoft-IIS/7.0
      < X-AspNet-Version: 2.0.50727
      < X-Powered-By: ASP.NET
      < Date: Mon, 18 Oct 2010 23:07:08 GMT

whois says it's owned by google.

</comment></comment><comment><USER7> Made entirely in Flash, so probably not targeted at serious developers. I guess it is something for kids, because the tag line "Technology is awesome. Learning about it isn't." suggests it tries to teach people about technology. Maybe it will be similar to that App Inventor for Android they released a while ago.</comment>


Ask HN: Like Hemingway app, but for writing sales copy? - <AUTHOR>

Hemingway [1] is fantastic at tightening up my normal writing, but for landing pages, sales letters and promotional emails it's not that helpful.
With the quantity of effective sales copy out there, it'd be great if software could help write higher-performing copy than I can on my own (not difficult).
I've not found any prior art - have you? If not, consider this a free software idea...
[ I have contacted the authors of HemingwayApp, but no response to date ]
1. http://www.hemingwayapp.com/ <comment><USER2> I think you're referring to A/B testing...</comment>


Writing Collaboration with OpenAI: Context and Constraints – Stephen Downes - <AUTHOR> https://www.downes.ca/cgi-bin/page.cgi?post=69500 <comment><AUTHOR> Link to the referenced article: [https://dogtrax.edublogs.org/2019/05/18/writing- collaboratio...](https://dogtrax.edublogs.org/2019/05/18/writing- collaboration-with-openai-context-and-constraints/)

Link to the TalkToTransformer page: [https://talktotransformer.com/](https://talktotransformer.com/)</comment>


Elastic Search - Incorporated - <AUTHOR> http://www.elasticsearch.com/blog/you-know-for-search-inc/

<comment><USER2> We heavily use elasticsearch as part of Kiln's infrastructure. We've actually found it to be an _insanely_ useful tool: it scales extremely well, it's highly redundant, it's trivial to extend, and it is _fast_. We've managed to move every last bit of our search infrastructure (including source code), using over 100 million documents representing 182 GB of data, and we still get search times around 10 ms or less. It's so fast we've got an entirely new feature built around it coming out in the next few weeks. It's just that awesome.

The only downside we've hit with ES is poor documentation. In all other respects, if you need search, I can unconditionally recommend it.

<comment><USER3> I agree, ES is awesome. The poor documentation can be annoying indeed, but Shay Banon is always very helpful on the discussion groups so that's a big plus.

<comment><USER4> +1 on this, a better side bar or something on docs would be wonderful, but the tech just rules. The ease of setting up a redundant cluster is great, not to mention the just insane response speed. We switched a few page loads from mongodb to elastic search, mongo was taking ~13000 ms per page load, elastic took ~250 (2 mm records).

</comment></comment></comment><comment><USER5> Awesome news from a truly awesome developer working on fantastically awesome software.

Did I mention it is awesome?

If you haven't had a chance to play around with ES - you really should. I've never used Lucene or Solr but I picked up the basics of ES really quickly. You can roll out some really impressive search capabilities with embarrassingly little code (or knowledge).

Just this last weekend I migrated servers and syncing my new server was as easy as installing ES, joining the cluster and letting everything transfer over automatically. ElasticSearch comes as close to "magic" as possible, especially for something as sophisticated as search.

</comment><comment><USER6> Shay works like mad on this project, it's awesome to see this for him and the rest of people working together on it. I've been on the ES mailing list for a number of months now and not a single question goes by without an involved response from Shay, helping people out every day.

Congrats to all involved.

</comment><comment><USER7> Great news. I discovered ES last year and fell in love with it. Far better than solr in almost every aspect. When I saw how automatically detects nodes, distributes data, recovers from a failed node, etc. all without administration I could not believe it. It's every devops dream.

</comment><comment><USER8> Also, don't forget to check the ecosystem around elasticsearch: clients, integration, Puppet & Chef manifests/recipes, etc: <http://www.elasticsearch.org/guide/appendix/clients.html>

</comment><comment><USER9> Yay for them. It's a great story - from one guy working on an idea to a company.

</comment><comment><USER10> Been using elasticsearch for a number of projects and all I can say is that it's really great! We almost replaced it on one large project to use it as a distributed storage but didn't work out cause it couldn't handle the load. (not surprising since that's not what it's exactly built for..)

However, as a search solution, elasticsearch is one of the best I've used this far (used solr, sphinx and fulltext search).

Hope this means that great things are to come! :)

</comment><comment><USER11> I've just started getting into Elastic Search for a project I'm working on. Coming from a couple of years using Solr it is one of the best and most exciting pieces of tech I've played with in ages.

I hope this announcement doesn't change anything (at least not too much!).

</comment><comment><USER12> I'm happy to see this! I wish them well. Also, I'm looking forward to their training course: <http://www.elasticsearch.com/services/training/>

</comment><comment><USER13> We use ES at Wildbit. I love this tool, and I'm really glad for you guys.

6 months ago when we started using it, we'd have easily hired you guys to help us out with our use cases/jvm optimization.

</comment><comment><USER14> Announcement blog post: <http://www.elasticsearch.com/blog/you-know-for- search-inc/></comment>


GDB Debugging Full Example: Ncurses - <AUTHOR> http://www.brendangregg.com/blog/2016-08-09/gdb-example-ncurses.html <comment><USER2> One of the coolest days I've had at work was when we hit a nasty deadlock deep in the bowels of gstreamer on one of our shared "immersion room" computers. We pinged our resident gstreamer expert and I convinced him to run his gdb session (from a core dump, over ssh, halfway around the world) inside tmux so we could watch him as he debugged.

There's nothing quite like watching someone who's an expert both in gdb and the problem domain as they do their thing.

<comment><USER3> "Immersion room" computers? What do you do for a living?

<comment><USER2> We develop interactive 3D applications at "room scale". [http://www.oblong.com/solutions/](http://www.oblong.com/solutions/)

The top photo is of our immersion room staging environment. The versions deployed to production (at a handful of sites worldwide) have a little more polish :-)

<comment><USER3> Thanks, and sorry, this is totally off-topic... I am reading this as saying that there is some kind of data (or multiple kinds of data) which are worth viewing in multiple dimensions in giant holodeck-like rooms. I'm assuming remote conferencing is one of those, but I am interested in hearing more about the other kinds of data. Do you have some links to something a little more concrete than what's on the site you linked?

</comment></comment></comment></comment><comment><USER4> I just want to express how nice it is to see someone use vanilla tools on Linux to solve a problem. Whenever I see a thread on using gdb or jdb, invariably it is full of suggestions on the use of a half baked debugging wrapper that hasn't been maintained in 2+ years under the guise of it somehow being better because it has colors.

</comment><comment><USER5> You can also launch the TUI after-the-fact using the key sequence 'C-x o'. (It is no accident that it is the key sequence bound to other-window by default in Emacs).

</comment><comment><USER6> It's so surreal to see Brendan Gregg discussing Linux tools.

It's like watching Iron Man wielding Thor's hammer.

Which is not to compare Brendan to Iron Man, but it's as weird as that would be.

<comment><USER7> Thanks, but I should stress that my example here didn't do much that was really advanced. There was a little ftrace and BPF, gdb reverse stepping and the TUI, but the other gdb commands are routine. I guess what's useful is explaining everything, including caveats that you can hit even with the basic stuff.

<comment><USER6> No, I'm not complaining, it's just odd seeing you primarily work with solaris for so many years, and now talking about linux toolsets instead. I mean, I still remember you dissmissing SystemTap, although I believe you later said it had improved...

Speaking of which, as I understand it, dbx is to gdb as adb is to mdb. So other than syntax, what IS difference between the adb and dbx families, as you've clearly used both?

</comment></comment></comment><comment><USER8> As far as reverse debugging goes, you really should look into [http://rr- project.org/](http://rr-project.org/)

<comment><USER7> I've been meaning to. I took a quick look now:

      # rr record date
      rr: Saving the execution of `date' to trace directory `/root/.local/share/rr/date-30'.
      [FATAL /build/rr-jR8ti5/rr-4.1.0/src/PerfCounters.cc:195:start_counter() errno: 2 'No such file or directory']
       -> Unable to open performance counter with 'perf_event_open'; are perf events enabled? Try 'perf record'.
      Aborted

oh-oh...

      # gdb `which rr`
      [...]
      (gdb) r record date
      Starting program: /usr/bin/rr record date
      [...]
      [FATAL /build/rr-jR8ti5/rr-4.1.0/src/PerfCounters.cc:195:start_counter() errno: 2 'No such file or directory']
       -> Unable to open performance counter with 'perf_event_open'; are perf events enabled? Try 'perf record'.
      Thread 1 "rr" received signal SIGABRT, Aborted.
      0x00007ffff6d6b418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
      54	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
      (gdb) bt
      #0  0x00007ffff6d6b418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
      #1  0x00007ffff6d6d01a in __GI_abort () at abort.c:89
      #2  0x00000000005a9133 in FatalOstream::~FatalOstream() ()
      #3  0x00000000006303fc in ?? ()
      #4  0x0000000000630679 in PerfCounters::reset(long) ()
      #5  0x00000000006cbd8f in Task::resume_execution(ResumeRequest, WaitRequest, TicksRequest, int) ()
      #6  0x0000000000638be9 in RecordSession::task_continue(Task*, RecordSession::StepState const&) ()
      #7  0x000000000063d70e in RecordSession::record_step() ()
      #8  0x00000000006354b6 in ?? ()
      #9  0x00000000006356f2 in RecordCommand::run(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) ()
      #10 0x000000000061f44d in main ()

I did a bit more gdb debugging (one debugger debugging another, although it's a bit hard as rr is stripped and doesn't have a debuginfo package!), and it looks like it's trying to use PMCs.

No PMCs here: EC2 Xen guest. So rr won't work, for me or EC2's 1+ million other customers. Perhaps rr can switch to software events?

</comment></comment><comment><USER9> There's a typo under heading 7.

...And thanks for the awesome write-up, makes something intimidating for a beginner like myself (gdb) seem somehow less so. Feeling inspired.

<comment><USER7> thanks, fixed!

I was trying to make it not intimidating by just writing what I knew, and _not_ researching all the odds and ends, instead, just saying "I don't know" etc as appropriate. Plus including my mistakes.

<comment><USER9> I'd like to add, as someone who is a novice programmer and trying to get more and more immersed in this world - it's posts like these that give you a small peek into _thinking /being_ a programmer as opposed to _doing_ programming as a job/profession/etc. Part of what makes programming and computers scary to beginners, speaking from my experience, is the notion that there is an infinite amount of complexity hiding just behind your IDE (things far beyond your grasp/ability to comprehend - i.e. You'll never know _really_ how your program goes from the pretty syntax highlighted code in the IntelliJ window to x y or z app, or worse as in this case, when something goes wrong god forbid something with a sinister sounding name like 'segmentation fault'). Breaking that barrier down through the use of seemingly simple yet extremely powerful tools (Emacs, gdb, bash, etc) really helps, at least for me, feel less raw intimidation and self-loathing and more and more wonderment and inspiration to continue learning and hacking away.

</comment></comment></comment><comment><USER10> Thanks for this. As someone who hasn't got much further than walking a stack trace and printing variables in gdb it's incredibly helpful.

</comment><comment><USER11> Did everybody just discover the TUI in 2016 or something?

Not being flippant, just wondering because there've been a ton of links about it lately.

<comment><USER7> Probably, thanks to Greg Law's talk which featured here on HN, which I linked to in the post.

But this is often the case with Linux kernel and GNU tool features: they don't appear to have any marketing or sales professionals telling everyone about new features (unlike commercial offerings), which leaves us with many "hidden gems" (as people would say) in Linux + GNU. ftrace is another example.</comment></comment>


Lisp, Smalltalk, Graphel? - <AUTHOR> http://blog.mondiality.nl/2009/02/02/lisp-smalltalk-graphel/

<comment><USER2> I came to a similar conclusion a while back (graph oriented programming languages are the future) but my line of reasoning was that while we have object oriented languages and relational databases surely there should also be relation oriented languages. I toyed with this for a while totally stoked (still am really) to prototype some of these ideas and then somehow or another discovered prolog and it was like this big "ohhh" moment. My long winded point is that while I agree I think the author should check out prolog to add to the analysis.

lisp, smalltalk and prolog have been the three languages that blew my mind instead of just introducing a new syntax.</comment>