'Pharmacy of the developing world' under attack from the US, EU, Japan - <AUTHOR> http://handsoff.msf.org/generics-under-attack <comment><USER3> The ominous quote "This is just the beginning" seems apt here.

TPP bill [0] which is being negotiated in secret will result in more sustained damage [1].

Since R&D will be the single most critical argument, this table [2] could highlight it's fallacies.

[0] [https://www.eff.org/issues/tpp](https://www.eff.org/issues/tpp)

[1] [http://www.doctorswithoutborders.org/news- stories/briefing-d...](http://www.doctorswithoutborders.org/news- stories/briefing-document/trading-away-health-trans-pacific-partnership- agreement-tpp)

[2] [http://i.imgur.com/3kmBKcS.png](http://i.imgur.com/3kmBKcS.png)

<comment><USER4> Timely. I'm reading "The Truth About the Drug Companies" by Marcia Angell. Per Wikipedia, Dr. Angell is "the first woman to serve as editor-in-chief of the New England Journal of Medicine. She is currently a Senior Lecturer in the Department of Global Health and Social Medicine at Harvard Medical School in Boston, Massachusetts". So, a good person to write a book on the issue.

Just one more example of how drug companies are taking their customers for a ride. Knowing that a drug has a finite patent life, a drug company will stagger the release of two drugs that are pharmacologically similar by patent- wise different. The drug company will introduce an "improved" drug (which we'll refer to as "nu") just as the old drug's (which we'll refer to as "pro", as in before) patent is about to expire. This is accompanied by pricing tactics such as raising the price of the "pro" drug above the "nu" drug so as to incentivize patients to switch, paying generic-producing companies not to make it, and giving hospitals preferential pricing on the "nu" drug so that it is prescribed at hospitals but then patients pay the higher rate when they go home. One of the most insidious effects of this strategy is that, the drug company is either purposely pricing people out of medicine they need or knowingly selling an inferior product for a decade or more.

Highly recommend reading this book if interested on this subject: [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/)

<comment><USER5> "How is the pharmaceutical industry responding to its difficulties? One could hope drug companies would decide to make some changes—trim their prices ..." It seems this, extrapolation, or "logical next step" well encapsulates what the writer knows on the topic of pharma. On what planet would one derive this conclusion from the precursor of lessening profits?

</comment></comment></comment><comment><USER6> The piece at the very end is enlightening:

"SWISS PHARMACEUTICAL COMPANY NOVARTIS first took the Indian government to court in 2006 over its patent law because Novartis wanted a more extensive granting of patent protection for its products than offered by Indian law. The company had been refused a patent in India on a cancer drug it produces. In a first case before the High Court in Chennai, Novartis claimed that the Act did not meet rules set down by the World Trade Organization and was in violation of the Indian constitution. Novartis lost this case in 2007, but launched a subsequent appeal before the Indian Supreme Court in a bid to weaken the interpretation of the law and empty it of substance. All of Novartis's claims were rejected by the Supreme Court in a landmark decision announced on 1 April, 2013."

So much for world trade organization benefiting the world through more competition and a lowering of prices. Fuckers.

</comment><comment><USER7> This is funny because I am literally on the phone with my bank to get them to lift the block on the charge for indian provigil. I didn't realize this was a big thing, but I am excited to try the provigil. I did ask my doctor for it for what its worth, but he said its too expensive to prescribe to me. I don't have insurance...

<comment><USER8> I don't think it's legal to import prescription drugs from overseas, FYI. So it might not be a good idea to discuss the transaction with your CC provider.

<comment><USER9> > I don't think it's legal to import prescription drugs from overseas, FYI. So > it might not be a good idea to discuss the transaction with your CC > provider.

Doctors can import prescriptions drugs from other countries if they wish too, with a special import form to justify the exception.

<comment><USER10> Wow ! You cannot order any drug you want from overseas in American ? It seems like a blantent violation of basic freedom.

<comment><USER11> That's the whole idea of patents, isn't it? Just like you can't import medicine that infringes patents you also cannot parallel import iPhones or start making jeans and attach a Levi's tag to it...

edit @aikah: ok, point taken. You recall the issues Apple and Samsung had with the one phone looking like the other? Fighting on the streets and in court to prove that the edges were different or the home button is not the same? Patents are valid for phones, then why not for medicine? Because lives are involved? That seems a slippery argument - next animal life is endangered or quality of living is impacted: where does it stop?

It's not possible to start making exceptions, because there is always someone with a tear-jerking story who is impacted by not being excepted too...

<comment><USER12> > That's the whole idea of patents, isn't it? Just like you can't import > medicine that infringes patents you also cannot parallel import iPhones or > start making jeans and attach a Levi's tag to it...

That's not a good analogy. one could make an phone that has the exact same specs as the iphone or jeans that is the exact replica of a Levi's ,without the brand and the logo on it and it would not be an iPHone or a Levi's Jean.

it might not be legal but it wouldn't be shocking. The fact that you can't reproduce a formula ... TO SAVE LIVES ... is shocking.

US government prefers people dying because they can't afford meds rather than violating something that has nothing to do with the free market, ie , patents. We're not talking about phones or clothes here , we're talking about medication people's life depend on.

<comment><USER13> >That's not a good analogy. one could make an phone that has the exact same specs as the iphone or jeans that is the exact replica of a Levi's ,without the brand and the logo on it and it would not be an iPHone or a Levi's Jean.

I'm not sure this is true. You'd likely fall afoul of one of Apple's design patents (like the famous "rounded corners" patent).

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Drug companies do a great job at developing drugs, but then turn around and spend twice as much marketing them. Doesn't it seem like it would be a better system if government(s) set up drug development bounties, and pay the bounty in exchange for the patents? Drugs immediately gain generic availability, and the drug companies no longer need to sell their shit with Super Bowl commercials in order to make a profit.

<comment><USER13> Drug companies do spend a lot of money on marketing, but not every drug is the same. The ones you see on Superbowl commercials are usually drugs you don't _need_ , like mild pain killers and allergy medications. My suspicion is the only reason these kinds of drugs aren't OTC is this way the drug company can get your insurance to pay.

I doubt they spend much marketing drugs to treat cancer or AIDS.

</comment></comment><comment><USER15> The science that these drugs are based on was given to the public domain for free by scientists all around the world throughout history. Lets see if these greedy companies are willing to pay those scientists whose results they freely use.

Knowledge that helps save lives should not be under copyright (nor should it be a for-profit enterprise, but that is a separate argument).

<comment><USER16> The free market has been pretty efficient at inventing lifesaving gadgets and processes. They are protected by patent and copyright. Its arguable they wouldn't exist otherwise.

Its a lazy view that 'everything we need should be free' that ignores basic facts about invention and innovation.

<comment><USER15> If we're being generous - your argument is weak. Most governments _heavily_ subsidize core scientific research through public funds. It is decidedly NOT a free market. The free market has always been horrible at anything to do with public good.

>Its a lazy view that 'everything we need should be free' that ignores basic facts about invention and innovation

Nobody said that.

<comment><USER16> Oh come on -

       "Knowledge that helps save lives should not be under copyright (nor should it be a for-profit enterprise, but that is a separate argument).

"

That's what I was getting at. Devices and processes are what patents are for, for a reason. Scientific research - ok, that's a different beast. I probably changed the subject there, sorry.

</comment></comment></comment></comment><comment><USER17> Of course they are. In the United States you also can't import cheap generic from Canada. Most intellectual property law is recognized and enforced internationally. Everyone on this board has a career because of IP law.

We have a globally broken system in that America subsidizes the world medicinally. American companies research and develop many (not all) drugs. Americans then pay out their asshole for those drugs. Other countries then get to make those drugs for "free". Not free free. But they get to ignore the R&D costs.

Eventually the camel's back will break. Research costs will become too high for 300m out of 7b to pay for. Then we can figure out a new system that works better. This is probably a good thing. I don't know what the system looks like though. No one does.

<comment><USER3>
      Americans then pay out their asshole for those drugs. Other countries
      then get to make those drugs for "free". Not free free. But they get to
      ignore the R&D costs.

      Eventually the camel's back will break. Research costs will become too
      high for 300m out of 7b to pay for.

This "Drug industry scare card" is easily refuted [0] (check the table).

      But as the table below shows, drug companies spend far more on
      marketing drugs - in some cases twice as much - than on developing
      them. And besides, profit margins take into account R&D costs.

[0] [http://www.bbc.com/news/business-28212223](http://www.bbc.com/news/business-28212223)

<comment><USER17> Few people dispute that it costs a billion dollars or so to bring a new drug to market. That's a heavy cost foreign manufacturers don't have to pay.

The fact that marketing is a higher spend is irrelevant. It's like free2play on mobile. You spend a bunch of money developing something. If you can spend $.90 in user acquisition to earn back $1.00 then you throw every single dollar you can muster so long as the benefit is higher than the cost. It's a diminishing returns equation so you do as long as you can. The highest grossing games have marketing campaigns on the order of $100,000,000. Basically the same thing here. Take out as many loans as you can so long as it works.

<comment><USER18> I'm not saying you're wrong, but it struck me as funny to see a much- criticised practice in the pharmaceutical industry being defended by comparing it to F2P mobile games, which are also widely reviled.

<comment><USER17> Hah. I'm no fan of the f2p mobile gaming industry myself. But the math is very straight forward there. It exists for non-f2p games as well but it's less obvious and clear.

</comment></comment></comment></comment></comment><comment><USER19> I call your hypocrisy.

Drug trials are expensive and the ROI is not stellar at all. Without the prospect of copyrighting the result there would be way less efficient yet safe drugs for all of us. As a fact pharma companies - despite the conspiracy - <USER2> nowhere the biggest or richest companies of the world (Pfizer roughly #48). So why did you decide that actually pharma companies - and not for example YOU - should sponsor the treatment of the poor of this world? Do you equally expect Nestle to feed the hungry for free because it produces food?

<comment><USER20> This is about IP. Not about a limited resource like food. And is very easy to understand economically: is the same reason why in Finland and other countries traffic tickets amounts are based on the income of the driver, following the same logic costs of drugs should be tied to the ability of a country to pay them.

TL;DR you can't pretend asking $1.000 to an American is the same as asking $1.000 from a Nigerian

<comment><USER21> I'm mildly annoyed at the absurdity of people writing TL;DR after typing out three whole sentences.

In case people don't know - another way to start your last sentence is: In summary...

<comment><USER22> Thank you. This phenomenon is, in my opinion, among the most annoying things the internet has ever produced.

</comment></comment></comment></comment><comment><USER23> Serious question for anyone opposes this. What incentive would pharma companies have to publish their secret formulas if Indian generics simply take the IP and drastically undercut prices, preventing the pharma companies from making any profit on the billions they invested in their research? What would compel these pharma companies to invest in any further research?

<comment><USER24> I'm not sure why you need to get hypothetical here. Clearly, they currently have sufficient incentive since they're currently investing in research. They are trying to get a likely small amount of additional money (the people in India who could actually afford their prices) in return for an immense cost human cost.(The people who would lose access because of their prices) Why would anyone not oppose this?

<comment><USER25> >Clearly, they currently have sufficient incentive since they're currently investing in research

Drug research takes a long time. The drugs that cause this debate are drugs that the pharmaceutical companies decided to research decades ago, when they seriously expected people would respect intellectual property rights more than human lives.

Now that they know better, they will probably go invent a new Viagra or something instead of inventing something useful which can be prematurely generified for the common good.

<comment><USER26> And that's okay. I'll take millions of Indian lives _now_ than thousands of American's and hundreds of Indians in ten years - when a new drug that can save some lives potentially comes onto the market, a new drug not many people can afford.

<comment><USER25> I'm not sure where you are getting those numbers. It's very difficult to calculate the costs in human lives of all the drugs that won't be invented in the future.

Lots of people are already dying of antibiotic resistant bacteria, for example, and that's a problem likely to get worse over time.

<comment><USER26> The average Indian cannot afford to take a 1USD per tablet drug once a day. So if that's how all the new drugs are going to be priced - significantly higher than generics, then I say India should go ahead and make generic versions of those drugs, even if it will in future break international law. Who are you to say they should sacrifice their lives so you can have access to better drugs 10 years later that they can't afford anyway?

<comment><USER25> India can make generic versions of old drugs. For people who can't afford 1USD a day, having access to bleeding edge medicine isn't going to make as much of a difference as having access to nurses and penicillin. edit: and sanitation, and health education, and so on.

EDIT: Not to mention having their own research and development. I bet it's cheaper to research stuff in India, but evil selfish pharma companies don't want to invest in research in countries with poor intellectual properties protection.

<comment><USER26> Did you know if a pharma company takes an old drug and a new chemical to it to change its effects slightly, the patent is renewed, and that way it it never actually becomes 'old' enough? India will go on and ignore these patents to make generic drugs. Millions of indians have access to affordable medicine today. We can worry about the future benefits when you successfully petition oil companies to stop drilling for oil and invest in renewables instead. The Indian pharmaceutical industry is vibrant and thriving, that is why it has the capacity to reproduce generic versions of patented drugs at will.

You can live a perfectly fine, if frugal, life in India on USD $2 a day, but not if you have to pay for USD $1 tablets.

<comment><USER25> >The Indian pharmaceutical industry is vibrant and thriving, that is why it has the capacity to reproduce generic versions of patented drugs at will.

I thought any lab could do that. Isn't the research part the most difficult and expensive part?

>if a pharma company takes an old drug and a new chemical to it to change its effects slightly, the patent is renewed, and that way it it never actually becomes 'old' enough

I've heard about this happening with 'me-too' drugs and bullshit antidepressants. Does it happen as well with essential life saving medicine?

<comment><USER26> _I thought any lab could do that. Isn 't the research part the most difficult and expensive part?_

"The Pharmaceutical industry in India is the world's third-largest in terms of volume and stands 14th in terms of value."

"Indian companies carved a niche in both the Indian and world markets with their expertise in reverse-engineering new processes for manufacturing drugs at low costs."[2]

There is skill involved in reverse-engineering new processes for manufacturing drugs.

 _Does it happen with essential life saving medicine?_

Yes.

"...Glivec, a medicine for chronic myeloid leukemia"[1]

"The Supreme Court defended India's right to deny patents to incremental improvements. It ruled that Glivec was merely a new form of an older drug and did not constitute a patentable invention. "This is a huge relief," said Unni Karunakara, the president of Médecins Sans Frontières, which cares for patients in poor countries. Novartis is less pleased, declaring that the ruling "discourages future innovation in India."

Did you previously think pharmaceutical companies care about people's lives more than profit? I'm sorry to disappoint.

[1] [http://webcache.googleusercontent.com/search?client=safari&r...](http://webcache.googleusercontent.com/search?client=safari&rls=en&q=cache:tzV31BJwCoQJ:http://www.economist.com/blogs/schumpeter/2013/04/drug- patents%2Bindia+pharma+renew+patent&oe=UTF-8&gfe_rd=cr&hl=en&ct=clnk&gws_rd=cr)

[2] [https://en.wikipedia.org/wiki/Pharmaceutical_industry_in_Ind...](https://en.wikipedia.org/wiki/Pharmaceutical_industry_in_India)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> There should be a global consortium for socialized medicine. It's insanely problematic to have for profit companies demanding the right to kill the poor.

</comment><comment><USER28> This is hardly new. The Clintons threatened to impose trade sanctions on South Africa if they distributed HIV treatments to the poor, and that was twenty years ago.

<comment><USER29> "The Clintons"? We're going to lump Hillary in with the policies of an administration that she _married into_?

<comment><USER28> It's a healthcare issue and she was head of healthcare reform.

</comment></comment></comment><comment><USER30> Look how Novartis and other drug companies are pricing their cancer drugs:

[https://www.change.org/p/secretary-of-health-and-human- servi...](https://www.change.org/p/secretary-of-health-and-human-services- protest-high-cancer-drug-prices-so-all-patients-with-cancer-have-access-to- affordable-drugs-to-save-their-lives)

 _Prices have increased more than tenfold between 2000 (average price $5,000-$10,000 per year) and today (average price of new cancer drugs exceeds $120,000 per year)._

[http://www.nytimes.com/2015/01/15/opinion/why-drugs-cost- so-...](http://www.nytimes.com/2015/01/15/opinion/why-drugs-cost-so- much.html?_r=0)

 _Novartis, the company that makes the leukemia drug Gleevec, keeps raising the drug's price, even though the drug has already delivered billions in profit to the company. In 2001 Novartis charged $4,540, in 2014 dollars, for a month of treatment; now it charges $8,488. In its pricing, Novartis is just keeping up with other companies as they charge more and more for their drugs. They know we can't say no._

[http://www.nbcnews.com/health/cancer/utterly-broken-drug- mar...](http://www.nbcnews.com/health/cancer/utterly-broken-drug-market-high- cost-surviving-cancer-n369261)

 _Lauren Baumann is one of the lucky ones. Though she has cancer, chronic myeloid leukemia, it is manageable, as long as she takes a daily pill called Gleevec. Gleevec is considered a wonder drug, turning Lauren 's leukemia from a death sentence to a disease she and thousands of others can live with. The problem is, even with health insurance and a full-time job, Lauren can't afford the monthly co-pay for Gleevec. It can be as high as $2,000 a month — twice the average mortgage payment in the U.S.

"I feel like you get punished," says Baumann. "I didn't ask to get cancer; I didn't ask to get sick. I was 26 and I was perfectly healthy."_

This is essentially extortion due to price inelasticity of demand. $9,000-$12,500/month to survive, for the rest of your natural life! Patients+insurers have to pay whatever price the companies ask. For something as crucial as a life-saving drug, maybe the prices shouldn't be set only by market forces? Maybe generics should be allowed for import after patents expire the first time around?

(There are analyses of drug discovery costs around, and even after all those costs and reliance on basic research funded by taxpayer money, pharma companies make a very healthy profit. Much of the money goes into marketing, which we wouldn't need so much of in a system similar to the NHS which approves drugs for dispensing countrywide.)

Please sign the above Change.org petition (first link) and spread it! I normally don't make appeals, but this is one truly egregious case of unethical profiting.

An international panel of 115 doctors co-authored a paper decrying these ridiculous prices and offering 7 solutions, including allowing Medicare to negotiate drug prices once again (which they now aren't allowed to!):

[http://www.forbes.com/sites/matthewherper/2015/07/23/155-ang...](http://www.forbes.com/sites/matthewherper/2015/07/23/155-angry- doctors-propose-7-solutions-for-terrifying-cancer-drug-prices/)

<comment><USER31> > maybe the prices shouldn't be set only by market forces??

It's (arguably) not the market here that's the problem, but the patent. The patent means that generic manufacturers can't get in on the market and create a commodity out of it with a race to the bottom on price. The problem isn't the market, but the absolute lack of a market created by the exclusivity of a patent.

We need to find a way as a society that these companies can profit off the research and development of these drugs while still allowing generic manufacturers to do what they do best: create a real, competitive market to produce the drug in bulk.

Unfortunately I don't think there's any clear answers here.

<comment><USER32> Government funding the research + selling the drugs at cost would benefit mankind overall... but then politicians would decide how many $ to spend researching which drug per year, which has it's own downsides..

<comment><USER9> > Government funding the research + selling the drugs at cost would benefit > mankind overall...

Wasnt that how NASA was supposed to work ? Oh wait, we know how it went...

<comment><USER33> We went to the moon?

<comment><USER9> I'm talking about what happened to NASA after that. Obviously look at the ridiculous budgets they have now.

</comment></comment></comment></comment></comment></comment><comment><USER34> >India under pressure from Pharma lobby to stop gneric medicines

Title typo: should be `generic`.

</comment><comment><USER6> US Pharmaceutical companies don't give a damn about their own compatriots, so why wouldn't they try to monopolize the world?

Back in 2010-2011, a few friends of mine showed me how an online pharmacy works, I couldn't believe it - vast majority of people ordering Indian generics are Americans. The reasons? - Costs. Theyve told me it sometimes takes multiple resends of medicines for them to get through the border. Don't know how well US clamped down on it in the past several years.

</comment><comment><USER35> I heard a country in europe stopped drugs import from india on quality concerns. Is that true? Is that the real reason or is there more behind that decision?

<comment><USER36> There's a recent trade deal where concerns about data led to ban on 700 meds.

[http://www.ft.com/cms/s/0/4ded8ca4-3b8a-11e5-bbd1-b37bc06f59...](http://www.ft.com/cms/s/0/4ded8ca4-3b8a-11e5-bbd1-b37bc06f590c.html#axzz3jquJ67jM)

That follows similar concerns in the US.

[http://mobile.nytimes.com/2014/02/15/world/asia/medicines- ma...](http://mobile.nytimes.com/2014/02/15/world/asia/medicines-made-in- india-set-off-safety-worries.html?referrer=&_r=0)

[http://mobile.reuters.com/article/idUSBREA2H06Y20140318](http://mobile.reuters.com/article/idUSBREA2H06Y20140318)

(I've given up guessing what a clean URL should be. Now I'm just going to post whatever stupid URL a site gives me.)

</comment></comment><comment><USER37> Maybe the Indian generic companies should worry a little more about the frogs and flies in their manufacturing facilities. And maybe they shouldn't delete test results.

Welcome to the global race to the bottom. I doubt that a little pressure from multinational pharma companies will do much to reverse the overall trend.

[http://www.bloomberg.com/news/articles/2014-12-03/indian- lab...](http://www.bloomberg.com/news/articles/2014-12-03/indian-labs-deleted- drug-test-results-documents-show)

<comment><USER38> > _I doubt that a little pressure from multinational pharma companies will do > much to reverse the overall trend._

Good. An imperfect (with the odd frog), but cheap, system that can save thousands of lives is perfectly acceptable to me.

<comment><USER39> Really? I'd rather die than eat some fly poop that found its way to my life- saving medication!

<comment><USER40> Than do that, but don't stop others. Have your originals, let those that need it have their generics. Just because you shop at waitrose doesn't give you the right to stop people shopping at Aldi!

<comment><USER25> StavrosK is being sarcastic. That's why he specified 'life-saving medication'.

<comment><USER39> Thank you, you nailed it.

<comment><USER40> My bad. Sorry.

<comment><USER39> No problem, you can never tell with Poe's law.</comment></comment></comment></comment></comment></comment></comment></comment>


Show HN: Xenng.com, yet another site for when you are bored - <AUTHOR> http://www.xenng.com I've spent my free time on this for practicing Ruby and other things that interested me (redis, cassandra, unicorn,...). Hope it's enough to pay for EC2 monthly bill. All ideas/comments are welcomed.<p>Thanks for your attention. <comment><USER2> Is this like Tumblr?

<comment><AUTHOR> No. But it's inspired by Tumblr's simplicity spirit.</comment></comment>


Show HN: Automated online workout logging with an Arduino - <AUTHOR> https://github.com/reefab/CyclingPusher

<comment><AUTHOR> My first Internet of Things project, it was surprisingly easy to make with an Arduino (first Arduino project too).</comment>


Show HN: Astral, play tabletop roleplaying games online - <AUTHOR> https://www.astraltabletop.com/?ref=hackernews <comment><USER2> How does this compare to Roll20.net, and the others in this space?

<comment><AUTHOR> For one, we're partnered with the largest RPG store so there is quite a lot of potential to grow and integrate DriveThruRPG brands and publishers into a virtual tabletop. Second, we're not trying to do too much with automation. Our goal is simplicity. My goal when starting Astral was to make TTRPGs fun and appealing to everyone. One of the biggest problems I sought to solve was the complexity of the existing services and I think we do an excellent job fulfilling that need.</comment></comment>


InNative: Run WebAssembly Outside the Sandbox at 95% Native Speed - <AUTHOR> https://innative.dev/news/introducing-innative/ <comment><USER2> For those curious why it isn't 100%:

 _The only reason we haven't already gotten to 99% native speed is because WebAssembly's 32-bit integer indexes break LLVM's vectorization due to pointer aliasing. Once fixed-width SIMD instructions are added, native WebAssembly will close the gap entirely, because this vectorization analysis will have happened before the WebAssembly compilation step._

</comment><comment><USER3> WebAssembly on desktop and servers is maturing pretty rapidly! There are several backend interpreters already in Rust and Go (life). The native, compiled options are even faster, Fastly's Lucet compiler and runtime was one of the first to implement WASI ([https://wasi.dev/](https://wasi.dev/)): [https://www.fastly.com/blog/announcing-lucet-fastly- native-w...](https://www.fastly.com/blog/announcing-lucet-fastly-native- webassembly-compiler-runtime)

The differentiator for InNative seems to be the ability to bypass the sandbox altogether as well as additional native interop with the OS. Looks promising!

<comment><USER4> I'm wondering what's the point of compiling server side stuff in wasm? Unless I forgot something, all main server languages are rather portable already, either because they are interpreted (python, node, jvm...) or can be compiled to many targets (rust, go...).

<comment><USER5> You're not confined by the instruction set below. It no longer matters if your language supports PowerPC, Power8, x86, x86_64, ARMv5 through v8 or even more exotics. Similar to the Java VM, which definitely showed the advantage of being more easily portable, it decouples the binary you deploy from the actual hardware.

Rust and Go have support for many targets but not as many as other compilers (GCC), a coverage problem that can be fixed by using WASM as intermediate and porting a WASM Runtime to that architecture.

Something like Innative would also enable desktop applications to be independent of the OS and architecture. The same binary would run on x86_64 Windows, PowerPC Mac and ARMv8 Linux.

It's basically Java but you don't have to use Java to get all the good parts.

(Disclaimer: I know the main dev of innative and do some WASM work myself)

<comment><USER6> > It no longer matters if your language supports PowerPC, Power8, x86, x86_64, > ARMv5 through v8 or even more exotics

Yeah, instead it matters which WASM runtimes it supports and which archs those runtimes support.

But that's ok, we just need one more layer of abstraction to fix the whole mess.

<comment><USER5> For innative it matters what LLVM supports and LLVM supports already dictates the support of many programming languages atleast as a superset (Rust and Go support a subset of what LLVM supports), I don't see how this is "one more layer of abstraction will fix the whole mess" when it reuses existing abstractions.

</comment></comment></comment></comment></comment><comment><USER7> [https://www.destroyallsoftware.com/talks/the-birth-and- death...](https://www.destroyallsoftware.com/talks/the-birth-and-death-of- javascript)

We're well on our way.

<comment><USER8> One of my favorite examples of life imitating art.

</comment></comment><comment><USER9> "Run a fast, sandboxed bytecode outside of the sandbox by compiling it into a binary" so just a binary. I'm not sure I understand why you would use wasm here. No one writes wasm; you compile to it (usually from llvm ir). Why couldn't you just go straight from llvm ir to a binary; skip the wasm? I suspect I'm missing something here, but it doesn't seem to make sense.

<comment><USER10> Because LLVM IR is CPU-Arch specific. For instance, IR for x86 cannot be used on ARM CPUs, which is also the reason why Apple's bitcode representation intended to make apps portable, doesn't cross the iOS (ARM) <\--> MacOs (x64) boundary, unless ARM ISA emulation is happening in Mac (like in Marzipan?)

<comment><USER11> It is not so much that the IR is specific, apart from platform intrinsics. It is that almost any optimization pass will encode architectural details, like packing and alignment.

</comment></comment></comment><comment><USER12> "We could break the stranglehold of i386 on the software industry and free developers to experiment with novel CPU architectures without having to worry about whether our favorite language compiles to it."

WASM is equivalent to early 80s ISAs but with different opcodes. Native WASM would be most efficient.

<comment><USER9> Literally the whole point of WASM is fast, sandboxed code. It's not a language, it's an LLVM target. So why turn LLVM IR into a native binary? It's basically the same thing as "native wasm", whatever that would mean. "Native wasm" is just JITed bytecode. Either that, or you're turning it into a normal binary, in which case, why even use WASM?

<comment><USER13> You get a bit of safety because Wasm programs have statically validated function calls and operate only within linear memory. If there are no bugs in the stdlib or the bytecode compiler, then the host is still sandboxed from the module even without virtual memory.

<comment><USER14> No, it's not possible to statically validate that addresses are within linear memory. WebAssembly implementations do runtime memory access checks (either with explicit if checks before some loads and stores or with virtual memory configuration).

<comment><USER15> > it's not possible to statically validate that addresses are within linear > memory

It might just be me, but I don't think this is what the parent comment said.

<comment><USER14> "Statically validated" AFAIU means there are no runtime checks.

E. g. WASM stack local variables and globals are statically validated. Compiler can translate loads and stores to locals and globals to simple movs. There are no additional runtime checks, no overhead. Unlike linear memory.

<comment><USER15> As far as I could parse that comment, it's saying that function calls are statically validated and that memory is linear. Not that all memory accesses can be statically validated.

<comment><USER10> Given WASM's 32 bit address space, you can effectively validate a programs memory access statically, with a one time initialization in virtual memory - for instance if you'd like to restrict all WASM memory to 64MB, you can allocate/map it to the top of a 4GB virtual address space, effectively giving it a start address of 4GB-64MB.

Since OS/process virtual memory bound checking is handled by the hardware, the one time setup above will lock down WASM memory access to within the 64MB, without software runtime overheads.

This is exactly why WASM memory was picked to be linear (unlike virtual memory that can have holes in continuity)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Isn't it also using 32 bit pointers on 64 bit machines? That should also improve performance a bit.

It's a shame that the x32 ABI is almost abandoned nowadays, it has some modest improvements for applications that don't need that much memory.

<comment><USER17> why u bully me? ily and ur game diep.io

</comment></comment><comment><USER18> WASM sounds great and all with it's sandbox like NaCl. But I have to imagine over 90% of client and server computers are x86 and ARM and I don't see those targets losing any share in the near or long term. Also I don't see wasm being used in micro controllers as well.

</comment><comment><USER19> Isn't the sandbox a useful feature of WebAssembly? It gives you much better security guarantees than running untrusted native code on your system.

<comment><USER20> It looks like they provide different levels of sandboxing, so you can tweak things based on your specific requirements.

</comment></comment><comment><USER21> Alternatively: run native code at least 5% slower than before.

<comment><USER22> Before or after turning off Hyper Threading and speculative execution on your Intel microprocessor?

(The point being that 5% slowdown is a drop in the bucket compared to what we've already lost due to Intel's chip design problems. AIUI, HT is a 15-20% slowdown, and SE was another 20% slowdown.)

<comment><USER23> But now you can in theory run your programs on <strange underused architecture> that doesn't suffer from those vulnerabilities thanks to the power of WASM.

<comment><USER22> > on <strange underused architecture>

Did the Mill CPU finally get first silicon? ;)</comment></comment></comment></comment>


The mystery of the continuously functioning battery from 1840 - <AUTHOR> https://www.smithsonianmag.com/smart-news/mystery-continuously-functioning-battery-1840-180954028/?no-ist <comment><USER2> Might it be thermoelectric?</comment>


Imagine K12 Announces Start Fund and Rolling Admissions - <AUTHOR> http://www.imaginek12.com/1/post/2013/04/imagine-k12-announces-start-fund-and-rolling-admissions.html

<comment><USER2> This is great news: it will allow new education startups to run for a whole year to validate whatever they've built in real classrooms. Because of the cyclical nature of the K12 school year, it can be hard to demonstrate traction without the means to operate for a full school year, and this new start fund move solves that problem.

I went through the first iteration of Imagine K12 with ClassDojo, and every member of the team was incredibly valuable in helping us launch the company. If you're doing an education technology startup, or thinking of starting one, I highly recommend you check them out.

</comment><comment><USER3> I'm part of the latest cohort (co-founder, www.accredible.com) and I have found the programme to be enormously valuable. If you're starting an edtech company it's definitely worth going for. Really excited about the new format for the next cohort; some awesome changes. Happy to talk at length about my experiences if people request it. Also happy to chat with anyone interested in applying!

</comment><comment><USER4> I was at a big edtech conference last week (Education Innovation Summit in AZ).

Something like a dozen of the 100 presenting companies came through Imagine K12, which is incredible. I know a lot of the people involved, and if you're thinking of starting something in edtech you should DEFINITELY apply. It's a great program.</comment>


Discovering How the Brain Works Through Computation - <AUTHOR> https://engineering.columbia.edu/press-releases/discovering-how-brain-works-through-computation <comment><AUTHOR> Researchers at Columbia Engineering, the Georgia Institute of Technology, and Austria's Graz University of Technology have proposed a computational model of the brain based on neuronal assemblies, to expand knowledge of how the brain operates at an intermediate level. The model's application to syntactic processing in language production corresponds with experimental results. Columbia Engineering's Christos Papadimitriou and colleagues developed a computational system, the Assembly Calculus, that encompasses operations of neuronal assemblies that seem to participate in cognitive processes like imprinting memories, concepts, and words. The researchers demonstrated, analytically and via modeling, that the Assembly Calculus can be plausibly realized at the neuronal and synaptic level. Papadimitriou said the model provides a theoretical framework for logical transformation of neural activity into thought and action.</comment>


Lift has launched - <AUTHOR> http://lift.do

<comment><USER2> Really useful app. Have been using it in beta for two months. Congrats to the team!

<comment><USER3> I second this, it is really useful for developing awareness about yourself and your habits.</comment></comment>


Category Theory for the Working Hacker [video] - <AUTHOR> https://www.infoq.com/presentations/category-theory-propositions-principle <comment><USER2> To be honest, Category Theory is the _last_ thing a software developer ("working hacker") should worry about learning. It is indeed a fun subject, it has grown into a large branch of algebra, it has connections with functional programming (lambda calculus) etc. But if one wants to be a good programmer, there is so much of _really_ useful and important (and difficult) stuff to learn before you can even come to appreciate what, if anything, knowing Category Theory can do to improve your software engineering skills, that I would dare to characterize it just as an obscure subject that in all likelihood is not worth spending your time on.

<comment><USER3> I'm curious, what should come before as a far as a mathematical subject ? Graph theory ? Number theory ?

<comment><USER4> Depends on what you do. I work in robotics, so probability and linear algebra are the two most indispensable subjects I know. Graph theory might be a little more generally applicable.

At the end of the day, you don't need a lot of math to write CRUD apps. The more math you know, though, the more approaches you'll have to formulate and solve problems.

<comment><USER5> A lot of graph theory is implemented as linear algebra, using things like adjacency matrices.

</comment></comment></comment></comment><comment><USER6> [https://www.youtube.com/watch?v=I8LbkfSSR58&list=PLbgaMIhjbm...](https://www.youtube.com/watch?v=I8LbkfSSR58&list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_)

I love this series

<comment><USER7> I read his blog, never new he had some videos.

[https://bartoszmilewski.com/2014/10/28/category-theory- for-p...](https://bartoszmilewski.com/2014/10/28/category-theory-for- programmers-the-preface/)

interesting enough.

</comment></comment><comment><USER8> LtU discussion:

[http://lambda-the-ultimate.org/node/5366](http://lambda-the- ultimate.org/node/5366)

</comment><comment><USER9> As a working programmer that is curious about category theory, I feel like this misses the mark completely. I watched this yesterday, and this is what I remember:

1) I will tell you why category theory is relevant to you, the working programmer.

2) Here are the 2 most important data structures that you don't use in your day job.

3) Look at how they relate in this mathy not applicable way.

4) Conclusion: lambda calculus is awesome.

What I would like to see is:

1) I will tell you why category theory is relevant to you, the working programmer.

2) Here is a realistic but simplified problem and a solution written in python that is obviously the wrong approach to solving the problem. With category theory, we know this is the wrong approach because the math is wrong (and don't go into the math).

3) Here is another example that seems like a decent approach to solving the problem. With category theory, we know this is the wrong approach because the math is wrong (and don't go into the math). Doing it our way has these benefits...

4) Conclusion: learn category theory to become a better programmer.

If you can't do that, find some other way to illustrate the concrete benefits of learning category theory. If there aren't any concrete benefits, it's like telling baseball players they should learn physics to have a better understanding of baseball.

</comment><comment><USER10> Is the diagram at 30:05 right? It says: (A+C)x(B+C)=(A+B)xC However I can't stop thinking it should be: (AxC)+(BxC)=(A+B)xC

<comment><USER11> That's how I learned it in grade school, yup.

</comment></comment><comment><USER12> A nice presentation I found to introduce software engineers to category theory and its areas of application:

[http://www.cs.toronto.edu/~sme/presentations/cat101.pdf](http://www.cs.toronto.edu/~sme/presentations/cat101.pdf)

I don't know category theory so I can't vet it. My skimming of it did show it was interesting, though.

</comment><comment><USER13> This is fantastically timed and very well explained. Our company is working deeply with Category Theory right now as we believe programming in the future will find itself focused primarily on the task of orchestrating AI to code.

<comment><USER14> What company is that?

<comment><USER13> [http://www.emblem21.com](http://www.emblem21.com)

</comment></comment></comment><comment><USER15> Why don't things like Category Theory and Set theory update their terminology to align with more modern words of describing these?

Why is a "function" and "arrow"? A "function" implies an operation that is part of a larger system of organized operations. An "arrow" implies stone age technology. One is infinity more descriptive in my opinion.

Is there a reason for this?

<comment><USER16> The word function has a sort of precis mening in math as a rule mapping each NUMBER in some domain to some NUMBER in a codomaon. The word arrow however can refer to any directed relation including less than or divides or what not, as long as they are composable and associative

<comment><USER16> Further math is sort of a stone age technology

<comment><USER17> wtf are you on about? That is not how math works.

<comment><USER16> I apologise for my drunken and incorrect silliness.

Aside from that, would you please enlighten as to what you meant by "that's not how math works"?

<comment><USER17> Sorry for my harsh comment; here's what I'm thinking of...

In math, you are dealing with many different kinds of object, not just numbers. In fact, one of the big realizations that led to modern mathematics is that _not all mathematical objects can even be coded as numbers_!

Your remark about "arrow" being more general than function is correct; but functions do not map only between sets of numbers, but between arbitrary sets, some of which contain elements that are not numbers, or even encodable as such.</comment></comment></comment></comment></comment></comment>


Scientists are copying U.S. climate data, fearing it might vanish under Trump - <AUTHOR> https://www.washingtonpost.com/news/energy-environment/wp/2016/12/13/scientists-are-frantically-copying-u-s-climate-data-fearing-it-might-vanish-under-trump/?hpid=hp_rhp-top-table-main_climatedata-1130a:homepage/story&utm_term=.d3a6fefd7265 <comment><USER2> Now that Trump's cabinet picks are becoming public, all bets are off. It is entirely likely that vital U.S. research projects will be shut down at short notice. I don't think these scientists are being paranoid at all. The data, while public, is on government funded servers and Trump and his cabinet will soon have great influence over that government.

People who look at Trump's decision not to build a wall or not to prosecute Hillary as a sign of moderation are missing the bigger picture. We can expect a worst case outcome on anything Trump can profit from that can make it through a Republican congress.

<comment><USER3> wouldn't shutting down research projects cause large losses of jobs, and further, cause downstream effects on the suppliers (DOE has a multibillion dollar budget, there are many companies that provide expensive toys to DOE, etc etc)? That seems to go against Trump's message about jobs...

<comment><USER2> So far Trump has always said what he needed to say to accomplish his goals, not the other way round. I am sure any government funds that profit him directly or indirectly will keep flowing, but I don't think we have any reason to believe that he is motivated by the prospect of keeping jobs.

</comment></comment></comment><comment><USER4> 1) They should have done this long ago anyway.

2) I don't really understand this. If Trump thinks it is a "hoax", why would he try to delete the evidence of their crime?

3) "One Trump adviser suggested that NASA no longer should conduct climate research and instead should focus on space exploration." Good, mission creep is the main tool used to destroy government agencies.

4) This seems like chicken little behavior. I really doubt anyone is going to "delete" any data, instead they will stop getting funding to store it, run the servers, etc. But once again, if he thinks it is a "hoax" he would want more people to access the data.

<comment><USER5> It's not "mission creep". The very first objective listed in the National Aeronautics and Space Act of 1958 is "The expansion of human knowledge of phenomena in the atmosphere and space".

<comment><USER4> Thanks, you are correct. I did not know that.

</comment></comment></comment><comment><USER6> The Internet Archive would take it, I'm sure. And they're just shoring up their backup in Canada. [http://archive.org/donate](http://archive.org/donate) ArchiveTeam has been working on publicly-available data from government websites as well. They don't seem to have a page on the wiki yet, but here's the list they're going from [https://docs.google.com/spreadsheets/d/12-__RqTqQxuxHNOln3H5...](https://docs.google.com/spreadsheets/d/12-__RqTqQxuxHNOln3H5ciVztsDMJcZ2SVs1BrfqYCc/htmlview?sle=true#gid=0)

Edit: that's actually a list made up by meteorologist Eric Holthaus, however AT is grabbing it as well.

</comment><comment><USER7> It's pretty scary when a political party has taken a hostile stance to science because it conflicts with their ideology. If anybody hasn't heard of Lysenkoism, it's definitely worth reading about:

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

<comment><USER8> Look up Jonathan Haidt's discussion on science denial and political ideology. It's not just for conservatives / Republicans. Everyone does it.

<comment><USER9> > Everyone does it.

Like, say, acting out of internalized ethnic bias, everyone does it, but not everyone does it _equally_ , and that everyone does it to some extent is no reason not to call out the KKK (or their anti-science analogs) as a particular problem.

<comment><USER8> Anything to get a reference to Hitler or the KKK in, eh?

</comment></comment></comment></comment><comment><USER10> They should make data publicly available and available for replication anyway. That goes for all data collected on NSF, NIH, and other government funding sources.

<comment><USER11> As an employee of the NRAO, I can tell you almost everything collected is publicly available. We do respect a proprietary period of one year, during which only the principal investigator's team can access the data, but after that those observations become public.

Our internal storage cluster holds around half a petabyte. If anybody wanted to, they could certainly mirror it, but since we're talking about radio astronomy data here it's not likely to be interesting to anybody but a radio astronomer. You can of course take a CASA tutorial and learn how to reduce that data yourself!

To the best of my knowledge, this is general policy for the NSF and other NSF- funded institutions have the same charge. Archive development is a big topic for all scientific institutions. It's actually a fairly significant part of my job.

</comment></comment><comment><USER12> OK. So Trump is the coming president, and GW is real and Trump will not handle it properly. So it is very likely GW bad predictions are going to happen. My question is: when will we start to see massive sell of beach houses?

</comment><comment><USER11> I think it's overly paranoid, personally, but there's no reason not to have more backups if possible. Just adding up the few rows in the spreadsheet that have size estimates, it's going to be at least 0.2 PB. I hope they can find enough donor to supply the storage.

</comment><comment><USER13> What's to stop these scientists from fudging data to meet their agenda. Then they can point at the fed and claim they manipulated it.

End of the story is trust no one, make your own backup of the data, and verify for yourself if anything has changed in the future.

</comment><comment><USER14> Is not there a ban on political subjects this week?

Anyway it is quite a funny situation. Some climate scientists had to fight tooth and nail, to get raw climate data available.

And mirroring online data and media content, has been a best practice in some communities for several years.

<comment><USER15> I thought it was last week, and I think it was canceled early as well.

<comment><USER16> Civility has deteriorated since.

</comment></comment></comment><comment><USER17> Remember 8 years ago when Obama was taking office and gun sales shot through the roof because everyone thought Obama was going to 'take their guns'?

Perhaps the fear here, as was then, is not entirely justified. Just because something is _possible_ does not make it _probable_. But if it gets people off their ass and organizing to defend their positions, all the better.

<comment><USER7> That's a ridiculous comparison. Obama had never made any moves about "taking guns." Trump has campaigned on climate change being a "hoax" and has denigrated the science for years. Then before taking office he's already asking for lists of individuals that generate this data, when there is absolutely no use for this list other than intimidation.

If Obama had asked for registry of all the gun shops and their owners a month before taking office after years of calling for taking away guns, then, sure, go ahead and make the comparison. Otherwise its just a misleading false equivalency.

<comment><USER17> The comparison is valid because both are examples of people trying to justify their fears of what may happen because of what they see as a clear intent, when there is no actual proof of intent.

The fact that a candidate may have asked for lists of client scientists after calling climate change a hoax, and that from this alone you extrapolate that he must be aiming to delete their data, is association fallacy.

<comment><USER7> >what they see as a clear intent, when there is no actual proof of intent.

You have ignored the actual contents of my post.

On one side of this, the "what" is nonexistent or completely fabricated. On the other side, there are unprecedented and chilling political demands.

The view from 30,000 feet can make dissimilar things look similar, but that doesn't mean that it's the best view. Details matter.</comment></comment></comment></comment>


Hello World on z/OS - <AUTHOR> https://medium.com/@bellmar/hello-world-on-z-os-a0ef31c1e87f <comment><USER3> Missed my favourite part of learning the mainframe: where the enter key is.

Return and enter and two different keys, but, on most modern systems, they perform a similar function. On z/OS Return moves down a line (similar to Tab, but ignoring all entries on the current line) and Enter actually sends to data off.

Once you get used to it, it's really no different to the Linux or Windows command lines. It's certainly dated, but that's what you get from running a system designed to be fully backwards compatible (with 24-bit, 31-bit and 64-bit addressing modes) that can continue to run software that's over 40 years old.

[For reference, the mainframe originally had 24-bit addressing. When IBM wanted to add 32-bit addressing, they found that people had been using the remaining byte to store other data, such as flags. So, to avoid breaking customer applications, the 32nd bit is used to identify whether the address is 24-bits or 31-bits]

((And yes, for the record, I am an IBMer, working in a z/OS product that's over 40 years old))

<comment><USER4> The ISPF editor is actually more than decent. About 20 years ago my father was writing COBOL (on both AS/400, now iSeries, and PC) using SPFPC, an MS-DOS editor inspired by ISPF. The line command/primary command mechanism is really no more quirky than vi's movement and insert modes, and it makes a lot of sense for languages like COBOL.

<comment><USER5> SEU, the built in editor on the iSeries/IBM i, is however rather shitty. It does actually do some linting, but no syntax highlighting and the 5250 interface never really got improved as much as 3270, so its 24x80 or 27x132. Granted you're supposed to use an eclipse based IDE since SEU is no longer supported, but to just look at stuff really quick. A fast editor is preferred.

But I agree, ISPF editor is rather good.

<comment><USER6> I think SEU is far better than you seem to giving it credit for. In fact, I used it for decades and my only real complaints about it started when IBM stopped actively maintaining it. Over the years I also tried using various other "modern" editors, only to eventually cast them aside as being too unstable, buggy, or just slow and clunky (like Eclipse). In fact, I can only recall one particular instance where using such an editor (Eclipse in this case) actually proved unquestionably advantageous over using SEU, but even then I quickly got annoyed at some of the stupid (IMO) implementation details of it.

</comment></comment></comment></comment><comment><USER7> The reason why things are the way they are on mainframes, and how you should think intuitively, becomes a lot clearer once you realise that they are a long-evolved version of the very first mechanical punched-card processors:

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

In fact, I'm almost willing to bet that the foreignness of mainframes to the average developer is due to mini/microcomputers having become dominant and taken a very different evolutionary path; Linux and DOS/Windows have far more in common with each other than mainframe OSes, despite their huge differences, because they evolved from mini/microcomputers and UNIX.

<comment><USER8> > Linux and DOS/Windows have far more in common with each other than mainframe > OSes, despite their huge differences, because they evolved from > mini/microcomputers and UNIX.

Surely Linux and the Windows NT line (don't confuse the Windows 9x line, which evolved indirectly from DOS with the Windows NT line) have much more in common with each other than mainframe OSes, but Windows did not evolve from UNIX:

The Windows 9x line evolved indirectly from DOS (cf. [1]). DOS was inspired a lot by CP/M.

The Windows NT line is a spiritual succesor to VMS (cf. [2]). The kernels of both operating systems were designed by Dave Cutler, who did not like UNIX (cf. [3]). Indeed, Windows NT has I/O Completion Port (IOCP, [4]) as an - <USER2> my opinion - better I/O system than the UNIX process input/output model.

[1] [https://blogs.msdn.microsoft.com/oldnewthing/20071224-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20071224-00/?p=24063)

[2] [https://www.itprotoday.com/management-mobility/windows-nt- an...](https://www.itprotoday.com/management-mobility/windows-nt-and-vms-rest- story)

[3] [https://en.wikipedia.org/w/index.php?title=Dave_Cutler&oldid...](https://en.wikipedia.org/w/index.php?title=Dave_Cutler&oldid=838448172#Attitude_towards_Unix)

[4] [https://en.wikipedia.org/w/index.php?title=Input/output_comp...](https://en.wikipedia.org/w/index.php?title=Input/output_completion_port&oldid=774867977)

<comment><USER9> > The Windows 9x line evolved indirectly from DOS

Not sure what you believe to be 'indirect' about that relationship. That Windows codebase started out running on DOS and ultimately wound up so closely coupled that they shipped together in the same box as the same product.

> Windows did not evolve from UNIX:

Windows, through its DOS lineage, does indeed have some roots in the Unix tradition. (This should be unsurprising, since Microsoft was one of the more successful Unix licensees in the early 80's.)

[https://blogs.msdn.microsoft.com/larryosterman/2005/06/24/wh...](https://blogs.msdn.microsoft.com/larryosterman/2005/06/24/why- is-the-dos-path-character/)

To put Cutler's dislike of Unix into perspective, DOS (and Windows) had close to a decade of development prior to his involvement. (DOS shipped in 81, Cutler got involved in ~88, his first product shipped in ~93, and the old DOS- based Windows wasn't fully deprecated until 2001-1.)

<comment><USER10> DOS commands and hierarchical file paths were based on DEC's TOPS-10, via CP/M, both of which Cutler would have been familiar with.

DOS was at best a mongrel mash-up. It no more evolved from Unix than AmigaOS did.

<comment><USER9> > DOS commands and hierarchical file paths were based on DEC's TOPS-10, via > CP/M, both of which Cutler would have been familiar with.

I'm sure he was, but DOS got pathnames in March of 83 and Cutler didn't join until 6 years later.

</comment></comment></comment></comment></comment><comment><USER11> This is a nice reminder about how one feels when one meets a piece of technology for which one's intuition can't offer anything useful, many "common sense" assumptions end up incorrect, and you don't even know the right words to feed to a web search engine.

I'll try to memorize this feeling, and remember it every time I try to explain something technical to people outside that field. Maybe it will help me explain better.

<comment><USER12> I remember when someone referred to Unix as the User Hostile Operating System.

They obviously never used MVS (z/OS's ancestor), OS/400 (now I/OS or something like that) or Burroughs' MCP (when an OS lends its name to a movie super villain, you have to respect it).

<comment><USER12> BTW, there's an interesting backstory on how MCP ended up being Tron's villain: Bonnie MacBird, who co-authored the story with Steven Lisberger, is Alan Kay's wife and Alan Kay was working at Unisys (or Burroughs) at the time she wrote it, as well as being an advisor to Lisberger and his partner and producer Donald Kushner.

</comment></comment></comment><comment><USER13> > IBM uses special and completely unintuitive names for basic concepts…. > because OF COURSE THEY DO.

As I recall, it's called "Bluespeak", and that sort of thing is pretty common actually. I was educated in networking at a Cisco netacad, so I use Cisco terminology that is apparently not universal.

Programming languages do this too for some reason: Sum type, tagged union, discriminated union, variant...

<comment><USER14> The point that M. Bellotti came close to, but missed, is that "of course they do" is because _every field has jargon_. The error here is in thinking that one set of jargon is intuitive and normal whilst another set of jargon is "special and completely unintuitive".

The simple truth is that there are many people to whom jargon such as "WIMP", "ISOs", "flat UI", "IIFE", "DOM", "pull request", and "UX" is _equally as opaque and foreign_ as "DASD", "APAR", "SRC", "PMR", and "PTF" ([http://jdebp.info./FGA/fix-terminology.html](http://jdebp.info./FGA/fix- terminology.html)). _All_ are in fact niche terminology.

<comment><USER6> IIRC, as the story goes the folks who designed IBM's SNA (Systems Network Architecture) _went out of their way_ in order to come up with a whole new set of technical jargon for that. I don't remember why, though.

BTW, I've been around long enough to have had conversations like the following:

Them: "I want to run Lotus 1-2-3." (This was the near-universal spreadsheet standard before Microsoft Excel came along.)

Me: "OK, then first we're going to have to get you a PC."

Them: "What's a PC?"

Then I would have to explain that this was a "Personal Computer". And not just any personal computer, either, but rather an "IBM" PC, in order to distinguish it from an Apple or Commodore or TRS-80 or TI-99/4A or Atari or whatever. And they might respond that they didn't even know that IBM _made_ personal computers. (Which they don't any longer, of course.)

</comment></comment></comment><comment> tony-allan This article brings back some happy memories! Well done Marianne.

z/OS, TSO, JCL and the rest are different to what most people are used to but this is where modern IT started, where virtualisation, high availability and serious backward compatibility were invented.

Peel away the layers of technology is a large company and you will often find a mainframe managing the core data of the business.

</comment><comment><USER12> Another shameless plug: I think the IBM 3270 (the ones with beam-spring keyboards) was the greatest terminal ever and I missed its screen font so much I had to recreate it.

It's now my most popular GitHub project and is included in the Debian repos:

[https://github.com/rbanffy/3270font](https://github.com/rbanffy/3270font)

</comment><comment><USER12> Just a shameless plug: there is very little information in the form of Stack Overflow-like things and getting started with mainframes is, as this article shows, pretty hard. I made this SE proposal that's in commitment stage (where people commit to support the community). If you know about mainframes and are willing to be part of it, you should commit too.

[https://area51.stackexchange.com/proposals/118484/mainframes...](https://area51.stackexchange.com/proposals/118484/mainframes?referrer=iAGSGOUsQhhu5K9oA-93Cw2)

<comment><USER15> The hard part for mainframes is that unlike Linux and the BSDs, you can't acquire a bunch of 4 year old Core i5 systems for $80 each (or sometimes free) and install a bunch of different OS varieties on them to test stuff in your home office or the bedroom of a bored teenager (example: centos hosting KVM VMs, debian + xen, freebsd on bare metal, etc).

<comment><USER12> With zSeries it's a bit harder, but for the iSeries (I still count AS/400 as alien enough to be "mainframes"), you can get machines for reasonable prices. The prices drop precipitously when that hardware is dropped from the last OS release.

For Z machines, you can use Hercules as an acceptable approximation. A couple questions I posted as example are about Hercules.

<comment><USER16> There's no legal way for a hobbyist to run anything better than MVS 3.8j on Hercules and even if you're not morally opposed to piracy, z/OS is virtually impossible to find and configure.

<comment><USER12> There is a Hercules-like product made by IBM that can legally run z/OS, the Z Development and Test Environment. It's expensive, but legal.

Also, a surprising number of concepts of MVS 3.8j are present in z/OS, so what you learn there is not wasted. As the article points out, a lot still spins around 80-column punched cards. If you go for the less bare distributions of MVS, you'll see lots of software that tries to replicate the functionality of newer releases.

As an example, I pinged Cincom Systems to see if they had an old version of Mantis that could run on MVS 3.8 that I could obtain for free (Mantis was the language I used on mainframes). To my surprise, that version is still a commercial product and is fully supported. Things dom change very slowly in mainframe land.

</comment></comment></comment></comment></comment><comment><USER17> In the 'Allocate New Data Set' screenshot, it says - for the expiration date field - that the formats are 'YY/MM/DD, YYYY/MM/DD, YY.DDD, YYYY.DDD in Julian form, DDDD for retention periods in days or blank'. (I added some commas, which I assume are supposed to be there, but are just line breaks in the screenshot.)

Does that mean z/OS supports the Julian calendar?

<comment><USER18> It does, In a similar vein Cobol has the ACCEPT DATE (YYMMDD) and ACCEPT DAY (YYDDD) constructs for retrieving the date. There's an optional argument for supporting four digit year codes however. Julian dates pop up in some wonky places across the system.

<comment><USER19> Are you sure?

Today is July 31, 2018 in the United States, which adopted the Gregorian calender per the act of British parliament entitled "An Act for Regulating the Commencement of the Year; and for Correcting the Calendar now in Use" (24 Geo. 2 c. 23) by skipping September 3-13, 1752 (obviously this was prior to the American revolution).

In the Julian calendar, there are leap days every four years. In the Gregorian calendar, there are leap years every four years except every 100 years except every 400 years. That is, 2000 and 2004 are leap years, but 1900 is not a leap year.

Since 100, 200, 300, 500, 600, 700, 900, 1000, 1100, 1300, 1400, 1500, 1700, 1800, and 1900 were leap years in the Julian calendar but not the Gregorian calendar, one must subtract 15 days to get to the Gregorian date to get the Julian date.

Today is July 18, 2018 in the Julian calendar.

The Soviet Union adopted the Gregorian calendar in 1918 by skipping February 1-13. They were the last. This is why the famous February revolution took place in March and why the October revolution took place in November. (Though I noticed Reuters announced it had been 100 years last year on the wrong day.)

Mainframes are weird, but I really doubt they don't use the Gregorian calendar whatever the text on the screen says.

</comment></comment></comment><comment><USER20> The mainframe infrastructure is both the core feature and showstopper bug of the platform. On the plus side, it has empowered countless core business applications to scale years, even decades, beyond their original development lifecycle. On the negative side, it has created a stagnant cult of mainframe "priests" who oversee a platform that most businesses would rather get rid of, if they could only figure out how.

My startup was acquired by BMC software, one of the largest third party providers of mainframe software, and I also worked for EMC for a time early in my career, so I spent a lot of time hanging around the mainframe space. Two quick anecdotes:

\- working on a giant data center move for a big bank, there was a break room filled on a Saturday with operations people from the "open systems" (non- mainframe) and mainframe teams. I was struck by the contrast: the Unix/windows operations folks were tattooed, pierced, jeans and t-shirts, late 20s. The mainframe folks were short hair, polos and jeans, mid-50s. The two groups self segregated into clusters on opposite ends of the room, not speaking to each other.

\- at a BMC leadership offsite, I found myself st the dinner table with a couple of mainframe engineering and product directors. After a few drinks, we got on the subject of why more tech companies weren't using mainframes. "They're so reliable! Why wouldn't you just go out and rent one from IBM, and then you don't have to worry about uptime or stability?". I explained that the fashion had become to build the reliability into the application and assume that the hardware was not reliable. This confused them. "That sounds like a huge pain in the ass, why would you bother dealing with that?" So I explained that the cost per compute cycle was so much cheaper that it made it worth it, plus open source, etc etc

One of them kept pressing: "but Facebook could just take all the engineers they're devoting to building reliable infrastructure and shift those people to writing customer facing code!"

The other director stopped him and said, "don't you see? They've already done it. There's no reason for them to go back now. People have figured out that they don't need mainframes to get mainframe reliability". The other director just kept shaking his head and we moved to other subjects.

This conversation happened in 2014.

<comment><USER21> One of my older coworkers told me that IBM used to have a travelling mainframe demo in the back of a truck. As part of this demo, they would start a big computation, and then reach into the mainframe and start pulling out RAM and entire CPUs straight from the sockets, while the thing kept right on computing.

<comment><USER22> ZFS developers like to do this with hard drives :) But how did IBM do that with _RAM_? Do mainframes have… redundant RAM? Like literally sticks mirroring others?

<comment><USER23> I have seen one PC-based server that had redundant RAM. I never tried pulling out RAM modules, but I guess there is not much point in having a RAID1-like arrangement for RAM if the machine cannot handle random RAM modules dying without crashing the OS. And it wasn't even a super high-end system.

<comment><USER24> > I have seen one PC-based server that had redundant RAM

Yes, I've seen this too, and on lowish-end servers.

<comment><USER25> Memory mirroring is a pretty common feature on basically every x86 server I've used (going back to the Core 2-based Xeon's, no experience with older platforms), though I've never tried just yanking DIMM's out and wouldn't recommend trying it.

</comment></comment></comment></comment></comment></comment><comment><USER26> I find this sort of complexity absolutely fascinating: I imagine it is similar intellectually to learning of a new order or family in biology: you understand the mechanisms and underpinning goals, but the mechanisms and results are wholly foreign to you.

Had a similar experience with the Bloomberg terminal, which is a similar evolutionary offshoot. (Think "what if the GUI had never happened, but the 3270 form-style CLI had gained a mouse and graphical representations?")

<comment><USER27> I mean, DOS had plenty of pseudo-graphical interfaces in the 90s: Norton Commander, Borland IDEs and such, down to the use of the mouse―so it's rather weird seeing people treating that paradigm as completely alien.

<comment><USER26> I am explaining it quite poorly. It's different from Commander etc because they were (to my mind) essentially WIMP interfaces. You _could_ use them with a keyboard, but it wasn't really the paradigm.

BBG's terminal is fundamentally still keyboard-driven: you _can_ use the mouse, but in the same way you can use a mouse with emacs: you're going to be driven back to the keyboard sooner or later, so you might as well stay there.

There are some introductions on YouTube, but they're all horrible. I'll see if I can find a good one.

</comment></comment></comment><comment><USER28> I demember doing virtualisation/containerisation for Linux on various platforms (including s/390 and z/VM but also VMware and Xen) at IBM. No matter what the platform was, the PMs would refer to the VM/container as an 'LPAR' (logical partition). Fun times.

<comment><USER29> Me too! I setup a couple of Linux LPAR on AS/400 - iSeries running OS/400\. The distro was RedHat for PowerPC. One LPAR was for a Linux/Apache/PHP stack that used the DB2/400 database on the iSeries, and the other was to host an Oracle 8i instance. DB2/400 was a great RDBMS but there was an application requirement for an Oracle database, so the director of IT at the time said that if a DB is required then it must go on the iSeries since it hosts the primary DB the company used. I didn't care for his rationale, I just thought it was fun to be working with LPAR on the iSeries.

<comment><USER12> > it must go on the iSeries since it hosts the primary DB the company used.

Putting all the eggs in the same basket to justify the basket. That's classical pointy-haired thinking.

<comment><USER6> Unlike so many "modern" systems, these systems are designed to let you to put all of your eggs in one basket if you want to, and never even break a sweat! Their built-in level of reliability (they're almost bullet-proof) generally allows this, too. You may very well have legitimate reasons for not doing it, though, including regulatory requirements and such.

<comment><USER12> The AS/400 descendants are not as bullet proof as the zSeries. They are POWER servers similar to high-end Intel boxes, mostly the same hardware as their AIX machines - RAID, ECC memory, multiple PSUs but, IIRC, won't easily recover from failed CPUs or anything like that.

<comment><USER6> I'm not going to disagree with this, at least not concerning the typical POWER i box. But for the higher-end boxes at least (the ones that can handle 16 LPARS or more - or at least they could back in the day), I expect that there's considerable redundancy built-in. I doubt it's to the level of a higher-end zSeries, though.

It's been a long time now since I've managed hardware so I don't really know what the current situation is. But I happen to have ready access to a hardware document from around 2008 (the last time that I worked with such large system), and it lists a whole slew of RAS features that were copied from the mainframe. I expect that if I tracked down the corresponding document for a current high-end system that it would list even more.

That said, it was generally my experience that the whole platform family (low end to high end, new systems and old) was just rock-solid reliable - not at all like "The server crashed again - time to reboot it!" situation I usually found on the Wintel side of things. Plus stuff like malware was practically unheard of. And I've worked on systems that at any given moment might have thousands of users on them, and maybe tens of thousands to hundreds of thousands of jobs. From an operational perspective this might not have necessarily been the best idea, for a variety of reasons, but at least the system could handle it easily. And much like mainframes, unexpected outages were basically unheard of - if they ever happened they were extraordinary, jaw-dropping events. I'm not claiming the platform was/is perfect, though.

</comment></comment></comment></comment></comment></comment><comment><USER30> Check this out: [https://www.youtube.com/watch?v=Uv7ThVwb7m8](https://www.youtube.com/watch?v=Uv7ThVwb7m8) BASICS of running COBOL / JCL on z/OS. Almost of a conundrum like React/Redux. Almost.

<comment><USER18> This is literally the video I ripped my first JCL from in my post above. I believe the relevant section is around 4:30 :)

</comment></comment><comment><USER14> Whilst the ways that one does command-line stuff and full-screen editing with block-oriented (rather than character-oritented) terminals are an important difference to learn, there are, of course, things here that are _not_ different.

* There's still "object" code, and a "link (edit)" step.

* The function key mappings such as F3 for Exit are Common User Access standards, and were to be found in some Microsoft and IBM softwares for PC operating systems in the 1980s; most prominently perhaps in the various "E" editors and clones thereof available on PC-DOS and OS/2.

* The underlines for the menu item hotkeys are also Common User Access things, as is F10 for bringing focus to the menu.

M. Bellotti would gain by learning about the "TE" line command. Xe would also gain by not abusing the word "legacy", especially since the so-called "legacy paradigm" of IBM's "panels" on block-oriented terminals is pretty much the same paradigm as forms on a WWW browser. (-:

* [http://jdebp.info./FGA/legacy-is-not-a-pejorative.html](http://jdebp.info./FGA/legacy-is-not-a-pejorative.html)

And the doco, IBM's and others', is not really wildly different, in both range and content, to other platforms'.

* Gary DeWard Brown (2002). _zOS JCL_. John Wiley & Sons. ISBN 9780471426738.

* [https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pag...](https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R3SC193621/$file/f54em00_v2r3.pdf)

* Mike Ebbers, John Kettner, Wayne O'Brien, and Bill Ogden (2012). _Introduction to the New Mainframe: z /OS Basics_. IBM Redbooks. ISBN 9780738435343.

</comment><comment><USER31> FWIW, this book ("Fake Your Way Through Minis and Mainframes" by Bob DuCharme) provides a good short user-level introduction to z/OS (and VM, and VMS, and...):

[http://www.snee.com/bob/opsys/fullbook.pdf](http://www.snee.com/bob/opsys/fullbook.pdf)

</comment><comment><USER32> Hilarious! (disclosure: I am a mainframe systems op/dev)

The best part is where they didn't know about the INSERT key. I can understand z and ISPF being a hassle if you're used to modern computing but the mainframe logic is actually logical, and probably predates whatever modern stuff you're on to... like "files". :)

<comment><USER14> You mean the _letter-a-going-up_ key.

* [https://superuser.com/questions/290814/](https://superuser.com/questions/290814/)

<comment><USER33> Or perhaps the, "no, don't do that, that's confusing, that symbol is an honest-to-goodness letter" key.

Useful for typing words like pâte, infâme, or grâce. Except not at all.

</comment></comment></comment><comment><USER6> As someone who has been in IT for decades now and who over the years has moved between IBM, Wang, Sperry, DEC, Unix, DOS, Windows, Teradata, etc. platforms with aplomb, this article just has "Noob!" written all over it. :)

</comment><comment><USER34> IBM is a special company that seems to not want anyone to use its products. They sure go out of there way to make things hard to access. But they keep them around forever. Happy to sell them to the right customer. So many overlapping products that don't make sense in aggregate. The company seems to be marketing-driven the last 10+ years, selling all manner of snake oil.

Possibly the worst big co in these factors?

<comment><USER35> They're not interested in anyone but people willing to write million dollar plus checks using their products. Those same giant customers have large legacy investments and plenty of money to hire teams of people to deal with things that are hard to use. Those kinds of customers care much more about things working for 30+ years without downtime than they care about UX.

There's a whole world of solid, reliable, but unbelievably boring "institutional computing" out there that hackers usually don't touch because it's... well... boring. Java is the closest most hackers ever get, and that has more in common with Python or Ruby than COBOL or z/OS. Java is kind of a modernized mini/micro computer business language.

<comment><USER8> > There's a whole world of solid, reliable, but unbelievably boring > "institutional computing" out there that hackers usually don't touch because > it's... well... boring.

I can imagine if the salaries would be sufficiently (i.e. very) high and the complete culture would not be openly hostile towards the values of the hacker culture, I can easily imagine that hackers would be willing to touch it.

<comment> tony-allan (1) These systems were built from the ground up with security in mind.

(2) Mainframes are usually buried deep within an organisation behind many firewalls.

I would love to see a z/OS system at a Defcon conference. After all Windows and MacOS seem too easy these days.

Having said that, I found this... "Follow me on a journey where we p0wn one of the most secure platforms on earth." Quite a cool presentation ([https://media.defcon.org/DEF%20CON%2025/DEF%20CON%2025%20pre...](https://media.defcon.org/DEF%20CON%2025/DEF%20CON%2025%20presentations/DEFCON-25-Ayoul3-Dealing- the-Perfect-Hand-Shuffling-memory-blocks-on-zOS.pdf)) with a good mainframe intro.

IBM zEC13 technical specs: • 10 TB of RAM • 141 processors,5 GHz • Dedicated processors for JAVA, XML and UNIX • Cryptographic chips...</comment></comment></comment></comment>


Ask HN: Best advice that you have about renting an apartment in SF - <AUTHOR> I am a Software Engineer looking to move to SF soon. What are some things to keep in mind when looking to rent an apartment in SF. What are some lessons you learnt ? What are the best neighborhoods to look at if I'd like to optimize for great companies I can work for without having a long commute. Which are some neighborhoods to absolutely avoid ? <comment><USER2> imo it's better to find your job first, and then plan your housing around your commute. You might get a job based on the Peninsula or the south bay. In that case you might want to live closer to work.

Most people just use craigslist. Beware listings that seem too good to be true (will allow pets, cheaper than market rate, have parking) and don't send anyone money without seeing a place in person first. Anywhere that will take your $$ without you doing a walkthrough of the actual unit and meeting the landlord or property manager in person is probably a scam.

I recommend getting an airbnb for a week or two and finding a place in person. Places that will rent to you from afar are generally either undesirable or scams.

Generally small guy landlords who only own one building or a couple units are better to rent from than giant megacorps who don't care about you and raise your rent all the time.

Be prepared to apply on the spot if you like a place, bring all your materials, credit report, application fee, application paperwork, proof of income and everything to the showing. If you like the place, apply immediately!

Best of luck!</comment>


Is Guy Fieri in your node packages? - <AUTHOR> https://nodesource.com/blog/is-guy-fieri-in-your-node-js-packages/ <comment><USER2> Great write up, is N|Solid free or OSS?

<comment><USER3> N|Solid is free for development and can be downloaded from [https://nodesource.com/products/nsolid](https://nodesource.com/products/nsolid)</comment></comment>


The free-spirited women who tangled with Orwell and other literary lions - <AUTHOR> https://www.washingtonpost.com/entertainment/books/as-war-loomed-these-free-spirited-women-set-out-to-conquer-the-likes-of-orwell-and-waugh/2020/02/18/34b5b56a-51b8-11ea-b119-4faabac6674f_story.html <comment><USER2> There are more articles written about the overlooked historical figures that nobody writes about than there are about the famous historical figures that everybody writes about.

<comment><USER3> Much like how there seems to be 10 articles about Ada Lovelace for every 1 about Charles Babbage

<comment><USER4> To be fair, Lovelace seemed to grok the idea of general computation in a way that Babbage didn't.</comment></comment></comment>


Howdy, Ubuntu on Windows an Intro from Canonical's Dustin Kirkland - <AUTHOR> https://www.linux.com/learn/howdy-ubuntu-windows-intro-canonicals-dustin-kirkland <comment><USER2> Clickbait mostly discussing how enamored the author of the article is with open source, but without any command line examples of what is actually possible with this technology on Windows 10. I'm sorry for the bandwidth I wasted.</comment>


April, an APL Compiler for Common Lisp [video] - <AUTHOR> https://youtube.com/watch?v=AUEIgfj9koc <comment><USER2> Since the video's quite long, here are some basics on April.

Repo: [https://github.com/phantomics/april](https://github.com/phantomics/april)

April compiles APL to Common Lisp. It has almost all of the lexical functions and operators featured in Dyalog APL, the leading commercial APL interpreter and the most featureful APL implementation. It has many more features than the FOSS GNU APL, which is based on the old IBM APL2.

Dyalog APL's source code is about 500KLOC according to Dyalog's staff. GNU APL is over 100KLOC per its homepage. April's .lisp files currently stand at 6350LOC.

APL interpreters have traditionally been hard to connect to external data sources. Because APL is typically implemented as an interpreter, any connection to a database or other external system needs to be built into that interpreter as a plugin. April is called from within a Lisp program and you can pass it any array-formatted data. You can use CL libraries to read from any database or other source, format the data as an array and pass it to April for processing.

April takes some features from the k language, including ($[oneorzero;1;0]) if-statements and (g←{[a;b;c]a+b×c} ⋄ g[1;2;3]) n-argument functions.

April is extensible - you can easily create an extension to the language with more functions and operators, and you can also re-implement the utility functions that are used to parse and compile the language. The language is designed from the ground up to support extension. There is also a framework to extend the compiler to optimize common idioms, for instance ⊃⌽,200 200 200⍴⍳9 is optimized to just fetch the last row-major-ordered element of the big array instead of actually taking the time and memory to ravel and reverse it.

The second half of the video features a preview of a hardware startup called Bloxl that's powered by Common Lisp and April. Bloxl is a big transparent block wall with LEDs inside the light up to create pixel graphics. April was used to build the animations that run on Bloxl.

<comment><USER3> > Dyalog APL's source code is about 500KLOC according to Dyalog's staff. GNU > APL is over 100KLOC per its homepage. April's .lisp files currently stand at > 6350LOC.

What accounts for this discrepancy?

<comment><USER4> -Common Lisp vs C/C++

-April implements the language and just punts to CL for all the I/O and system level stuff. Like it doesn't have to implement a REPL, or a line editor or APL workspace files/array stores.

<comment><USER3> Thanks. I'm guessing (based on my knowledge of J and all its optimizations/special forms) that Dyalog APL would still be more performant too? I didn't see it mentioned on the GH README.

<comment> phoe-krk Yes, the talk mentions that Dyalog is still much more performant, given how much time and effort has been spent on optimizing it.

</comment></comment></comment></comment></comment><comment><USER2> Thanks for posting my presentation, April's been great fun to write.

</comment><comment><USER5> Any sufficiently complicated Lisp program contains an ad-hoc, informally- specified, bug-ridden, slow implementation of half of APL.

Arrays > lists, just ask your CPU's D$.

<comment><USER6> call me back when you decide to use APL to create a logic program that dynamically generates an expert system engine based on analyzing the meta- structure of an input factset, with an instrumentation layer that reasons about the generated system characteristics

until then, I'll call it a truce :)

<comment><USER2> This is something I go over in the video - an alloy of Lisp and APL works better than either language by itself.

Lisp excels at creating semantic and logical patterns. Macros allow you to build reader-friendly data structures that transform into working code. In the April repo, check out spec.lisp which expresses the top-level spec for the language. Most language implementations don't have this kind of centralized, readable spec where all the language's features and conventions are laid out in one file. The unit tests in this file even constitute a demonstration of what each function and operator does.

APL is for writing algorithms. Data transformations that would take pages of code in other languages can be accomplished with one line of APL. It's trivial to do things like find the color palette of an image and create a copy of the image with another color palette swapped in. Signal processing, machine learning and similar tasks are a snap.

When I created the animations for the Bloxl device, I created a Lisp-based spec for animations with bits of embedded APL. Most animation effects are standardized and have Lisp functions implementing them. However, many patterns have unique algorithms used to implement effects just for that pattern. If I were using Lisp, I would have two choices as to how to do this:

1\. Write the unique code into the spec for each pattern, bloating the animation specs with tons of loops to create the special effect. An individual animation spec may go from 12 lines to 60 lines or more doing this.

2\. Write a function to implement the special effect. All the special effect functions would have to go into another file somewhere. The animation packages would become bloated with many functions that are only used in one place.

Instead, I can implement the unique effects in APL. It only adds one more line to the spec and avoids both kinds of code bloat described above.

</comment></comment></comment><comment><USER7> Misses speech impediment yoke by not calling it Aplil

</comment><comment><USER8> Without watching the video, can we guess correctly that "for Common Lisp" means "in Common Lisp"? Or is it really meant for use within Common Lisp programs?

<comment><USER2> April is usable within Common Lisp. When writing a CL program, you can invoke APL code on arrays. For example:

(april-c "{⍴∪,(3⍴2*8)⊥3 1 2⍉⍵}" (opticl:read-png-file "/path/to/image.png"))

This snippet uses the opticl library to load a PNG file, and then uses April to count the number of unique colors in the image. Consider the amount of code this would take in CL.

<comment><USER9> It would be cool if it was implemented as a reader macro instead of just passing a string to a function.

<comment> phoe-krk Do it yourself! (Implementation loosely based on phantomics' comment below.)

        (defun april-reader (stream char)
          (declare (ignore char))
          `(april ,(read stream t nil t)))

        (set-macro-character #\⎕ #'april-reader)

<comment><USER4> You're probably gonna want something more complicated than that. Glancing at the github page it looks like at least the following need to be dealt with:

      (april "apl code") ; and april-f
      (april (with (stuff)) "apl code") ; and april-f
      (april-c "apl code" (input))
      (april-c (with (stuff)) "apl code" (input))

<comment> phoe-krk Yes, the above is a trivial implementation; handling multi-form input would need to be much more complex. Thankfully, for simple one-liners, you'll likely want either April literals (implemented above) or April anonymous functions, both of which won't take additional arguments; you should be able to implement both as simple reader macros.</comment></comment></comment></comment></comment></comment>