Mkcert: Tool for making locally-trusted development certificates - <AUTHOR> https://github.com/FiloSottile/mkcert <comment><USER2> (All the below assumes I can read 'Go')

Nit picks about these certificates:

The certificates have a lifetime of 10 years starting from the exact moment they're created. I suspect ten years is overkill, but I don't see much real harm in it. However it's common practice to set the notBefore into the recent past, this is because a variety of problems may cause clock drift. This is your development environment, so you _could_ fix any drift, but this sort of tool is all about productivity, so I think "back dating" by one day or even an hour to allow for drift would be a sound idea.

The EKU says TLS Server, I'd be tempted to throw TLS Client in there too. It would appear tempting to say anyUsage, but actually some peers will decide this is overbroad and reject your certificate so don't do that. But having TLS Client might be nice if anybody is working on mutual authentication (both client and server present certificates, not very friendly for B2C apps but I like it in B2B).

The Key Usage says Key Encipherment and Digital Signature. Again it's harmless in a development environment, but security-oriented live systems ought to contemplate removing Key Encipherment.

The only reason you'd need Key Encipherment in TLS is because you're doing RSA key agreement, which means you aren't getting Forward Secrecy by definition and you're probably using some pretty rusty components. So it could make sense to spot that "Oops, we're trying to do RSA key agreement - why?" in a development system before you ship it and discover you're offering radically less security than you expected for some reason.

<comment><USER3> Hi! Author here.

I was backdating, but I realized a correct notBefore helps identifying when and why you made the certificate. I removed the backdating at the same time as I added the host name in the OU. Nobody has complained so far, so probably not a real problem on dev environments.

I would kind of hope that for client auth you'd have support for a custom root instead of the system pool, hence not needing mkcert (in its current form). But if someone actually finds themselves needing that I'd accept a PR.

Key Usage has been screwed up so much than nearly no one checks them, but in any case I don't feel like this is the place to fight the RSA key exchange.

</comment></comment><comment><USER4>
      npx tlx-keygen

\- No installation required, npx comes with Node.js and downloads/runs/removes the package.

\- Generate localhost certs with support for *.localhost, 127.0.0.1 (IPv4), ::1 (IPv6), etc.

\- Register in operating system trust store (Win/Lin/Mac)

\- Tested with major browsers (Chrome/Firefox/Safari/Edge)

[https://www.npmjs.com/package/tls-keygen](https://www.npmjs.com/package/tls- keygen)

<comment><USER5> you would need node js installed, so that's atleast 1 installation requirement... node.js has as one of it's dependencies openSSL. So you could use openssl commands and have actually less installation requirements.

<comment><USER6> Still sounds good to me - it would do extra stuff like adding it to the Windows cert store if you're there, adding it to Firefox if you use it, etc. And being package it's better to collaborate on than everyone making their own process (and possibly screwing it up).

Since many people who run [https://localhost](https://localhost) are doing front end development node will probably already be there.

<comment><USER7> If you're on Windows then you get creating a certificate and adding it to the cert store out of the box with PowerShell[0].

[0] [https://docs.microsoft.com/en- us/powershell/module/pkiclient...](https://docs.microsoft.com/en- us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps)

<comment><USER6> That's really useful - and worth submitting as a separate post.

</comment></comment></comment></comment></comment><comment><USER8> I've been using minica [0] as recommended by letsencrypt [1] and am fairly happy with how easy it was to run and setup. I also like how small it is; I just embedded it in the development scripts of the project.

[0] [https://github.com/jsha/minica](https://github.com/jsha/minica)

[1] [https://letsencrypt.org/docs/certificates-for- localhost/](https://letsencrypt.org/docs/certificates-for-localhost/)

</comment><comment><USER9> FYI, Windows support just got merged: [https://github.com/FiloSottile/mkcert/pull/46](https://github.com/FiloSottile/mkcert/pull/46)

</comment><comment><USER3> Hello HN, author here! :)

Something I would love to collect some feedback on is: how would mkcert have to change, if at all, to support a production CA (for stuff like internal machines talking to each other)? Should it even try, or does a tool like minica do the trick there?

And please open an issue if it doesn't just work on your dev machine!

</comment><comment><USER10> It's funny how people seem to do the same thing at the same time. I recently made [https://github.com/socketry/localhost](https://github.com/socketry/localhost) however `mkcert` has lots of good ideas I'm going to "borrow" :)

<comment><USER11> I made my own variant of this as well, although it was just config files & shell scripts wrapping OpenSSL instead of being a custom binary.

<comment><USER12> Me too, but it was mostly to teach myself about OpenSSL, and I feel like the experience have scarred me for life.

I mostly used the Ruby C-bindings, and I feel like finding information and documentation was very difficult, and it was even harder to figure out if there was any best practices I was missing.

It baffles me that so important infrastructure is built upon something that feels this brittle, and it keeps me up at night :-)

<comment><USER13> Don't worry, everyone who used OpenSSL APIs feels the same way as you do.

</comment></comment></comment></comment><comment><USER14> I've had good luck with caman ([https://github.com/radiac/caman](https://github.com/radiac/caman)), but it doesn't do any of the fancy certificate installation bits. This looks neat and useful.

<comment><USER15> bash-based, looks good to me.

<comment><USER16> cfssl shell wrapper [https://github.com/epcim/cfssl- pki](https://github.com/epcim/cfssl-pki)

</comment></comment></comment><comment><USER6> No installation required: [https://certsimple.com/blog/localhost-ssl- fix](https://certsimple.com/blog/localhost-ssl-fix)

A few clicks and 1 actual command on macOS

<comment><USER17> The point of mkcert is so you can use it on any OS without a bunch of hoops to jump through.

<comment><USER6> Installation of a binary is also a hoop.

</comment></comment></comment><comment><USER5> is there an advantage to this over using openssl or nss/certutil commands?

<comment><USER18> The main advantage to me would be "not having to remember openssl commands you use twice a year"...

<comment><USER19> Thats why I write a blog post to myself ;) [https://daurnimator.com/post/115624714644/howto-generate- a-s...](https://daurnimator.com/post/115624714644/howto-generate-a-self- signed-ssl-cert-in-one)

<comment><USER20> Your blog post was about creating a self-signed TLS cert. mkcert is more than that, it creates the root CA first before creating self-signed certs and trusting them.

<comment><USER19> Indeed; but I was replying with my solution to the general problem of

> remember openssl commands you use twice a year

</comment></comment></comment></comment></comment><comment><USER21> For folks interested in the "minimal" aspect of this project, there is a similar one with a _single_ Go file: [https://github.com/jsha/minica](https://github.com/jsha/minica)

</comment><comment><USER15> for embedded boxes golang is either unsupported there, or its binary is typical over-sized, a bash or C version of the same functionalities will be great there.

then you can have letsencrypt easily these days so probably we can use 'official certificate' even for local development these days?

<comment><USER15> i am always puzzled by some of those down-votes, i thought constructive thoughts are at least welcomed at HN. The fact is at HN unless you are saying "this is a great idea/project and you're awesome" or be totally neutral, any other thoughts such as a constructive one, not to mention a critical one, will always or at least very likely to get a down-vote.

it's pathetic, grow up, listen to both sides, technical discussion has its merits, embrace it.

if you're only looking to "this is great" comments at HN, there is no point being here at all.

Yes, some of you will down-vote this, to make your day.

<comment><USER22> It was not constructive. And let's encrypt does not work for localhost.

</comment></comment></comment><comment> another-cuppa Emoji is unnecessary and annoying.</comment>


4 Founders in 3 Continents Who Never Met: Lessons in Building a Co-Founding Team - <AUTHOR> https://medium.com/@cherianthomas/4-founders-in-3-continents-who-never-met-lessons-in-building-a-co-founding-team-5a4509d62575#.ocoepi1ef <comment><USER2> Well written story. Very basic thing for successful startup is getting the right cofounders.

</comment><comment><USER3> inspiring story :) world is getting smaller day by day</comment>


A simple HTML framework - <AUTHOR> https://custommarkup.ml <comment><USER2> Those elements will make your HTML invalid, it's not how a framework should work, sacrificing validity for functionality.

It would better work as a CSS framework with individual classes. Or, you can use the new Web Components API or just make a React component library.

The website needs some work. The colors on the website hurt my eyes, and things aren't aligned correctly.

This will perform differently on almost every browser, can you let us know what browsers are supported on the page?

<comment><AUTHOR> Thanks for the notice, will work on that. My dad always said that negative feedback was the best because you can learn from it :)

</comment></comment><comment><USER3> I never knew you could style custom elements like <awesome> with CSS.

I wonder however about the compatibility with different browsers. Could potentially break some sites on older browsers / those on legacy machines / those still surfing the web on dusty old Windows 2000 machines.

<comment><AUTHOR> Yeah, this is mainly just to help developers not have to use a lot of css on their site, basically making it easier for them.</comment></comment>


Show HN: Gramara – English grammar correction via transformers - <AUTHOR> https://gramara.com/ <comment><AUTHOR> Been working on this for the past year. This is a grammar correction tool that uses modern (transformer-based) NLP techniques for fluency edits. Basically it helps you write more fluently if you're not a native English speaker.

A lot of my family members are English-learners, and I found that they struggled to use Grammarly and similar tools - 1. These tools assume that your input is mostly correct, whereas for English-learners the entire sentence needs to be rewritten/re-interpreted 2. They don't parse your text for semantics, and often come up with nonsensical recommendations if your English is particularly broken 3. English speakers don't actually write in a completely grammatical way, but often in terse sentence fragments. To be more "fluent", some grammatical errors can actually help.

I built this tool to address this specific niche. In the backend there is a vanilla seq2seq transformer model, trained on a small corpus of parallel data combined with data augmentation and backtranslation. It basically treats grammar correction as a NMT problem, although I don't think this is a new approach.

here's an example of a sentence that requires fluency translation, which is not handled well by grammarly etc:

"Because we are a few numbers of people at our store, it has been very inconvenienced for those who have been difficult to connect to the phone."

The app has a toggle for English level, which switches the model depending on your English proficiency. For the higher level the app acts more as a paraphrase tool.

some other real life examples:

The link shared is not working. Please do the needful at the earliest.

Please share me a new link. I used the last link you forward to me.</comment>


Go-To-Market Boot Camp for Startups: Field Sales – Andreessen Horowitz - <AUTHOR> http://a16z.com/2017/01/03/field-sales-go-to-market-mark-cranney/ <comment><USER2> Thanks for posting this. I am queuing it up on items to watch.</comment>


Housing for a Growing California: Details on My Housing Reform Bill - <AUTHOR> https://medium.com/@Scott_Wiener/housing-for-a-growing-california-details-on-my-housing-reform-bill-e22dfff855e0 <comment><USER2> I love that this takes an existing government entity and allows that entity to actually do its job. We already know how many units and of what type need to be built. It's frustrating watching those quotas be severely under met year after year.</comment>


Ask HN: How to Train Tesseract for Handwriting Recognition of Characters? - <AUTHOR> I can't follow steps in the documentation as here https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00, I am using tesseract in real-time to recognize OCR printed text/ Optical Character Recognition.
But I wanted to extend it further to Handwritten character recognition.
currently, the new version of Tesseract doesn't recognize HCR. but it says we can do it after training dataset? I know there are many other ways for the same, but I have to learn Neural-Networks for it, and I would need a faster machine.
my GitHub repo is "https://github.com/ganesh-deshmukh/cvkeyboard"
I tried using tensorflow, but I can't pass image correctly so it gave wrong prediction, as this repo 'https://github.com/ganesh-deshmukh/Google-colab-hcr/blob/master/demoHCR.ipynb'
what would be a simple approach for same? <comment><USER2> From the FAQ: "Can I use Tesseract for handwriting recognition?

You can, but it won't work very well, as Tesseract is designed for printed text. Look for projects focussed on handwriting recognition."

To which I found [https://github.com/githubharald/SimpleHTR](https://github.com/githubharald/SimpleHTR), which has a number of references that you should look at.</comment>


How do food manufacturers calculate the calorie count of packaged foods? (2003) - <AUTHOR> http://www.scientificamerican.com/article/how-do-food-manufacturers/ <comment><USER2> The obvious next question then is how the protein and carbohydrate content is measured. That sounds like it would require more difficult analytical methods than bomb calorimetry and might not be worth the time and expense if it were not for the fact that those need to be reported separately on the label anyway.

Brief searching suggests that proteins are measured with a nitrogen content test and fats are determined by mixing the food with a non-polar solvent to see how much dissolves. Carbohydrates seem trickier and I haven't found a great explanation. Water solubility might work once the other components are removed.

<comment><USER3> The protein test was famously faked with melamine in the Chinese dog-food scandal that killed dogs and resulted in a recall:

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

<comment><USER4> I was following that case closely back in 2007 because of my pet (thankfully not affected). An astonishing thing I learned was that practically every brand of cat food and dog food in North America is/was manufactured by a single company called Menu Foods in Streetsville, Ontario, Canada.

The pet food "brands" don't have their own factories. They all contract it out to the same place. A few journalists remarked on this secret fact that came out because of the recall.

We agonize over which brand is healthier for our cats and dogs, but it's all an illusion. The majority of US and Canadian pet food is made at one factory with the same basic animal ingredients, same quality control, same employees, and the same machines. Maybe they adjust the proportions slightly and tweak the flavors. Then they slap on different labels like Purina, Iams, Royal Canin, whatever.

It's saddening to learn that we really don't have as much choice as we think. I'm much more skeptical and questioning than the average person, and yet I assumed that the pet food's "brand name" somehow made a difference.

<comment><USER5> the majority of pet food is meat not fit for human consumption. [1]

if you aren't feeding your pet meat that you eat, it's living on extreme crap.

[1]: [http://www.dogfoodadvisor.com/dog-food-industry- exposed/unfi...](http://www.dogfoodadvisor.com/dog-food-industry- exposed/unfit-for-humans-legal-for-dog-food/)

<comment><USER6> My dog will eat other animal feces. His standards for "food" are pretty low.

<comment><USER5> No one is talking about standards. I'm talking about food that might make your dog sick or malnourished.

But to each his own.

</comment></comment></comment></comment></comment></comment><comment><USER7> > 9 Kcal/g for fat. [...] These numbers were originally determined by burning

This method for calculating the calorie count for fat has in my opinion allowed the demonisation of fat.

Our stomachs are imperfect at digesting globules of fat. Burning-until-gone releases much more of the energy than surface acting acids and proteinases.

Effective calorie count for fat just has to be so much lower than the listed value.

Constrast that with sugars, where the absorbtion mechanism is crystaline dissolution. Disolving crystals is an almost perfect 1-1 process

<comment><USER8> The body is very efficient in storing fat, more than carbs or protein. But burning fat is inefficient. But this is just from the top of my head.

I think its just a lot easier to eat a lot of carbs. Fats and protein make me much more saturated more quickly.

I don't think there is some magic formula.

<comment><USER9> > burning fat is inefficient

Huh? The body is perfectly happy to burn fat. You just have to give it the right conditions. In fact, the body can get practically all its energy from fat, it's called ketosis. You can achieve a state of ketosis either through a high fat, low carb diet or fasting.

<comment><USER10> Yup. I've been doing a ketogenic diet the past 6 weeks and it's pretty awesome.

</comment></comment></comment></comment><comment><USER11> > The original method used to determine the number of kcals in a given food > directly measured the energy it produced.The food was placed in a sealed > container surrounded by water--an apparatus known as a bomb calorimeter. The > food was completely burned and the resulting rise in water temperature was > measured.

I don't think the article addresses the following point. I may be totally wrong but I suspect the residues of the combustion still contain organic molecules that could possibly be broken down furthermore by some other process and release more energy (I believe it's the case with fuel, I remember a chemistry teacher telling us that burning fuel was terribly inefficient).

Would it be possible that the digestion mechanism is somehow more efficient at breaking down this molecules and produce more energy than combustion?

<comment><USER12> Considering how nutritious(for bacteria) our faeces are, I strongly suspect not. If anything, we know that calories from certain types of food (like nuts) are not absorbed in 100%, so even though a packet of nuts might say it has 500 kcal, it doesn't mean you will get 500 kcal out of it.

</comment></comment><comment><USER13> In Poland it's regulated, you can be off by 15%. My mate did tests in a lab. All products he picked showed 15% lower kcal value on the packaging.

I pick reduced fat houmous from the fridge. The label says 100g has 256kcal (18g of fat, 13g of carbs, 8,5g of protein = 248kcal)

<comment><USER14> And apparently in the US you can be off by whatever you want

[https://www.youtube.com/watch?v=hE2lna5Wxuo](https://www.youtube.com/watch?v=hE2lna5Wxuo)

The video also deals with calorie count in restaurants. The NYC regulation to require calorie counts directly on the menu really seems like a good idea. Other than the people already knowing the rough calorie count, who checks the obscure and difficult tables on the website?

<comment><USER15> _who checks the obscure and difficult tables_

I'm not sure exactly which tables you're referring to here, but if you mean tables showing nutritional details beyond the mere number of calories: Being able to look up how many grams of carbohydrate they're consuming is a incredibly important for type 1 diabetics.

<comment><USER14> >I'm not sure exactly which tables you're referring to here,

These

[http://www.bk.com/pdfs/nutrition.pdf](http://www.bk.com/pdfs/nutrition.pdf)

nutrition information tables. The Burger King one actually looks quite reasonable. Compare this to the German Starbucks one:

[http://globalassets.starbucks.com/assets/4145371584DF4F75A9E...](http://globalassets.starbucks.com/assets/4145371584DF4F75A9E0ADEAF5A388E3.pdf)

I doubt a lot of people would reconsider their choice to order a frappuccino if they knew it contains as much calories as a Big Mac.

It's good that it's so detailed, but a tl;dr version on the board would be good. It's not like the average joe opens this on their phone to compare how many calories each product has.

>Being able to look up how many grams of carbohydrate they're consuming is a incredibly important for type 1 diabetics.

Valid point

</comment></comment></comment></comment><comment><USER16> Depends on what side of the package you're reading.

On the back label its says calories per serving. On the front they use a different serving size to make it seem like it's low-cal.

Like popcorn that's 140 cals/serving, but on the front it says 35 cals per _cup_.

[http://www.foodfacts.com/ci/nutritionfacts/snack- foods/smart...](http://www.foodfacts.com/ci/nutritionfacts/snack- foods/smartfood-delight-sea-salt-popcorn-55-oz/92496)

Or a pkg of 2 cupcakes is 380 cals, but they'll say 190 cals per cake (in small type). It makes you think it's 190 for the pkg of cakes.

<comment><USER17> But they also list servings per package. As someone who relies on this information out of medical necessity I've never felt it to be that confusing.

The EU/UK, on the other hand, makes it incredibly difficult by listing things in units of 100g. Nothing like sitting in a dark movie theater trying to calculate fractions.

<comment><USER18> I often find it more convenient actually because often you don't eat "one serving". Consider breakfast cereals, rice or pastas. Having the per 100g values allows you to actually compare one item to the next. When I'm the US I find myself trying to convert back the per serving to per 100g to get back to known territory.

<comment><USER19> This.

Not even primarily due to health/nutritional concerns. A lot of the cereals in the US are way to sweet for my taste. Haven't found a better way to figure out which isn't other than comparing contained sugar.

</comment></comment></comment></comment><comment><USER20> This reminded me of a question I've always had... there's always a lot of mass of the food not accounted for in the Fat/Carbohydrates/Protein/Fiber. For example, a can of food that weighs 454g net might only have 150g accounted for in the nutrition facts. What's in the rest of the food, besides water?

<comment><USER6> Probably fiber and water. When they measure fiber, they tend to measure specific types of fiber. I'm assuming there are a lot of undigestible things in food that don't fall into the neat categories.

<comment><USER21> What's funny to me is that "fiber" is just ripped up plant cell walls and interstitial material, which is virtually all carbohydrate. it's just that it doesn't all get truly digested.

</comment></comment></comment><comment><USER22> There are foods on which the standard processes don't accurately measure energy content. Or at least, certain manufacturers tell us that. Not sure if to believe them or not.

Example: Quest bars. Their syrup would typically show 4 kcal per gram, but is actually closer to 2. Supposedly. That's how a bar can have so few calories and such good macros.

Ultimately, if you're consistent with tracking your calories and its effect on your weight, it doesn't matter if the values are off by 20, 30, or 50%. Just be consistently off by... 50%.

<comment><USER23> I'm not sure what the syrup in those bars would be, but most liquid sugar products have a pretty substantial portion of water by mass.

<comment><USER22> The original syrup was [https://en.wikipedia.org/wiki/Isomaltooligosaccharide](https://en.wikipedia.org/wiki/Isomaltooligosaccharide) . I buy retail for my own recipes, under the brand name VitaFiber.

</comment></comment></comment><comment><USER24> The Gastropod Podcast just had a great episode about measuring calories:

[https://gastropod.com/the-end-of-the-calorie/](https://gastropod.com/the-end- of-the-calorie/)

"For most of us, the calorie is just a number on the back of the packet or on the display at the gym. But what is it, exactly? And how did we end up with this one unit with which to measure our food? Is a calorie the same no matter what type of food it comes from? And is one calorie for you exactly the same as one calorie for me? To find out, we visit the special rooms scientists use to measure how many calories we burn, and the labs where researchers are discovering that the calorie is broken. And we pose the question: If not the calorie, then what?"

</comment><comment><USER25> Cooked food often have much more digestible calories than raw food. Because the heat breaks down complex molecules and make them easier to digest. This isn't reflected at all in these measurements.

This is why it's real hard to stay healthy on a raw food diet.

I learned this from this book, which I really recommend:

[https://www.amazon.com/Catching-Fire-Cooking-Made-Human- eboo...](https://www.amazon.com/Catching-Fire-Cooking-Made-Human- ebook/dp/B0097D71MQ)

</comment><comment><USER26> I have a related question: Can the calorie count reliably predict the effect on a persons weight? Or is the amount of carbohydrates and fats much more important?

<comment><USER27> I think the answer is that it's really hard to study this, since food diets are hard to control over long periods of times but that current research is consistent with calorie counts being a good estimator of a person weight gain/loss. Here's a reasonable summary with some studies you can look at for the details. [1] But this is certainly an area of ongoing research and the devil is in the details: does it matter when you eat? [2] Does your gut microbiome affect it significantly? Genetics? Is there inter-person variation in how their body adapts to different food? Does fat/carbohydrates/protein/fiber content affect satiety in a manner that helps people lose weight in real life situations even if it doesn't matter in a clinically controlled setting where overeating is impossible?

We might never have full pictures of all these questions.

[1] [http://examine.com/faq/what-should-i-eat-for-weight- loss/](http://examine.com/faq/what-should-i-eat-for-weight-loss/)

[2] I know specifically that this is currently being tested in some large- scale, high-cost studies. Which tells me that researchers aren't as confident as [1] makes it sound like.

<comment><USER28> I won't link to any studies but regarding [2] (gut microbiome] does affect it ever so slightly. I'm just stating things from memory now, but I remember reading that our gut bacteria now is different from 50 years ago in such a way that a person eating (for example) 2000 calories then, would now have to eat 2200. Made up numbers, but the effect was between 5-20%.

As for your last question (food composition and satiety), tangentially related, in the literature regarding this it seems as if keto has a lot of support for weight loss. Not because of the way it affects your metabolism or gut bacteria, but because it does satiate people more adequately than other diets it was tested against (regular western, Scandinavian and paleo).

</comment></comment></comment><comment><USER29> _> ..you can also download the food database to a handheld compUter._

I'm going to start referring to smartphones as "handheld computers".

</comment><comment><USER30> This is a question that's itched me constantly for over 15 years that I never bothered to look up. Anyone else?</comment>


Nova AutoML: A New Architecture for Predictive Insights - <AUTHOR> https://amplitude.com/blog/introducing-nova-automl-a-new-architecture-for-predictive-insights <comment><USER2> Great to see an analytics product finally telling me what insights I should be looking at!

</comment><comment><USER3> What a great addition to an already great product!</comment>


The Inside Story of a Small Startup Acquisition - <AUTHOR> http://www.softwarebyrob.com/2012/01/25/the-inside-story-of-a-small-startup-acquisition-part-1/ <comment><USER2> I'd like to see a marketplace for small acquisitions like this, flippa is full of turnkey crap and i'd be more than willing to spend up to low 5 figures for a decent small SaaS app or even buy one of the thousands of half finished apps i know you guys all have.

So, if anyone's selling, email me. firstname.lastname@example.com

<comment><USER3> @tamdenholm - I am creating a company called Apptopia - we will be almost exactly that. A marketplace to broker the sale of mobile app (micro business acquisitions).

Have fantastic traction so far, and I have a handful of apps already for sale if you were interested I am @jonathanckay.

<comment><USER4> I would also be very interested in this list, for myself and others. Email in profile.

</comment></comment></comment><comment><USER5> More info here on the latest TechZing podcast - [http://techzinglive.com/page/921/165-tz-interview-rob- wallin...](http://techzinglive.com/page/921/165-tz-interview-rob-walling- hittal)

<comment><USER6> Ha, I had to lol at:

It's 3 o'clock in the morning and you get a call...

"hello?"

"yes, your server has gone"

Well worth a listen, there's plenty of juicy stuff and insights on the whole process and decisions made that aren't mentioned in the blog post (yet, at least).

</comment></comment><comment><USER7> Sadly, this glosses over the actual acquisition process and details.

<comment><USER8> What else do you want to know? This is a multi-part series so I can go into more detail.

<comment><USER9> Personally, I'm interested in numbers. What was your opening offer, what did the seller come back with? What did you settle on? (Totally understandable if you're not comfortable sharing that information).

Also, user information would be great. # of users prior to purchase, # since, changes in conversion rates, changes in revenue, etc.

<comment><USER10> Yes, if you can go over the valuation methods each side used, that would be very helpful to know, even if you don't share the cash figures involved.

<comment><USER7> What both parent comments said. Plus terms, etc. I see a lot of acquisitions but they're all SV style so I am curious what it's like.

</comment></comment></comment></comment></comment><comment><USER11> Interesting, I feel like HitTail's previous condition is a bit like a site of mine that has kind of been accumulating technical debt for a while: <http://bitbuffet.com/>

There are users, they pay my rent, they use the service. Its just... flat. A few bugs, various problems not worth the effort to rectify as a quick 1 minute Django admin tweak solves the problem.

Maybe its time to finally visit Flippa or suck it up and revamp the damn thing, any advice on going down this route?

<comment><USER12> Hi Bryanh. Interesting site. Drop a line to our support team if you do decide to sell on Flippa as we'd be happy to come to the party and cover your listing fee in this instance.

<comment><USER11> Wicked! Thanks guys!

</comment></comment></comment><comment><USER13> Speaking of taking something and rebuilding it, I'd like to see LangPop.com sold to someone who will do something cool with it, and won't trash it. The big caveat is that programmers are completely ad-blind, so I don't think that site'll ever make any money on plain old advertisements. Better to use it as an ad or bait for something else.

<comment><USER14> Is there a way to send private messages on HN? I wasn't able to figure that out.

I might be interested to acquire the domain from you. I may be happy to keep it online without advertising as a public resource, depending on the total traffic volume.

What kind of price are you looking for? Providing value to the community is what I'm interested in; I'd be happy to operate it in a not-for-profit way.

<comment><USER13> If you click on "davidw", it takes you to a page about me. If you click on the links, it'll take you to pages where you can find out how to get in touch with me.

</comment></comment></comment><comment><USER15> I'm doing my own startup now and I would gladly buy my next startup. It just saves a huge bunch of time as long as the code is in decent shape.

Again this is a story of someone seeing value where no one else does. That seems to be key skill of successful entrepreneurs.

I met the founder of HitTail about 5 years ago. He seemed pretty bright and they seemed be doing pretty well given the number of people they employed.

<comment><USER8> The inventor of HitTail is very sharp - we're in touch every week or two as he continues to have insights into this space.

</comment></comment><comment><USER16> Traffic graph looks impressive:

<http://siteanalytics.compete.com/hittail.com/>

</comment><comment><USER17> Maybe I'm missing something, but why is this a subscription app? Couldn't I run this on my site for a month, find the long tail keywords I need to improve, and then cancel? For most sites wouldn't the keywords generally stay the same?

<comment><USER8> No, they vary pretty widely, even week to week. I have several years of suggestions now and new ones continue to come up every week as I add new content and my rankings shift in the engines.

<comment><USER18> From what I know about SEO, it takes time. Why is the data useful if the results are wildly changing from week to week?

<comment><USER8> The results are not changing wildly week to week, but you do receive new suggestions frequently (depending on how much traffic you receive). And with this kind of SEO (long tail), the point is that if you write a single blog post or article focusing on the suggestion, you will rank on the first page of the search engine within a few days. That's the point of HitTail - it picks out terms you will very easily (and quickly) rank well for.

<comment><USER17> Interesting. I'm going to take the trial for a run shortly, may write a review about it in the future.

</comment></comment></comment></comment></comment><comment><USER19> Great article, thanks for sharing. I would have loved more information about the acquisition process (maybe even including your initial email) because this is the most interesting part to me. I would also like to know where the final price settled between your initial offer and the 5x rebuttal (no need for actual price, just a reference).

On a side note, amazing job with the redesign. The new hittail landing page looks great. One thing I noticed however was that you have an extra checkmark on the last row of the pricing page that doesn't seem to correlate with anything. Done on purpose?

<comment><USER8> Cool; I'll try to cover the things you raised in part 2 or 3.

>>On a side note, amazing job with the redesign. The new hittail landing page looks great.

Thanks!

>>One thing I noticed however was that you have an extra checkmark on the last row of the pricing page that doesn't seem to correlate with anything. Done on purpose?

LOL...that's awesome. I'm not sure how no one else (including me) has noticed that. Removing it now; thanks for pointing it out :-)

</comment></comment><comment><USER20> Thanks for sharing this story. I think it speaks to the commonly overlooked notion that you should set out to build a business, not just a web product. Details on which costs you chose to attack first (technical debt vs. free subscriptions vs. UX) is something all web businesses should think about.

How does the original owner feel about the revamped HitTail?

<comment><USER8> >>Details on which costs you chose to attack first (technical debt vs. free subscriptions vs. UX) is something all web businesses should think about.

Good point. I'll try to cover that in more depth in parts 2 or 3.

>>How does the original owner feel about the revamped HitTail?

Positive feedback all around, both from the original owner and developer (they are different people). They've also made helpful suggestions along the way since they know this space quite well. I think they are happy that HitTail is getting a chance at a second life.

</comment></comment><comment><USER21> How is this a startup? Isn't this a failing product from a firm that got acquired and turned around?

<comment><USER22> If you define a startup as a business that has the capability of scaling well, but hasn't scaled yet, then this fits.

</comment></comment><comment><USER23> Interesting story; definitely differs from the conventional wisdom regarding building it yourself. Reuse of a previously built codebase is something I can approve of... especially if your competitors are constantly reinventing the wheel.

<comment><USER24> Also, existing customer base and established brand identity are nice bonuses.

</comment></comment><comment><USER25> Rob - how do you make the decision between going to oDesk vs doing it yourself?

<comment><USER26> I think he explains it here: [http://www.softwarebyrob.com/2011/11/02/9-ways- to-decrease-y...](http://www.softwarebyrob.com/2011/11/02/9-ways-to-decrease- your-chance-of-bootstrapping-a-successful-company/) and here <http://blog.asmartbear.com/virtual-assistant-startup.html> and here [http://www.softwarebyrob.com/2009/07/14/one-of-the-most- comm...](http://www.softwarebyrob.com/2009/07/14/one-of-the-most-common- startup-roadblocks/)

</comment></comment><comment><USER22> A very interesting post. I'm a product manager that isn't great at coding, but I'm really good at dealing with remote teams / contractors. I've often wondered if this is a route I could take, it looks promising.

</comment><comment><USER27> How does this deal with small sample sizes? The monthly visit numbers at each payment level are fairly small, so I wonder what sort of conclusions can be drawn from the sample sizes available.

<comment><USER8> The algorithm has analyzed 1.2 billion keywords and been optimized to work well. If you get 1200-1500 uniques per month, HitTail will likely provide enough value to make it worth the cost.

</comment></comment><comment><USER28> Interesting, what data does the JS send back to HitTail (interested in scope / privacy here)? Does it have any dependencies?

<comment><USER8> It sends back the referrer URL from the search engine that contains info like what keyword was searched on, whether it was paid or organic, which search engine, etc...

The JS doesn't have dependencies in terms of external libraries - self- contained but it obviously depends on our server since it makes an async call back to save the keyword data.

</comment></comment><comment><USER29> How does hittail work? Do you have to insert a piece of js into your site template like for google analytics?

<comment><USER8> Exactly. Asynchronous JS snippet on your site (so doesn't affect page speed) that sends analytics info back to our database, where our algorithm is able to analyze it and make recommendations.

</comment></comment><comment><USER30> Cool story. I'm looking forward to part 2!!</comment>


HotelTonight's ETL Pipeline Built w/ Iron.io and RedShift - <AUTHOR> http://engineering.hoteltonight.com/ruby-etl-with-ironworker-and-redshift <comment><USER2> Can you give any detail on what the end result is? What kind of data do you end up with in redshift, and what kind of queries? What kind of data do you extract from mixpanel?

Is all this running continuously, or different schedules for each worker? Any of these event based rather than schedule based?

<comment><USER3> > Can you give any detail on what the end result is? What kind of data do you > end up with in redshift, and what kind of queries?

I'll have to get our BI team to create a follow-up post.

In a lot of ways its the most interesting part of this project. I'm not entirely sure what data we can share; I'll push to get something out.

> What kind of data do you extract from mixpanel?

The mobile devices push user interactions with the app as events to Mixpanel. We pull that data daily into Redshift, and this allows us to run historical reports and discover patterns of user behavior within the mobile app.

> Is all this running continuously, or different schedules for each worker? > Any of these event based rather than schedule based?

The Extractors are Schedule based. So with Mixpanel for example we do a daily dump around 4am (once all the Mixpanel data is available for export).

With our Rails events we push them to IronMQ and the scheduler kicks off workers every 15 mins to pull them off.

The `Transformers` and `Loaders` are event based. So the Extractors would kick them off when they have completed their work.

</comment></comment><comment><USER4> pretty great example of using IronWorker to perform a ETL with many complex pieces.

It is extremely nice to be able to use git/version your workers separately from your greater application on the Iron.io platform

</comment><comment><USER5> Why iron.io over cron?

<comment><AUTHOR> Iron.io has 3 functions: the scheduler, the queue, and the processing/worker platform. CRON would just be the scheduler part of that and you'd still be left dealing with where to host workers, how to scale them, manage/monitor, etc.

IronWorker (and IronMQ) automates a lot of this operational overhead and makes it easy to just focus on your worker code.

Also when it scales, you can have hundreds, even thousands, of workers running in parallel.

</comment></comment><comment><USER6> what about dependencies in the workers?

<comment><AUTHOR> I can't speak for HT specifically but dependency management is fairly straightforward. You can include any gems or libraries in your worker code package. If they contain native extensions, we'll compile and package them in at the time of upload so that the worker can execute at runtime until the next time you change the code and re-upload.

More information here: [http://dev.iron.io/worker/reference/builds/](http://dev.iron.io/worker/reference/builds/)</comment></comment>


Superdeterminism - <AUTHOR> https://en.wikipedia.org/wiki/Superdeterminism <comment><USER2> I feel that if there is a chance the universe is deterministic, you shouldn't actually worry about it, just go about your life thinking otherwise. Either it is deterministic and it doesn't matter, or your decisions actually matter.</comment>


Ask HN: Should HN links have a target="_blank"? - <AUTHOR>

opening to a new browser window when clicking a link to an external site? <comment><USER2> Yes, just in case I break my mouse-wheel, right mouse button and control key all on the same day.

</comment><comment><USER3> I would definitely prefer it if they did... I often visit the linked article and end up clicking around a bit on the site, which prevents a 1-click back button to return to HN to comment on the link here.

</comment><comment><USER4> I generally dislike those kind of links. Unless you watch your status bar (given that it's turned on and your browser supports this feature), you don't know what's going to happen. Whereas if you manually option-click/middle- click, you've got a behavior that you can count on (also, quite often you want open in background anyway).

</comment><comment><USER5> No. If I want to open in a new window/tab, I'll use the appropriate modifier.

</comment><comment><USER6> Here you go:

[https://www.squarefree.com/bookmarklets/pagelinks.html#targe...](https://www.squarefree.com/bookmarklets/pagelinks.html#target_new_windows)

</comment><comment><USER7> No.</comment>


TensorFlow as a Service – seeking feedback - <AUTHOR> https://github.com/vkuznet/TFaaS <comment><AUTHOR> Hi, we developed new general purpose framework (written in Go) to serve TensorFlow models and seeking your feedback about existing and/or missing functionality. Let us know your opinion.

<comment><USER2> What are the types of models this supports?

<comment><AUTHOR> should be any if it is TF one. We tested it with image and general classification models which were provided by different people.</comment></comment></comment>


Ask HN: Is there a key-time-value database? - <AUTHOR>

I'm looking for a way to store kev-value pairs that change over time and maintain the key-value history.
I'd also like to be able to retrieve the key-values for a segment of time in the past.
Does anything like this already exist? <comment><USER2> <http://en.wikipedia.org/wiki/Time_series_database>

I suspect this is what you are asking for. This page has links to a number of time series database systems.

<comment><AUTHOR> Thanks, I knew it had to be a lack of the right Google keywords.

</comment></comment><comment><USER3> Yes, products like this do exist.See <http://en.wikipedia.org/wiki/Time_series_database>

The oil industry uses them to record data points coming from hundreds of instruments on equipment on their oil rigs (pump pressure, engine temperature, pipe rate of flow, motor RPM, etc). The oil companies that operate them are rich, and there's big money at stake to optimise the flow of oil; not to mention lives at stake - Piper Alpha accident in 1988 cost 167 lives and £1.7 billion.

The one that I saw used was OsiSoft Pi System <http://www.osisoft.com/Products/PI%20System/>

</comment><comment><USER4> What you want is a database that supports the equivalent of a multiple column key. You can fake it by concatenating your key with a time stamp. Tokyo cabinet supports this with its btree+ store. You can select a range like thiskey-00000000 to thiskey-99999999. The latest is the last returned. Or give the latest the key thiskey-00000000 and rekey it when you do an update.

</comment><comment><USER5> This may or may not apply to your case:

About two years ago I implemented a database app (relational, Mysql) where tracking versions [of certain tables'] was a requirement. I solved it by adding a ValidFrom timestamp to the table, and now every row has an associated validity period, eg. the customer's address was X between T0 and T1, Y between T1 and T2. Unfortunately this is not some kind of convoluted backup solution, as the application logic sometimes needs to know these values at some prior time (it's a billing system).

Roughly, the basic problem is that simple queries or enforcing consistency requirements are now very complicated, since tables have to be JOINed and WHEREd on the validity periods. People (other than me) are unable to modify the data per command like SQL, imagine 3 normalized tables each with validity periods, and you're UPDATEing them but don't want to break time-consistency, it's frustrating. The client programmer basically failed at creating a usable GUI that was able to manage these versions, and I don't blame him (think of a case where you have a versioned table T1, a versioned table T2, and you're connecting them with a versioned has-a table T3). UI-wise it's kind of a nightmare.

Lesson learned: _BAD IDEA_. Don't do it. Fight with your manager to have the requirements changed. I've been thinking ever since what would have been a good way to do this, and I can't figure out a good way, hence I think this is a stupid requirement. Also, now I actually have a picture of the business process that drove this requirement, and although this isn't a trivial issue, I believe it could be solved by fixing certain business processes that require application logic to know about past data [in this manner].

<comment><USER6> You're right, it is a huge pain to do this manually, but depending on what languages and platforms you're developing for, there are libraries to handle this automatically.

I've done something similar with NHibernate, where you only need to add a couple of event handlers (maybe 30-40 lines of code + a bit of configuration XML) to set this feature up. I wish I'd heard of it earlier though, since it's really quite useful (though as you said, horrendous to implement manually).

There's a wiki on NHForge about it, though I don't know that it's really the best way to do it: [http://nhforge.org/wikis/howtonh/creating-an-audit-log- using...](http://nhforge.org/wikis/howtonh/creating-an-audit-log-using- nhibernate-events.aspx)

<comment><USER5> Thanks.

I've checked out your link, but I'm not sure this would solve my core problem(s). The problem is that even without versioning, a lot of the system is made up of long SQL commands containing subtables and JOINs and such. In several instances I had to optimize the queries. So I wouldn't want to use some ActiveRecord thing or generators. And this is now further complicated by versioning.

Technical issues aside, the fact that everything is versioned makes it hard to reason about the data. Eg. the people in charge of "controling" are always asking me for help. Many times it turns out that there's no problem, the data is consistent, they just got confused by the versions.

<comment><USER7> familiarize yourself with time series data, as mentioned earlier in the thread, and read the amazon dynamo paper specifically the parts dealing with vector clocks.

<comment><USER5> As my startup is developing a distributed key-value store, I'm quite familiar with Amazon's Dynamo, and what I was talking about previously has nothing to do with vector clocks.

</comment></comment></comment></comment></comment><comment><USER6> If you're storing a key (say, a GUID) and a value (maybe a string), then all you'd need to do is make another field/column that handles timestamping. If you're using an ORM like Hibernate, it will handle (most) of it automatically for you.

Or, you could simply set your database up to use a composite key on the table (so the key becomes the key + revision number), though that isn't the best way since composite keys usually incur some performance overhead.

</comment><comment><USER8> Google BigTable works this way. <http://en.wikipedia.org/wiki/BigTable></comment>


Ask HN: Women in Tech - <AUTHOR> My friend is doing her PhD thesis on work life balance and related psychological processes of female software engineers. If you are one or know someone who would like to participate in this study, please email her at firstname.lastname@example.com<p>Thank you in advance! <comment><USER2> Have spread the word amongst ones i know. Good Luck to your friend with the study!

<comment><AUTHOR> Thank you!</comment></comment>


Stricken Russian Nuke Sub Crew Prevented 'Planetary Catastrophe' - <AUTHOR> https://www.msn.com/en-us/news/world/stricken-russian-nuke-sub-crew-prevented-planetary-catastrophe/ar-AAE1Fn5 <comment><USER2> The article mentions how this sub can operate up to 6,000M underwater and throws out this juicy bit > The craft reportedly was used to target undersea communications and other cables.

I doubt it's more than speculation but...

I believe it's in the order of $5M + 2 weeks to fix cables breaks near the shore and >$10M + 8 weeks to fix them in the middle of the ocean which sounded like a lucrative opportunity for blackmail

<comment><USER3> Probably tap undersea cables than bust them - which a fishing trawler could do with more deniability. Regardless, prototype Nuclear espionage sub, all officer crew of 25, 7 of the dead were Captain 1st Rank (right under admiral), 2 recipients of the Hero of the Russian Federation. My interest is certainly piqued.

<comment><USER4> There was also a mention that the sub is of an unusual design - a set of spheres rather than a conventional cigar shape.

<comment><USER5> I think that was based on graphics of how the interior is constructed. The sub in question should be a cigar shape: [https://en.wikipedia.org/wiki/Russian_submarine_Losharik](https://en.wikipedia.org/wiki/Russian_submarine_Losharik)

<comment><USER6> I believe the name is from a cartoon character, who is made out of balls:

[https://www.youtube.com/watch?v=1F_hX- QjDQw](https://www.youtube.com/watch?v=1F_hX-QjDQw)

<comment><USER7> A better diagram of the sub here: [https://cdn.arstechnica.net/wp- content/uploads/2019/07/Ru_Lo...](https://cdn.arstechnica.net/wp- content/uploads/2019/07/Ru_Losharik_Cutaway940.jpg)

basically a series of interconnected bathyspheres with a hydrodynamic shell over them.

<comment><USER8> So basically personnel can't access the reactor and engine compartments from the life support units, the sub has to surface. Here's a bigger version of the same diagram with readable text:

[http://www.hisutton.com/images/Ru_Losharik_Cutaway.jpg](http://www.hisutton.com/images/Ru_Losharik_Cutaway.jpg)

Skegs, hydraulic manipulator, no weapons. It's clearly ment to tamper with undersea cables.

<comment><USER6> Are any of these details more than speculation? I had the impression that the best information was some not-so-clear pictures which happened to catch it on the surface, plus the admission a few days ago that it is in fact nuclear powered, and had a suspiciously high-ranking crew.

I agree that tampering with cables seems like the obvious reason for the military to go super-deep. With recovering sunken things made by your adversary a close second. And in the mid-1980s, they were much better at titanium than at video cameras.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> This article chases clicks by parroting hyperbole from a remembrance service as fact.

This is not the first, nor the worst fire aboard a nuclear submarine. Komsomolets burned and sank with both a nuclear reactor and nuclear warheads on board. The reactor scrammed and was not damaged by the fire; the warheads' biggest risk was leakage of radioactive material.

Losing a nuclear submarine in a fire is a potential catastrophe for the local environment and a tragedy for the fallen crew, but hardly an event that justified the "planetary" scale.

<comment><USER10> Plus one. And here's a handy reference to the wikipedia page dedicated to the 9 sunken nuclear submarines so far

[https://en.m.wikipedia.org/wiki/List_of_sunken_nuclear_subma...](https://en.m.wikipedia.org/wiki/List_of_sunken_nuclear_submarines)

</comment></comment><comment><USER11> Could the fire that the crew fought with their lives indeed have damaged the reactor (and thus have caused the "planetary catastrophe" \- I assume that is what the article hints on)?

Or basically, was the reactor designed in such a way that a regular fire could damage it that it would become unstable?

<comment><USER12> And where is the planetary scale when a nuclear explosion occurs? There have been many nuclear explosions on the Bikini Atoll etc. without planetary catastrophes.

Not to speak of the fact that an underwater nuclear explosion would do even less, except for a Tsunami maybe, which again is localized.

The only thing I can think of is preventing nuclear war. A rogue ballistic sub or so. But that is not very plausible.

<comment><USER13> The suggestion is the sub may have been carrying a Cobalt Bomb, a nuclear weapon encased in cobalt to increase fallout. In the case of a water detonation I'm guessing massive radioactive contamination that would end sea life for a large area - perhaps even planetary.

Pure speculation to fit the "planetary catastrophe" remark.

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

[https://www.businessinsider.com/russian-media-nuclear- torped...](https://www.businessinsider.com/russian-media-nuclear-torpedo-can- destroy-the-us-europe-the-world-2019-1?r=US&IR=T)

<comment><USER14> I don't understand how they made the jump from "200 mega-tonne tsunami bomb" to cobalt bomb. I'm certainly no nuclear physicist, but I thought a cobalt bomb was purely to spread radioactivity and had effect on the strength of the bomb. Even a nuclear bomb creating a tsunami seems quite questionable, as does a fire setting it off.

The whole thing just seems like an odd mix of Russian propaganda, crazy conspiracy theories and scientific misunderstanding.

<comment><USER15> I suspect a "cobalt bomb" would be less effective in terms of explosive yield than an equivalent normal multi stage weapon design - the neutrons from the fusion reaction in the secondary being used to activate the cobalt rather than into fissioning the fissile jacket of the secondary where most modern weapon designs actually get most yield.

</comment></comment></comment></comment></comment><comment><USER16> Damn. 6000m? A nuclear sub at that depth would be unreachable by surface/aerial ASW systems and can provide definite nuclear deterrence.

<comment><USER17> Nuclear as in nuclear powered. Not as in, can launch nuclear weapons.

<comment><USER18> Adding a nuclear weapon to a nuclear powered sub is surely not that hard. The big news is a nuclear powered sub capable of going that deep.

<comment><USER19> I thought running for a very long time without needing to surface was the entire point of nuclear subs?

<comment><USER18> Yes, but "normal" nuclear subs can still not go very deep without being crushed. Thus, they can still be hunted for. But a nuclear sub which can go thousands of meters deep in hiding mode, would change the theater of war considerably.

</comment></comment></comment></comment></comment><comment><USER20> They may have prevented a 'Planetary Catastrophe', but I find it rather likely that they were also the cause of the situation.

History is full of stories where Russian subs are close to causing catastrophes because of rushed production, poor maintenance, training, etc.

Reality is that they didn't have to sail around in a nuclear sub in the first place.</comment>


Ask HN: What App or Service Do You Use for Journaling and Note Taking? - <AUTHOR> I'm already aware of the likes of notion, typora, pen and paper, Evernote, notable, boost, jrln. Just wanted to know if there is something out there I am missing and need to give a spin <comment><USER2> Posted this here a few times in response to this q: I use an app that I made myself ([http://write.itskrish.co](http://write.itskrish.co)), its defining features being:

1\. you choose a fixed duration of time within which to journal (i choose 15 minutes even though it is initially tough to spend all of)

2\. if you stop typing for more than a few seconds within the duration, you lose your writing

These constraints basically force me to dump anything and everything on my mind for the sake of continuous typing (to not lose what i've written), and I've been successfully doing it at least 1-2 times a week for a few years now. All your entries are also saved locally in-browser only, with the option to export a savefile. Source code: [https://github.com/krrishd/write](https://github.com/krrishd/write)

</comment><comment><USER3> After trying several tools. I did choose and use Devonthink[1]([https://www.devontechnologies.com/products/devonthink/overvi...](https://www.devontechnologies.com/products/devonthink/overview.html)). It is easy, cloud sync, encryption, plugins and is very smart. I can collect all kind of data (web pages, csv, json, formated) and it always fit nicely. Give a try

[1] - [https://www.devontechnologies.com/products/devonthink/overvi...](https://www.devontechnologies.com/products/devonthink/overview.html)

</comment><comment><USER4> A combination of text files that I edit with Emacs or Eclipse depending on what I'm doing, and a self-hosted Mediawiki instance.

For TODO list / task management stuff, I'm actually in the middle of building my own command line task manager tool that maps specifically to the way I like to do things. Once it's a little bit further along, I'll release it as Open Source in case anybody else might find it useful.

</comment><comment><USER5> vscode with [https://marketplace.visualstudio.com/items?itemName=pajoma.v...](https://marketplace.visualstudio.com/items?itemName=pajoma.vscode- journal) and [https://marketplace.visualstudio.com/items?itemName=Gruntfug...](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.vscode- journal-view)

It stuck because it's just markdown, vscode is always open and it syncs to plaintext in dropbox so is greppable, accessible from basically everything.

</comment><comment><USER6> Setup a TiddlyWiki instance with Docker several months ago and I'm very happy with it.

</comment><comment><USER7> Trillium

</comment><comment><USER8> org-mode</comment>


HOW TO:Set up a Ruby based DNS Server - <AUTHOR> http://blog.dharanasoft.com/

<comment><USER2> Why the hell would you use this over djbdns?

<http://cr.yp.to/djbdns.html>

<comment><USER3> Or NSD, or PowerDNS, or even Bind9...

</comment></comment><comment><USER4> NIH much?</comment>


A Grim Future for Pharma? Here Are the Numbers - <AUTHOR> http://blogs.sciencemag.org/pipeline/archives/2017/11/28/a-grim-future-here-are-the-numbers <comment><USER2> Grim my ass. How about humane. They make astronomical revenue, and like playing god. They have no problem discarding a cure in favor of a treatment, or raising the price 10,000x when something is popular.

Their industry can say "buy or die" and get away with it.

It is about f*ing time that someone said to them "the great power to say 'buy or die' comes with great responsibility, and it is time for you to start acting responsibly."</comment>


The Best Marketers Are Engineers  - <AUTHOR> http://steveblank.com/2009/10/19/ardent-war-story-5-the-best-marketers-are-engineers/ <comment><USER2> Am I crazy, or does the subject of this post miss the point completely?

Wasn't the whole point of this article the fact that the writer WASN'T an engineer, but that he intimately learned the product he was marketing, and that was what people wanted?

I think the point here is that the good marketers are the people who can crossover from one part of the office to the next. An engineer with no social skills will do no better than a marketer with no technical knowledge-- you need both. This article happened to be about a marketer who crossed over, not the other way around.

<comment><USER3> My takeaway was that it's that it's easier for an engineer to pick up the necessary marketing skills to sell to other engineers, rather than a business person picking up the necessary engineering skills. (Assuming that these engineers already have the necessary social skills)

</comment></comment><comment><USER4> That's why there's a whole profession called "Marketing Engineer" and another called "Sales Engineer" both of whom earn a lot more than the normal marketing and sales people.

<comment><USER5> _both of whom earn a lot more than the normal marketing and sales people_

Not true. Good sales people earn a lot of money. In a lot of companies sales folks earn more than the management team.

<comment><USER6> If we were going to make a comparison, we would have to use expected or median pay. People in sales tend to have large variance on their paychecks.

<comment><USER5> Which is why I said _Good sales people_ :-)

</comment></comment></comment></comment><comment><USER7> I've been really enjoying this series on marketing. I hate to go off-topic, but does anyone recommend his book The Four Steps to the Epiphany?

<comment><USER8> Lots of people do:

[http://www.startuplessonslearned.com/2008/09/lean- startup.ht...](http://www.startuplessonslearned.com/2008/09/lean-startup.html)

<http://groups.google.com/group/lean-startup-circle>

and many, many more. I've probably seen 15 positive reviews of it on blogs I read.</comment></comment>


Starlink Project of SpaceX – All You Need to Know - <AUTHOR> https://bitactro.com/starlink-spacex/ <comment><AUTHOR> What you need to know about SpaceX

</comment><comment><USER2> Wow this is useful link</comment>


Is the Hum, a mysterious noise heard around the world, science or mass delusion? - <AUTHOR> https://newrepublic.com/article/132128/maddening-sound <comment><AUTHOR> He went into the box last week, apparently [https://hummap.wordpress.com/2016/04/05/after-months-of- dela...](https://hummap.wordpress.com/2016/04/05/after-months-of-delay-i- finally-entered-the-vlf-blocking-deming-box/)</comment>


How Google can checkmate iPhone - <AUTHOR> http://www.bitsandbuzz.com/article/how-google-can-checkmate-iphone/

<comment><USER2> While making it easier to port iPhone developers isn't a bad idea, it's not a "checkmate" to the iPhone, since it would only capture X percent of those developers, and even if that X was magically 100%, I've never heard someone say, "I was going to get a Droid except they didn't have the shaken baby app."

You don't checkmate someone by mimicking them. You do it by being better: Better partnerships with low-cost carriers (T-Mobile) AND better coverage carriers (debatably Verizon), developing killer apps the iPhone _can't_ have, and by finding and exploiting other partnerships or technology that Apple can't or won't make that have a unique selling proposition.</comment>


The rise of the female founder - <AUTHOR> http://versiononeventures.com/rise-female-founder/ <comment><USER3> Curious how the number of female founders in non-US portfolios compares.

</comment><comment><USER4> I wonder what the success rate is now for Pitched and Funded vs just funded (Male/Female)

<comment><USER5> My (anecdotal) experience is that the success rate of female founders to convert a pitch to funding is significantly higher - might be due to the fact that only the most talented female founders have currently the courage to think about starting a company.

<comment><USER4> If there is really a stronger success rate it is more than likely a bias than a gender based attribute.

<comment><USER5> Why do you think that? Compare it to the type of customers you attract at different stage of building a product: your first customers are always the most passionate, most valuable customers. As you broaden the customer base, you attract people that are way less into your product. Female founders are still a very small group, only the most passionate, most courageous, most talented ones are currently considering becoming entrepreneurs. Once being a female founder is the new normal, pitch to funding rates between males and females will be much closer again. Having said all that, this is just a theory based on anecdotal experience.

<comment><USER4> That would only be potentially true if more males in this industry are pitching as a percentage than females. I have not seen anything to suggest that this is the case.

</comment></comment></comment></comment></comment><comment><USER6> I'm all for more women in engineering and technology, but as I said to a customer recently,"I don't think I have ever hear a female say,"I reballed the faulty nvida chip with artic 5 in the a with a hair dryer at 3 a.m., didn't work and I spent the next 40 hrs. trying to fix it!". Actually, I'm kind of glad most women aren't interested in the stuff I'm interested in. As to power and money, most guy's-- if their honest became rich because they knew it attracted women? Of yea, a rich father always helps. The sad part is it all works in reverse for wealthy women. Wealthy women scare off most guys. I have a very good looking ex-girlfriend, blond, wealthy, etc. move to Silicon Valley hoping to lasso some guy--she is still single. I truly believe men are intimidated by her position in life. In all honesty--I was extremely attracted to her, but wanted someone with different values--yes--children, introspective --a Zooey, or Fran, but there's a part of me who wondered if she was struggling would I look at her differently? I look at the personal ads and almost 100% of the time the ad I want to say "It all works in reverse." Meaning what's desirable for women is not desirable for men. I hope this changes in the future.

<comment><USER7> Ok, so, let me enlighten you as to why you're being downvoted.

First, your post reads very rambly. That doesn't help much, though it probably actually does help a little, since the more what you're saying becomes clear, the more likely you are to get downvoted.

Which brings me to the second point. Your post is highly misogynistic - <USER2> up about it here [https://en.wikipedia.org/wiki/Misogyny](https://en.wikipedia.org/wiki/Misogyny) . At various points, you make the following arguments:

\- Women simply aren't into tech

\- You don't want women to be into tech

\- Because it doesn't fit your stereotype of what women should be like

\- Your view of what women should be like is they're there to help you with some aspects of your life, like having children, etc

\- Successful women are doomed to not be successful by your stereotype of what women should do

\- Successful women are scary

These are very distasteful, anti-women points that peg you clearly as either someone who believes this stuff because he's an asshole, or someone who believes this stuff because he hasn't spent 5 minutes researching the topic and is running on stereotypes. The latter's only advantage is that maybe there's hope for you to get better over time.

That's why you're being downvoted. You should really spend some time thinking about what kind of person the above beliefs make you, and start re-examining where they come from and how you can change them in yourself.

<comment><USER8> As a female, thank you for your post. I should also mention, I find this attitude very attractive, and if you are single, I would like to take you out to dinner. As long as you don't mind, of course, that I will pay with all the money I make from my tech job.

<comment><USER9> Thank you for outing yourself as someone who finds witch-hunts and ad-hominem shaming behaviour attractive. As a male, I would pay _not_ to have dinner with you.

<comment><USER8> >I would pay not to have dinner with you.

How nice of you! When can I collect my check? :)</comment></comment></comment></comment></comment>


What Should Marissa Mayer / Yahoo Do Next? - <AUTHOR> http://wajeez.com/2013/05/26/what-should-marissa-mayer-do-next/

<comment><AUTHOR> I was wondering, did anyone hear about Jolla before? No offense but can Nokia come up with a decent OS that can take Android?

I really want to believe, but I just can't. I'd love to see Yahoo coming up with a competing OS, but they have to pick wisely.

<comment><USER2> I remember reading about them a few years back when they started the project.</comment></comment>


Understand the GDPR in 10 minutes - <AUTHOR> https://medium.com/@ageitgey/understand-the-gdpr-in-10-minutes-407f4b54111f <comment><USER2> Any article with this headline should really be an impassioned plea about why that's actually impossible and why people need to devote more than a Medium article's worth of time to figuring out what the law means and what it means for their business.

<comment><USER3> While true, I think this gives a good introduction.. especially for people who are outside the EU and may not realize that the law might impact them as well. Hopefully encouraging them to seek out a deeper understanding of the material on their own.</comment></comment>


APL – A Glimpse of Heaven (2006) - <AUTHOR> http://vector.org.uk/art10011550 <comment><USER2> An anecdote about my first and only brush with an APL programmer:

Towards the end of the nineties I was a young computer science student standing on an almost deserted suburban above-ground underground station waiting for the next train into the centre of London.

A very old but brisk and snappy gentleman in traditional gentleman's clothes came onto the platform, and for some reason we nodded genially as you do when you pass strangers on country lanes; in London you ignore absolutely everyone, so it was strange we did this.

And there we stood, waiting for the train. He offered me a peppermint from a small metal tin. Of course my parents taught me to never take sweets from strangers, so I instinctively declined even though I'd now left home and thought of my self as a grown-up.

Anyway, we got talking. At first it was 'what are you studying?' kind of polite interest. He was intrigued that I was a computer science student.

I've gotta underline again how unusual this was, for anyone in London to ever talk to another stranger, but this really happened. I don't think I ever acknowledged there was anyone else in London, ever. It wasn't even normal to know the names of your neighbours.

And so we sat beside each other on an underground train and he told me about his early years as a programmer. Did I know APL, he asked? I had never heard of it! His veiled references suggested he worked with but not for Cheltenham.

And he delighted in telling me programmer war stories from when he did commercial stuff like how a vendor had encrypted their APL programs and he had reverse engineered it and waved the decrypted source-code in front of the firm's rep and complained about shoddy code and bugs! At the time I was tackling Simon Singh's Code Book contest so that kind of story caught my imagination and I begun to wish I'd have that kind of chance in my programming future.

Now, in his old age, he went from his home in the north of England down to London once a week for a charity meeting he chaired. That's the kind of thing respectable old gentleman do to give their life meaning, I guess.

Anyway, afterwards I searched the web for APL (this was before google) and was, of course, gobsmacked.

<comment><USER3> For non-Brits, "Cheltenham" = GCHQ

<comment><USER4> For non-Brits, GCHQ = the British intelligence service, roughly equivalent to the US NSA. (This non-Brit had to Google.)

<comment><USER5> My hobby :

Showing people in the bay area this photograph and asking them if they've seen the new Apple HQ

[https://en.wikipedia.org/wiki/Government_Communications_Head...](https://en.wikipedia.org/wiki/Government_Communications_Headquarters#/media/File:Aerial_of_GCHQ,_Cheltenham,_Gloucestershire,_England_24May2017_arp.jpg)

</comment></comment></comment></comment><comment><USER6> A few years ago, discovering J and playing a bit with it, I went through phases : "this looks square and clean, a nice exercise in language design" -> "those guys take it way too seriously" -> "people seem to be using it for serious stuff, they are simply insane".

Coming back to it every now and then for kicks slowly showed me a few strengths. First, with the short verb names and clear semantics, J is the only thing I've found that brings, for me, the comfort of a specialised handheld calculator to the PC. That realization, very independently from its array capabilities, is what got me really going with it, on a gentle learning curve. And you get it on your smartphone too ; I eventually sold my good old HP48 friend.

From there I started using it for small things. When I was building a lift for my brother's Warré beehives, J let me scribble a few beam-resistance equations in it and using its solver and plotter to easily get good results. So I started using it for things that were too big for spreadsheets, but that I was too lazy to deal with in a "proper" language.

That needs a change of mind regarding how you write and maintain programs. When I want J to do something in a program, I fiddle with it until I get the "sentence" right, and that's it. That sentence will never be modified again. If I need it to work differenty, I'll rewrite that sentence from scratch. Then find a good name for your sentence so that you can combine it with others, and suddently you discover that you can write J like a nice DSL that can very satisfyingly sound like plain spoken language.

I wouldn't stretch it though. I'm not passionate enough about it to invest what's needed for mastery. 80 lines of thin J is my largest. Beyond that, switch to something that helps with maintainability, but beware of the sudden and amazing code-size inflation !

<comment><USER7> > When I want J to do something in a program, I fiddle with it until I get the > "sentence" right, and that's it. That sentence will never be modified again. > If I need it to work differenty, I'll rewrite that sentence from scratch. > Then find a good name for your sentence so that you can combine it with > others, and suddently you discover that you can write J like a nice DSL that > can very satisfyingly sound like plain spoken language.

I had exactly the same experience with Forth. It is very cool when you define a word as an almost English sentence and all the data flow effortlessly through the stack but I have to admit it can take a lot of time to get it right. I got to the conclusion that Forth is a contemplative language where you spend a lot more time thinking than typing.

</comment></comment><comment><USER8> I once got talking with an anesthesiologist who was taking care of a family member. Upon hearing I was a developer, he told me he was an APL programmer who spent most of his computer time developing Bible software. He regaled me with a few APL war stories, about how he could get so much more done with so much less code...

I was intrigued, and still am. But one thing I didn't catch -- how do you write all those non-ASCII symbols using a standard OS and text editor? Or does it require special tools?

<comment><USER9> You use a font that has those symbols and then Alt key combinations to make the characters.

<comment><USER8> Wow... How about on a Mac? Option and Shift-option keystrokes?

<comment><USER9> Yes. I have the free but non open source APLX running on my iMac and have the image of the keyboard map they supply loaded in Preview.

Many of them are mnemonic, such as iota being (key)-I for example.

<comment><USER10> Free because the APLX vendor eventually decided to focus on their legacy software business and get out of selling an APL interpreter. I think they essentially needed a rewrite or just a lot of work on the product and couldn't justify it. Dyalog agreed to host the old and unsupported APLX interpreter on their site if anyone wants it.

</comment></comment></comment></comment></comment><comment><USER11> APL and Prolog/Datalog are local optimums in programming languages. When you enter their domains, you are limping in every other language. It's almost better not to know about them because you can avoid constant "there is a better way" in the back of your head.

I think we should just bite the bullet and make them into standard domain specific languages available in every language and environment.

<comment><USER12> What domains are they used in? I've learned a little bit of J but got put off because most people involved with J seem more interested in using J for the sake of using it rather than actually doing anything substantive with it. My impression is that APL is similar (at least currently) but I'd love to be wrong.

<comment><USER13> I got into J in the '00s, it was interesting. The community was making substantive stuff, but they were making it for themselves more than for anyone else. I noticed a _lot_ of teachers in the mailing lists. They were making tools that helped them track grades and attendance. They were generating quizes and worksheets from question banks that they produced over the years. They were creating puzzles for their students. All of this was substantive, but it was focused on their ability.

J (and APL) really seemed to be an extension of what computing could've been. As a computer scientist and programmer, any language and OS work _for_ me. I want something, I make it. I can write an app in C or C++ or Java or Lisp or Erlang or... because I have the background for all of that. For most other users, they have to find a program that accomplishes their need, or maybe they do it in Excel or Google Sheets. But in the past we had an idea of interactive languages that were the main interface for the user. The user could then produce the things they needed to meet _their_ needs. They didn't need me, the CS guy, they could produce at least a functional prototype that met the need for the day. Then over the years they'd tweak it, add more, grow it into something comprehensive, or it reached a natural limit (due to complexity or meeting requirements).

J and APL are from that branch of computing. We've hidden it in our OSes (to varying degrees), encouraging people to buy programs that accomplish X rather than providing them an environment to produce their own programs to do X. The APL family of languages makes it front-and-center about the user accomplishing their needed computations and activities.

<comment><USER14> I think that we actually already have something much like the alternate world you describe - linux distros.

The posix shell language is _amazing_ at what it does. There is no language in existence in which it is as easy to fork and exec two programs with different collections of arguments and connect their standard streams together. In fact, it's so easy to do those things that these languages have been universally adopted, bare and raw, as both the first and last user interface that experts reach for when operating a computer. I log in to a posix shell, I use it to find files and launch programs and deploy software and talk to people, and I depend on it when civilization has fallen and I need to re-establish operation using only what I can scavenge in the howling emptiness of my bootloader's recovery console.

At the same time, these shell languages are in many ways objectively terrible. They're practically made of subtle unexpected behaviors, their provisions for modularity are terrifying, and they're so deeply baked into so many things that they're past ossified and well on their way to fossilization. Google's style guide for bash [1] draws the line at 100 lines of code - if you have that much logic you _need_ to switch to a better-suited language _now_.

But there are situations where people couldn't follow that rule. As pointed out by the Oil Shell project [2], most linux distros are almost entirely sh codebases. And I think that these give us a good view into the kind of alternate world you're looking at. They grew that way because they are the result of hundreds or thousands of people over the course of decades using the language as their main interface, building functional prototypes interactively and then tweaking and packaging and adding functionality until they became comprehensive or capped out. And then people adopted those tools and they became part of the operating system. I guarantee you that /etc/rc can trace its origins back to some angry sysadmin deciding that this whole "booting the operating system" thing was too much work and needed to be automated.

Personally, I think that there's a reason we went the direction we did. In some ways, languages like APL and sh are neat. I _can_ , in fact, use bash as a core interface for sysadmin tasks. But at the same time, I've seen some pretty horrifying code in my time as a programmer, and I find shell scripts in /etc/ that near the top of the list. These hyper-expressive interactive languages are fantastic for their purposes at the cost of their performance in other domains. It might take me an hour to get twenty lines of bash working safely and reliably, and every moment of it I'm thinking to myself, "there's a better way to do this, I should just use $other_lang".

1: [https://google.github.io/styleguide/shell.xml?showone=When_t...](https://google.github.io/styleguide/shell.xml?showone=When_to_use_Shell#When_to_use_Shell) 2: [http://www.oilshell.org/blog/2018/01/15.html](http://www.oilshell.org/blog/2018/01/15.html)

</comment></comment></comment></comment><comment><USER15> When I was in engineering school an APL programmer friend came over to where I was working and looked at my MATLAB homework. She eventually stated that MATLAB was a very bad APL. She then proceeded to solve my homework in a single line of MATLAB.

<comment><USER16> MATLAB doesn't deserve the moniker of a "bad APL". It's a bad FORTRAN.

</comment></comment><comment><USER17> For anyone interested in apl, take a look at k which is essentially apl restricted to the ascii character set. There's also q (aka kdb) which adds some additional database-like functionality (among other things) however it's proprietary and "free".

<comment><USER18> Last time I searched for Kdb I found that it's highly used in finance, is that still the case?

<comment><USER17> Speaking as a kdb programmer in finance (although for an unusual use case), most big (and some small) banks have an Enterprise license and have one or more teams that maintain a market data store and/or an order reporting/reconciliation/PNL stack.

There are a decent number of hedge funds that use it for more or less the same purpose but work with other data sets in addition to market data

For storing and exposing market data, you need very little additional code. Maintenance is a different story.

<comment><USER19> What's the unusual use case?

<comment><USER17> Doing analytics on streaming packet capture data. Probably not as unusual as the red bull f1 racing team using it for wind tunnel analytics.

</comment></comment></comment></comment></comment><comment><USER13> [https://www.dyalog.com/uploads/documents/MasteringDyalogAPL....](https://www.dyalog.com/uploads/documents/MasteringDyalogAPL.pdf)

I knew the text felt familiar, the same author wrote the above linked book. The intro covers the same material. If you're interested in APL (NB: Not a professional, just liked playing with it), that book was really useful to me last year.

</comment><comment><USER20> "This example shows clearly that there are ways of reasoning other than those which have dominated information processing for 40 years but they are, alas, still extremely rare. This difference and originality, introduced by APL, are major features. They typify the open and welcoming intellectual spirit of the people who practise it." — FWIW, this example (+/ Salaries × Rates[Categories]) can be rewritten nearly word for word in R (Sum(Salaries*Rates[Categories])), so at least some of the ideas still have some currency.

<comment><USER21> I would say that pandas and R can pretty much express everything that APL/J/Q can. They are a lot slower though (than Q atleast, I haven't used J or APL)

<comment><USER22> Basic operations, yes. Composabilitu, not quite.

I don't remember enough APL, so my examples are K:

Maximum subarray sum: |/(0|+)\

Flatten: ,//

Rank: <<

In these examples, every single character is its own operation, and they compose to give another useful operation.

Any Turing complete language can express what any other Turing complete language can (by definition). And pandas/r do provide APL's vector and matrix operations. But not the composability, which IMHO is just as important to what this family brings to the table.

<comment><USER21> Well every pandas operation returns a DataFrame so that's pretty composable.

No doubt APL-likes are much nicer than pandas but in terms of operations, I belive they support the same operations.

<comment><USER23> , is a function, not dissimilar to pd.concat and indeed, x,y is very similar to pd.concat([x,y])

/ is an operator. It's similar to functools.reduce.

,/ is a function, not dissimilar to pd.concat, ,/x is pd.concat(x) which is a little weird. It's tricky, but not impossible to implement functools.reduce(lambda x,y: pd.concat([y,x]), x) but I might've gotten the order of the arguments wrong.

,// is also a function. I think you can do pd.concat(x).values.flatten(), but this obviously doesn't compose. I don't see how you can implement it with another functools.reduce but maybe functools.reduce operates on dataframes after all, so maybe it's just functools.reduce(lambda x,y: pd.concat([y,x.values.flatten()]), functools.reduce(lambda x,y: pd.concat([y,x]), x)) but I have no idea: pd.concat(x).values.flatten() is shorter so I can't imagine anyone would prefer trying to make this monstrosity work.

Being "much nicer" is everything. If the syntax, and the rules for the syntactic elements means nothing, and you are fine with _merely_ the ability to write the transformations, then you haven't thought about this clearly: VB6 is the same as Pandas since it too supports the same operations (or they can be implemented, as they can be in any turing-complete, and many non-turing- complete languages), but I find this line of thinking quite insulting: Pandas is _much_ better for data programming than VB6, and whether you know it (or like it) or not, APL and their ilk are _much_ better than Pandas for data programming.

<comment><USER22> The second / is converge, rather than reduce - I don't think python (or pandas) has it in a common library - and even if it did, usage would be ultra clunky. Your description is excellent, just wanted to make it more precise.

</comment></comment></comment></comment></comment></comment><comment><USER24> I'm never quite sure what to make of APL. It feels fantastically advanced for its time. Hardware keyboards? Performance?

<comment><USER25> When I was a graduate dev I worked for a company whose primary product was a APL interpreter. So it was an interpreted language, but it may well be possible that it can be compiled or JIT these days. The interpreter was written in 68K assembler and was pretty fast I suppose, but then I'm not aware any benchmarks to compare it with, since APL is not like anything else (except, as someone pointed out, maybe MatLab).

</comment></comment><comment><USER26> It seems to me APL and family are mostly useful for numerical work on data that is possibly queried (efficiently at that) from a database. A very naïve way would be to say it's a glorified Excel. Is there something I'm missing ? Are there other domains one could use it for ?

<comment><USER27> There was an _extremely_ impressive video a year or two back of someone who had built a compiler in APL. While I don't code in it, it changed my view of APL and its power.

HN was fairly caught up with it for a month or so, and a flood of APL posts.

Someone may have a link to it.

<comment><USER10> Just look for Aaron Hsu Co-Dfns on GitHub, talks on YouTube, and on HN...I think his username here is arcfide. Look for his submissions. He's probably 100x better at coding than me and never leaves notepad.

</comment></comment></comment><comment><USER28> Those who have experience with array languages, is it fair to say that something like numpy captures most of the benefits of APL/K?

If Python allowed a reduce operator "/", numpy will be able to get even closer to APL, correct?

<comment><USER29> In terms of semantics, sure. However a real part of the charm of APL (and J, and K) are in the syntax, and how notating your program causes you to think about it differently. Something like or/and outer product in the game-of-life oneliner is very straightforward APL, but is much clunkier to write in numpy.

<comment><USER30> I just found that there's a Julia package for at least some APL syntax, perhaps an easy way to play. [3] is a fork updated for v1.0:

[1] [https://www.youtube.com/watch?v=XVv1GipR5yU](https://www.youtube.com/watch?v=XVv1GipR5yU) [2] [https://nbviewer.jupyter.org/gist/shashi/9ad9de91d1aa12f006c...](https://nbviewer.jupyter.org/gist/shashi/9ad9de91d1aa12f006c4)

[3] [https://github.com/MasonProtter/APL.jl](https://github.com/MasonProtter/APL.jl)

</comment></comment></comment><comment><USER31> As someone who actually used APL prifessionally for a decade I am always surprised by how often the language surfaces on HN. I used it in a wide range of domains, from business and engineering applications to DNA sequencing.

The main comment I want to make is that anything that abandons notation is an abomination. The power of APL comes from the use if notation as a tool for thought and the expression if ideas. Notation is crucially important in this regard. Language transliterations like J were huge mistakes in APL's historical timeline.

</comment><comment><USER32> I still see two things missing from currently available APL dialects: being able to compile programs, and being able to create a control loop (which is required for continuous access to data input).

I wonder how much effort would be required to use, say, GNU APL for compiling the language?

</comment><comment><USER33> From 2014: [https://news.ycombinator.com/item?id=7813204](https://news.ycombinator.com/item?id=7813204)

</comment><comment><USER34> In college I learned APL. Most of my colleagues complained that we were learning it instead of something with more practical use or market value.

APL taught me it was possible (and remarkably easy) to write "write-only" code and how delicate legibility can be. Most of my APL code had 4 lines of comments for each line of code.

<comment><USER35> When I learned APL (which I never used) that when there was a bug, it was faster to rewrite the whole line using a different way than to debug the line.

A truly 'write only' language..

It shows in the article: the 'min' operation works both with an array and a scalar. Nice when you mean it, not so nice when you don't.

</comment></comment><comment> benji-york Every time APL comes up, I — as a non-APL programmer — am compelled to post this fun video about implementing Conway's Game of Life in APL: [https://www.youtube.com/watch?v=a9xAKttWgP4](https://www.youtube.com/watch?v=a9xAKttWgP4)

</comment><comment><USER36> Quoting from the article:

>> To get a similar result by means of a traditional computer language requires many instructions, which hides the object of the calculation behind arcane programming. Here, for example, is what one would write in PASCAL

It seems that the article emphasises on how APL can get a lot done with little code. I know of a programming language that can help you do that: Rust.

Rust has two powerful features:

1- Traits: You basically declare a "struct" type that has your data. Implement the Mul/Add Traits to it; and then "boom" you can multiply these seemingly complicated objects with *.

2- Macros: You can abstract repetitive code with macros. For example your code displays a table on the terminal. You have to do that repetitively. You can either create a function to display your data or have a macro do it.

</comment><comment><USER37> Is there a good open-source APL-like language somewhere?

<comment><USER29> GNU APL is a perfectly reasonable APL implementation.

There are open source implementations of some K versions - Kona, which is K3, and oK, which is ~K5.

J is available under GPL3.

</comment></comment><comment><USER38> So, is there a Machine Learning Docker with APL pre-installed?</comment>


Tails 2.9.1 is out - <AUTHOR> https://tails.boum.org/news/version_2.9.1/index.en.html <comment><USER2> The governments of more and more countries are forcing people to start using Tails. If you have a problem with censorship in your country (because for example you're living in United Kingdom), check out this operating system!</comment>


How to run Apache and Node.js together (the right way) - <AUTHOR> https://gist.github.com/754303 <comment><USER2> Isn't the advantage of proxying something like node that you can serve the static files and a cache through the web server which works well for that?

<comment><USER3> Apache doesn't handle large numbers of open/long-lasting connections like node (or nginx) does. Further, it will completely fail to reverse-proxy websockets (as will anything above layer 2 at this point.)

The best solution is to have your static files on a CDN.

</comment></comment><comment><USER4> WHM cPanel? Seriously?

<comment><USER5> A lot of us have no choice when at work.

<comment><USER6> Yet you're able to run Node.js in production?

<comment><USER5> I could if I wanted to. However if I disabled the control panel other people would FREAK OUT because they would no longer be able to administer the more simple sites without me around.

Edit: we have that parallels/ensim thing rather than cpanel but the point stands.

<comment><USER6> Gotcha. Never ceases to amaze me how some parts of the world work...

<comment><USER5> I hope I haven't made it sound like we're disorganised or we don't have any process. Its just that as lead developer my opinions are trusted, and if I am convinced that using node.js on a slightly more experimental site is a good idea, then people will believe me. I have some free reign to experiment, as long as I don't make things more complicated for our core business. I think it is a good balance.

As it happens I wouldnt use node.js in production right now, but thats not the point.

<comment><USER6> Yeah, no worries, I didn't mean to be condescending. That all sounds totally reasonable... I just forget there are people that don't live on the command- line sometimes.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> You should also do it this way with nginx if you want websockets to work. This is because nginx proxy doesn't currently support http 1.1 or keep-alive.

</comment><comment><USER8> If you are designing a new site, and you are concerned about performance, I would strongly suggest serving static (read: cacheable for a whole day) files which include javascript which talks to Node on a port. Then, who cares what the port is, as long as it works?

On the other hand, if you are integrating Node with existing code, say PHP, then use TCP sockets behind a firewall, or Unix sockets for communication.

<comment><USER9> Listening on an unusual port can be a problem for users behind various corporate, hotel and public wifi firewalls.

<comment><USER8> do you mean it's a problem for browsers or for the servers?

</comment></comment></comment><comment><USER8> Why would anyone want to run Apache and Node.js? What is so special about Apache? Use nginx.

And what do you mean by "with"? Just have Node listen on a different port, what's the big deal about this?

<comment><USER10> Most people don't like their public web servers to be on ports other than 80/443.

If you want the resources served by Node.js and another webserver to be on the same domain/port you _need_ some sort of proxy configuration.

<comment><USER8> Okay but I am assuming that most web servers are not run from users' private computer networks, but from dedicated data centers, or somewhere in "the cloud".

But yea I agree if you want node to listen on port 80 then you either forward certain URLs to it (using nginx this is easy), or or you just get another IP to point to the same machine, which is probably better.

</comment></comment></comment><comment><USER11> In any case, if you only have one IP, it would be wiser to have Node.JS proxy to Apache, not the other way around.</comment>