Scala Native - <AUTHOR> http://www.scala-native.org/ <comment><USER2> I'm curious to know the target user. There's no JVM interop, so one of the main reasons to use Scala -- an evolution of Java the language -- is out. Plus with Kotlin even that reason is being outdated, especially as you lose all the type conversions between Java arrays and Scala arrays, etc. Their C struct example has a lot of awkward syntax, so it seems that it's a bit 'bolted on' versus inherently designed for this use case. We have both Swift and Rust as great higher-level languages that compile to native applications with C interop, with more robust ecosystems and faster progress (Scala moves at glacial paces in comparison)... both appealing for different use cases.

I used to be a Scala enthusiast before these alternatives existed. What place does Scala now have in the world?

<comment><USER3> For me Scala was never about using a Java++.

If you want Java++, the best Java++ is still Java with a bunch of libraries. You don't need a new language for that.

Kotlin's succes is effectively because Google was late to port Java 8 to Android. A fine language btw, but it will either become more like Scala, or it will wither away eventually. My bet is in it becoming more like Scala, as evidenced by arrow-kt.io

Scala has a blend of features that makes it the most expressive mainstream functional programming language, most importantly ... implicits, by which you can model typeclasses and higher kinded types.

And in Scala we've got an active community of FP libraries. Actual FP, emphasizing referential transparency, with abstractions built for suspending effects.

It's a little known fact but the kind of FP programming we do in Scala tends to be more pure than what happens in OCaml, F#, Erlang, Clojure and others.

Also, we have a Scala to Javascript compiler, all the tooling works with it and we've got an ecosystem of libraries cross-compiled to Javascript.

As for Scala Native, it has its place. The problem has been lack of manpower to bring it to the maturity that Scala.js is at.

<comment><USER4> > It's a little known fact but the kind of FP programming we do in Scala tends > to be more pure than what happens in OCaml, F#, Erlang, Clojure and others.

I have only dabbled in Scala, but IMHO it's more suited as an OCaml with first-class modules. Why not use Haskell, if you don't need the JVM?

<comment><USER3> Compared with OCaml, Scala can express type classes and has higher-kinded types. Many abstractions that are easy to express in Scala are in fact hard to express in OCaml.

For-comprehensions are worse than Haskell's do-notation or compared with F#'s computation expressions, but the list ends there. In practice they work well and at least Scala has monadic for-comprehensions. How many other languages can claim that?

As for performance, I encourage you to take a look at the state of the art. Working with our IO Monads has better performance than many abstractions that people now take for granted, like most Future/Promise implementations.

I build systems that are super stressed by incoming traffic and Scala's performance is awesome. Worse than bare metal Java of course, but when you compare it with high level Java frameworks or with Python/Ruby/Javascript/what have you, you'd actually be surprised by how better Scala FP is ;-)

As for Haskell, I like the language, but it's super fragmented, everyone has its own Prelude and favorite language extensions, extensions that are sometimes in conflict with other extensions and the tooling is a mess. Also laziness is cool, but performance gets hard to predict. We have the same problem in Scala when we are using lazy abstractions actually, the difference being that Scala is opt-in instead of opt-out.

With Scala, even if you're targeting JS instead of the JVM, you still use the same tools.

And I even like the language better. Scala 3 will fix many annoyances I have, including adding untagged unions and GADTs that are based on ADTs, in other words nicer than Haskell.

PureScript I would like though, as it fixes some of Haskell's problems, maybe one day it won't be limited to JS.

<comment><USER5> > As for Haskell, I like the language, but it's super fragmented, everyone has > its own Prelude and favorite language extensions, extensions that are > sometimes in conflict with other extensions and the tooling is a mess. Also > laziness is cool, but performance gets hard to predict. We have the same > problem in Scala when we are using lazy abstractions actually, the > difference being that Scala is opt-in instead of opt-out.

Not an expert in Haskell, nor Scala - only dabbling. However, the above could be repeated verbatim after replacing Haskell with Scala, couldn't it? You can write Java++, Haskell-- or any combination in between. Use one of the several FP stacks or build tools.

I think both Scala, Haskell and C++ can compete for the name of the most complicated, fragmented and diverse language and ecosystem in existence.

<comment><USER3> I think people are too quick to judge languages.

If I tell you that Haskell has a fragmentation problem, I feel good about telling you that because I actually have experience with it.

However Haskell is still a language that I'd pick over Java, Go, JavaScript or any of the mainstream languages for that matter and I'd be willing to put my reputation on the line for that choice.

I also worked with C++. To see people compare Scala and Haskell with C++, kind of rubs me the wrong way.

And unfortunately such opinions stay on the Internet forever, are picked up by beginners and repeated verbatim.

So no, there's a huge difference between Scala, Haskell and C++. For one the former wouldn't lead to stupid and disastrous bugs like Heartbleed, whereas C++ can and routinely does. By comparison when well typed Scala or Haskell programs compile, the defect rate tends to be really low.

I'm seriously thinking about starting a course in how badly and easily you can fuck up in C/C++, for people that make unfair comparissons with them, making life hard for their managers :-)

Also just to get this out of the way... the problem in Scala are actually the Java refugees going gung-ho on OOP. And the FP people, because they tend to be more experienced, are the ones cleaning up the mess.

And I like that. You know why? Because Scala makes it possible to introduce FP gradually, without an organization wide commitment. In the company I'm working for, a language like Haskell would never fly, but Scala does.

Also in case you haven't noticed, FP is spreading.

\- in Typescript/JS you have fantasy-land and fp-js

\- in Kotlin you have Arrow

The difference is that you don't get the nice type system to support those abstractions well, so you also get the weird HKT and type class encodings to go with it. Although in fairness the Arrow guys are working on compiler plugins for better supporting type classes and the HKT encoding that they use.

So if you're conservative about adopting FP, language choice will not really protect you ;-)

<comment><USER5> Thanks for the answer.

To be clear, I wasn't comparing languages in terms of correctness of code you could potentially produce. Of course C++ is the worst on this metric. However, it has its own niche in low-latency setting where I can't see anything else replacing C++ any time soon.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> This is interesting, and I could even see using it, though I haven't touched Scala in 10 years... but I guess I wonder what the provenance of their GC is? The JVM's has had three decades of tuning and optimization.

EDIT: I see Boehm and their own home grown. And a "none" which I can see being useful if you have short running processes.

<comment><USER7> 0.3 has our own variation of Immix algorithm [1] [2]. On current development snapshots we've also made it parallel and partially concurrent which is expected to bring major speedups over previous single-thread implementation on applications with medium to large-sized heaps [3].

[1] [https://dl.acm.org/citation.cfm?id=1375586](https://dl.acm.org/citation.cfm?id=1375586)

[2] [https://dl.acm.org/citation.cfm?id=2660198](https://dl.acm.org/citation.cfm?id=2660198)

[3] [https://github.com/scala-native/scala- native/pull/1423](https://github.com/scala-native/scala-native/pull/1423)

</comment></comment><comment><USER8> Still no 1.12[1] and 1.13[2] support, and many projects already migrated to it. Upcoming 0.4.0[3] should solve both though. But seems like project suffers from lack of developers.

[1] [https://github.com/scala-native/scala- native/issues/233](https://github.com/scala-native/scala-native/issues/233)

[2] [https://github.com/scala-native/scala- native/issues/1629](https://github.com/scala-native/scala-native/issues/1629)

[3] [https://github.com/scala-native/scala- native/milestone/21](https://github.com/scala-native/scala- native/milestone/21)

<comment><USER7> > But seems like project suffers from lack of developers.

This is indeed the case.

</comment></comment><comment><USER9> uninformed question: is not The Driver for Scala to interact with Apache Spark ? Secondly, it seems from comments here that Scala -> JS is a thing, so that is used for .. ? Third, is it the case that Scala 3 is taking the wind out of Scala 2 improvements, and the dev community is small enough such that, that is visible as 'not much happening' with Scala 2x ?

<comment><USER10> > is not The Driver for Scala to interact with Apache Spark ?

A gateway drug? Perhaps. _A_ driver? Perhaps. _The_ only driver? Nope. For example Scala is used a lot for regular Web servers.

> Secondly, it seems from comments here that Scala -> JS is a thing, so that > is used for .. ?

* For the frontend of Web applications, notably because it allows reuse of code across client and server;

* For CLI applications based on Node.js (better startup time than with the JVM);

* For server apps based on Node.js (for people who like the Node.js ecosystem better than the JVM's, or who have an existing codebase to integrate with);

* For AWS Lambda apps (again, better startup time than the JVM);

* For mobile apps through React Native;

* For embedded applications, in cases where a JavaScript engine is available but no JVM;

* For browser extensions;

* For integration with any other kind of application that provides hooks in JavaScript (e.g., Google Sheets, see [https://email@example.com/make-your-google-spread...](https://firstname.lastname@example.com/make-your-google-spreadsheets-scala-ble-5695d9dd784f))

* etc.

> Third, is it the case that Scala 3 is taking the wind out of Scala 2 > improvements, and the dev community is small enough such that, that is > visible as 'not much happening' with Scala 2x ?

No it is not the case. There are as many core contributors to Scala 2.x now than there were before the Scala 3 effort was launched. And there are many more external contributors, with numbers growing every year.

<comment><USER11> The machine behind Scala.js! Thank you for all you've done.

Out of curiosity, what remaining features/bug fixes are you planning to target for v1?

<comment><USER10> It's all in the issue tracker: [https://github.com/scala-js/scala- js/issues](https://github.com/scala-js/scala-js/issues). Look for issues attached to 1.x milestones.

</comment></comment></comment></comment><comment><USER12> I briefly looked at Scala 9 years ago.

Where does one begin these days? My books are outdated?

Someone mentioned looking at Cats:

[https://typelevel.org/cats/](https://typelevel.org/cats/)

<comment><USER13> Does anyone think the coursera courses are worth it? I signed up and am working through them in my free time.

<comment><USER14> I took Martin's Scala class years ago and it was awesome. He is a great lecturer.</comment></comment></comment>


When a State Balks at a City's Minimum Wage - <AUTHOR> http://www.nytimes.com/2016/02/22/us/alabama-moves-to-halt-pay-law-in-birmingham.html <comment><USER2> What the article misses is that Alabama's constitution is a complete cluster fuck and all kinds of things that one would assume about the legal structure of state and local government simply doesn't obtain.

[https://en.wikipedia.org/wiki/Constitution_of_Alabama](https://en.wikipedia.org/wiki/Constitution_of_Alabama)</comment>


CrossTalk/SRBDS shows possibility of leaking information across CPU cores - <AUTHOR> https://www.vusec.net/projects/crosstalk/ <comment><USER2> Is this exploitable via JavaScript in a web browser? My guess is no.

Basically trying to determine if home users should be worried about this at all.

<comment><USER3> This particular vulnerabilities use x86 specific instructions such as CPUID (which provides information about the CPU version) to extract the content of a shared buffer which contains sensitive data in some cases. This instruction (CPUID) is not accessible through JS within a web browser so there is probably no exploit from a web page.

But this attack is feasible from any native application (without privileges) on the machine.</comment></comment>


Intel's fastest connector to date uses light to transfer data at 1.6Tbps - <AUTHOR> http://www.recaply.com/intels-fastest-connector-to-date-uses-light-to-transfer-data-at-16tbps.html

<comment><USER2> Why does Intel even discuss these things? Can I buy this? Can I go out and buy products that use this standard? Can I buy PCs that use AMD CPUs that use this? What about ARMs? What about Infiniband-like networks?

It makes me angry that a large corporation set out on a Tuesday morning with the sole purpose to waste people's time like this. If it is not going to be on store shelves within the next few months and if it doesn't have broad industry support: NO ONE CARES.

This is why Thunderbolt has been a failure: they talked about it for over two years and the final version is Intel-only, effectively Mac only (very few non- Apple PCs have it, and it seems most of them were bought just to be Hackintoshes), and not nearly as awesome as what they originally described; and AMD, Texas Instruments, VIA, and several other VESA members added a USB3-over-DisplayPort feature called DockPort because Intel refuses to license and standardize Thunderbolt.

You can downvote me if you want, but I imagine at least half of us have been thinking this and someone had to just come out and say it: advertise your product when I can buy it, otherwise it just looks like you're trying to pimp your stock to investors.

<comment><USER3> Intel has a habit of putting out PR that mixes stuff that is available now, stuff that will be shipping this year, and stuff that may or may not be shipping five years from now. The press loves it but it's annoying and confusing to us technical people. (Whatever you do, do not pay any attention to "rack scale architecture".)

When it comes to silicon photonics specifically, Intel has been talking about it for years and still hasn't shipped anything.

<comment><USER2> Yeah what happened to that? It looked interesting and completely vanished off the face of the Earth.

<comment><USER3> Making silicon photonics cheaper than VCSELs must be really hard because it seems like nobody is shipping them. Or maybe silicon photonics are only cost- effective for parallel fiber optics which are a pretty small fraction of the market.

</comment></comment></comment></comment><comment><USER4> First, the headline number comes from 64 25gbps fibers in parallel.

I found more interesting this little bit buried in the bottom quarter of the article…

 _Intel is proposing an Optical PCI-Express (OPCI) protocol for use on optical wires._

I cant find this protocol, or any clarification if it is an open protocol. The article kind of feels like it is protocol intended for widespread adoption.

Cost effective, space effective optical connections would be nice. (No pricing in article. Not terribly encouraging hints.) A clean, open, PCIe protocol for fiber would be huge.

</comment><comment><USER5> I presume that over the next decade(s), Cu may be phased out and replaced by Fibre on a large scale for information transfer purposes.

I do wonder about the effects on our environment though, namely wether making copper (metal) or Fibre cables (plastics) produces more waste, uses more or less energy and which one's easier to recycle, and to what degree.

<comment><USER6> Naïvely, glass is made from sand and copper is mined. And I can already recycle glass from my house, but not copper. So it looks like an environmental win to me. There may be something I'm missing.

<comment><USER7> Copper is pretty trivially recyclable, which is why you get reports of drug addicts stealing copper piping from people's houses to sell on the black market.

<comment><USER8> And bridges!!! [http://www.huffingtonpost.com/2012/04/30/bridge-stolen-in- cz...](http://www.huffingtonpost.com/2012/04/30/bridge-stolen-in-czech- republic-slavkov_n_1465806.html)

</comment></comment></comment></comment><comment><USER9> _The ability to take my memory and stash it a rack away, optical can enable that_

In optical fiber, at a minimum, every 3.3cm is another clock cycle of delay. (2 _10^8 m /s / 3GHz / 2) (speed of propagation in optical fiber / clock rate / round trip factor).

That being said, being able to have _hard drives* in other racks would be great, if nothing else just for vibration concerns.</comment>


Ask HN: Why is Evernote unable to make a good product? - <AUTHOR> I've been using Evernote for many years, and the user experience honestly never felt good. To this day Evernote is still clunky and sluggish, and I can't get used to how the notes and notebooks are organized. The "New note" button feels completely out of space.
Also, at one point not so long ago, the search function just stopped working. I had to go to a secret menu and request re-indexing. I was legit freaking out I had lost my notes.
All these years I've been giving Evernote a second chance, but the product just never improves.
Can anyone give some insight on what's happening inside this company? What kind of legacy code or management burden are they carrying? <comment><USER2> > I've been using Evernote for many years, and the user experience honestly > never felt good.

Sounds like it's time to stop using Evernote. I can't imagine there aren't other, better solutions for you. Unless you're on their board of directors it's not really your question to answer!

I am not really a note-taker in terms of my personality so I can't tell you what those alternatives might be but I am sure there are dozens upon dozens.</comment>


Static to Dynamic and Back Again - <AUTHOR> https://reubano.xyz/blog/static-to-dynamic-and-back-again/ <comment><AUTHOR> I recently redesigned my website using Metalsmith, a static site generator. This post outlines the pros/cons of transitioning from the original Octopress static site, to a single page app (Chaplinjs), and finally back to a static site.</comment>


Ask HN: Did you build it, and they came? - <AUTHOR> What did you build? To what extent? <comment><USER2> I have built a quiz web app that enables people to play a popular Belgian TV format at home with their family and friends and with their own questions. Without any marketing, they came :). I am at 5000 active users and counting. People seem to love playing popular tv-shows at home.

<comment><AUTHOR> Did you take any recommendations from anyone, or do customer dev. prior?

<comment><USER2> I wanted to play the game myself and with my family. So I quickly built a prototype and once I saw my family's enthusiasm I decided to throw it online. Just a lucky guess I think

</comment></comment></comment><comment><USER3> I built this [https://github.com/micro/micro](https://github.com/micro/micro). It's doing pretty well so far.

<comment><AUTHOR> Did you take any recommendations from anyone, or do customer dev. prior? What does 'doing well so far' mean?

<comment><USER3> I built based on past experience and an understanding of industry requirements. Doing well means 10+ companies in production. Recap of 2016 here [https://medium.com/microhq/micro-past-present-and- future-1ab...](https://medium.com/microhq/micro-past-present-and- future-1ab4e492998c)

</comment></comment></comment><comment><USER4> Yes. I wrote a trivial interface which allows parsing DNS records and writing them to Amazon's route53 infrastructure.

I then wrapped that in git, and the end result is that you can write simple text files containing DNS records, run `git push`, and your DNS updates.

I don't have hundreds of users, but I have enough to make the project a success. Even if we ignore the fact that I built it for myself.

</comment><comment><USER5> I've been working on [https://insomnia.rest](https://insomnia.rest) for about two years, and have had steady growth since the beginning. It used to be in the Chrome Web Store, which helped attract users initially.

It's now at around 2500 daily active users.

<comment><USER6> I like your website. Good idea with the screenshots, especially the one on the first screen, immediately got me interested in learning more about your product. I will give it a try and see if it works for me better than Postman.

</comment></comment><comment><USER6> I built a betting platform for a niche esports game and had moderate success with it. Mostly word of mouth, but it was a small dying tight-knit community desperate to attract knew players so it wasn't hard to get everyone interested.

EDIT: Working on a product for a community I was part of was definitely what helped me succeed. I worked on the problem I was familiar with, and I received a lot feedback and support from other people. It also helped me stay motivated. :)</comment>


If Apple *Really* Wants Developers to Love the iPad... - <AUTHOR> http://designbygravity.wordpress.com/2010/02/05/if-apple-really-wants-tinkerers-to-love-the-ipad/

<comment><USER2> I'm sorry, but what Apple _needs_ to do, is make sure they don't spend their time listening to armchair CEOs and linux developers who feel so entitled they decide that what a company which has made more money in the last 10 years than I can imagine _needs_ to do is cowtow to them in order to be successful.

</comment><comment><USER3> this guy is asking them to join the rest of computerdom, which for apple would be the road toward mediocrity. definitely not going to happen.

if you can't find the gumption to get a mac, then you don't want to develop iphone apps very bad anyway.</comment>


My Dumbest Backpacking Mistakes (2018) [video] - <AUTHOR> https://www.youtube.com/watch?v=ZrCNj8wabBQ <comment><USER2> TLDW version:

1) Didn't get familiar with hiking / camping on broken / rough terrain.

2) Didn't plan on how to deal with hypothermia inducing temperatures.

3) Didn't replace shoes quickly enough

4) Not taking black bears seriously enough.

5) Careless / casual with river crossings

She doesn't give great rules of thumb on each point. Here are some based on my experience:

1) Go out with your pack at night and practice moving quickly up and down some stairs. If it rains, even better.

2) Have a layer (usually a wind/rain shell) at the top of your pack. When you stop that layer automatically goes on. When you start walking again that layer goes back in the pack.

3) Replace your shoes when mileage equals 500 - your loaded weight (bodyweight + pack). Do not risk your foot health for a hundred bucks.

4) No RoTs. Bears aren't inherently hostile (usually) but they're not inherently friendly either. Self-education required.

5) No RoTs here, water crossing are dangerous. If you are going to cross you have to have a plan for what happens if you lose your pack or get swept downstream. The force of water can be shocking.

EDIT: If you plan to do any kind of movement over long distance _please_ invest in the book "Fixing Your Feet". Foot problems end more adventures than anything else. Foot care and foot health is the primary predictor IMO of how successful and how non-miserable a movement will be. [https://www.amazon.com/Fixing-Your-Feet-Prevention- Treatment...](https://www.amazon.com/Fixing-Your-Feet-Prevention-Treatments- ebook/dp/B01I8S7U44)

<comment><USER3> > No RoTs here, water crossing are dangerous. If you are going to cross you > have to have a plan for what happens if you lose your pack or get swept > downstream. The force of water can be shocking.

Just as importantly, consider in advance how being wet is going to affect you. Wet clothes are heavy and fail to insulate, while wet feet inside wet shoes is a very bad combination for a number of reasons.

<comment><USER2> Yes! Solid point, and a great example of why there aren't RoTs for rivers. It can be a really complex problem. You can't go barefoot. Do you have camp shoes, will they work for the crossing? If you use your main shoes did you make a bad choice (my opinion) and pick Goretex? Do you have dry socks for the other side? Will the environment even allow drying? Is your pack waterproof? Will it float? If you used a contractor bag does it have holes, because if you've been in for more than a few day guess what, it does! In the shitty trail mishap lottery nothing is worse than soaked sleeping bag. And what do you wear during the crossing? If you won't strip to your skivvies what's your drying plan?

Bridges are really great, is my point.

</comment></comment></comment><comment><USER4> My mistakes are usually that I forgot gloves|hat|crampons|lunch|drink|<vital thing>

I now have a checklist that I carefully check against and actually tick stuff off with a pen (usually do this about 5:30 so needs to be easy to do!).

Edit: I also _completely_ panicked once after a large noisy animal blundered into my tent in the middle of the night - was convinced it was a bear. Of course, there haven't been bears here in Scotland for a long time.... (I realised this in the morning when sanity returned - it was a red deer).

</comment><comment><USER5> The Hunt for the Death Valley Germans [1] is full of interesting information about hiking in dangerous terrain

[1] [http://www.otherhand.org/home-page/search-and-rescue/the- hun...](http://www.otherhand.org/home-page/search-and-rescue/the-hunt-for-the- death-valley-germans/)

<comment><USER6> Oh man! I love this guy's site! Tom has some amazing stories on there. The one you linked is one of my favorites as is the one about the missing hiker in Joshua Tree.

It's really fun to have Google Earth open while reading the stories so you can find the places he is writing about.

</comment></comment><comment><USER7> My dumbest backpacking mistake was on day 2 of my interrail [1] trip across Europe and North Africa. Exhausted I fell asleep on a Marseille beach in the afternoon without any suncream on.

When I woke up my shoulders was very sunburned. Spent the first week or two of the 6 weeks long trip lifting my heavy backpack off my painful shoulders.

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

<comment><USER7> 2nd mistake was packing too much stuff. Fixed a week into my trip in a Post office in San Sebastian by stuffing 2/3 of my backpack into a cardboard parcel and posting it home.

<comment><USER8> My packing rule, slightly tongue in cheek, but not really:

Pack light and then throw out half.

Seriously, I just came back from 3 1/2 weeks in Asia with a backpack with a weight of 11KGs (15, when I returned). I was never short on anything.

This may be slightly different when you have a weighty hobby (scuba diving, or so), kids or go to colder places. But in general my experience is that most people pack far too much.

<comment><USER9> It's surprising how little you actually need, and as you point out, how little more you need for a 3 week trip than you do for an overnight trip. I don't backpack much but my bikepacking checklist is pretty much the same regardless of the length of the trip. The main (and heavy) variable is the amount of water to bring, and that's more dependent on weather and available water sources than on length of the trip.

</comment></comment></comment></comment><comment><USER10> My dumbest backpacking mistake was that time I was walking over a footbridge and I decided for fun to use my arms to lift myself on the guardrails forgetting my center of gravity was behind me with my pack on. It wasn't long before I was flat on my back staring at the sky.

Is there a TLDW for this video?

</comment><comment><USER11> I made a tent out of those plastic "SOL" emergency blankets that heats up inside via solar or a small campfire. You can dry out clothes pretty fast with it.

I know you can't have campfires out west, but I live in the Ozarks where forest fires are not an issue most of the time and it's easy to check the fire risk at [https://www.spc.noaa.gov/products/fire_wx/fwdy1.html](https://www.spc.noaa.gov/products/fire_wx/fwdy1.html)

So, the reason I bring this up is it's pretty easy to fashion a UL clothes dryer if you carry one of those blankets, a bit of clear plastic, and some tape.

Here's a link to a very short video of the tent: [https://www.youtube.com/watch?v=FdekfNtx65c](https://www.youtube.com/watch?v=FdekfNtx65c)

</comment><comment><USER12> Couple things off the top of my head from experience:

* Running out of food is lame

* Carrying way more food than you really needed is lame

* Forgetting means to light a stove is really lame

* Little critters will chew through whatever to get to your food, so keep it outside your tent (hang it high off a tree)

* (Mountaineering) Exposed skin will be scorched by sun reflected off the snow

* Separate your "keep me dry" layer from your "keep me warm" layer, don't go cheap

* You need to drink more water than you think you do

* Unless you have guaranteed means/opportunity to dry yourself/clothing, avoid getting wet (avoid cotton, jeans)

* Everyone should know the route, if there's a fork or ambiguity in the trail, everyone needs to be together

* Have a backup means of filtering/purifying water

* Always tell someone where you're going and when they should expect you back

* Check the weather and recent trip reports

</comment><comment><USER13> Any (former) Philmont Rangers here?

I'd be interested in hearing about the dumb things you've seen crews do.

</comment><comment><USER14> Any recommendations for how to start backpacking? Books, stores, guides, etc.

<comment><USER11> Go to [https://backpacking.net](https://backpacking.net) and check out their "Tips" page and other content and I highly recommend you go to [https://backpacking.net/bbs.html](https://backpacking.net/bbs.html) and sign up for their forums.

That site has a lot of top notch info and the forum members collective experience is a great resource for those looking to get started and those who've been backpacking for years.

Go there before you start buying gear and you'll save a ton of money and have better gear. And you'll be lugging a lot less weight.</comment></comment>


Developer access, protect apps in development from public view - <AUTHOR> https://github.com/alexgoretoy/developer_access

<comment><USER2> Thanks for this! Nice to see some more PHP utilities, especially for those of us still stuck supporting/developing in it due to company policies or hosting environment restrictions. I forget how spoiled I am with Python/Ruby OSS contributions when I drop back down to PHP for something.

<comment><AUTHOR> Your welcome) and Thank you) I have a developer access in python planned as well, but thats for way later in the future.

</comment></comment><comment><AUTHOR> I built this because I needed a way to lock down who has access to my startup projects. Then I decided to release it because I figured others would probably benefit from being able to do the same. Enjoy and please contribute any feedback or bug fixed.

</comment><comment><USER3> I'm not clear on how this adds anything that you wouldn't get in the web server layer (e.g. mod_access) or by using a firewall.

<comment><AUTHOR> This just adds another layer of security on top of your application. Sure you can use mod_access instead or alongside this system.

Some developers on shared hosting servers don't have the option to change apache/httpd server settings.

This is just a tool for those who find it useful in there situation. I personally wrote it because I needed another layer of security.

</comment></comment><comment><AUTHOR> This project's example is viewable at <http://developer-access.com></comment>


Amiga Music Tracker in JavaScript - <AUTHOR> https://www.stef.be/bassoontracker/ <comment><USER6> GitHub link: [https://github.com/steffest/bassoontracker](https://github.com/steffest/bassoontracker)

Everything about this makes me giddy with excitement, from the cursor to the faded out numbers in the digital display. I "miss" these times, yet I was born too late to enjoy it in real time. I hope the demoscene lives on forever and we keep seeing it pop up in future tech.

<comment><AUTHOR> When I opened it I swear I got teary eyed. Things were so much harder that when you finally got something decent it just made you feel like you were king of the nerd hill.

<comment><USER7> _> Things were so much harder that when you finally got something decent it just made you feel like you were king of the nerd hill._

I first started making music using a tracker (PlayerPRO on the Mac) before later moving to Pro Tools and Reason, and I actually found it much easier to finish songs using a tracker. The quality wasn't as good, but the limitations and structure helped me get a song done. With Reason, I find myself just twiddling knobs for hours and at the end of the day all I have is a few bars of something.

<comment><USER8> Though I agree about the structure (and keyboard shortcuts) being helpful, derping around endless is still how I use trackers.. and after hating it for a long time, I actually now love it to not ever consider anything "finished", and trackers are perfect for that.

Instead of a mess of giant files of things bounced from various programs or even hardware, it's just a file... and though with Renoise the VST matter a lot, since I still have those I still can load up and work on things I made over a decade ago. I can try to touch it up some, or steal parts I like to make something new, with filesizes ranging from a few hundred kilobytes to a few dozen megabytes at most. That's my bliss. I know the listener doesn't and shouldn't care about that, but it's a trade-off I make gladly. I think my music became much simpler, too, maybe "worse", but more fun for me, because instead of layering instruments that play the same melody in another octave and a lot of effects, I now remove things with equal glee as I add them with. The less I use to achieve something I can shake my butt to, the more I like it... having a rich sound is nice, but seeing all columns on one screen is _awesome_ , as is rendering a 5 minute song in 20 seconds instead of 3 minutes. I like the agility of this one-person studio that starts up in like 1 second too much, and even if I had the ability to master well, I wouldn't want to render tracks from Renoise to then master them in another program. Other than denoising samples, I do it all in Renoise. Considering what other people are doing with it and the legacy of tracking in general, I don't feel like a king of the nerd hill though, but I do feel like the captain of my bathtub.

I recommend it to everybody, and I recommend sticking through years of feeling completely useless at it. It's what I did, and I think if you like music enough to enjoy it, and if you are making it to entertain yourself, practice might not make you perfect, but it will gift you some things you wouldn't have thought you have in you. As far as hobbies go, this is like owning a dog, it does everybody good (should they have any affinity for it at all, that is). I say that because a friend of mine thinks making music is somehow translating the music we can compose in our heads into reality, and at least for me, that's not the case. I can sing in the shower, or "think music", but when I sit down with a tracker, I'm still surprised by the results, like, I didn't come up with this, I just found it. I think the key is to not be shy... if in doubt, just don't show it to anyone (yet), but do make music regardless. It's one of the most wonderful things you can do with a computer, IMO.

<comment><USER7> _> derping around endless is still how I use trackers.. and after hating it for a long time, I actually now love it to not ever consider anything "finished", and trackers are perfect for that._

I've definitely had many satisfying evenings twiddling knobs in Reason, but after a while it loses its fun for me if I don't feel I'm eventually getting to something worth sharing with others.

 _> I say that because a friend of mine thinks making music is somehow translating the music we can compose in our heads into reality, and at least for me, that's not the case. I can sing in the shower, or "think music", but when I sit down with a tracker, I'm still surprised by the results, like, I didn't come up with this, I just found it._

Yes, I absolutely agree that the instrument affects the music in profound ways. Music is such a physical act that what you'd compose with a keyboard (piano or typewriter) is different than what you'd compose with a guitar in your hands instead.

I love everything about your comment.

<comment><USER8> One thing that really helped me is to realize that many of my favorite songs are probably not that special to most people. This is, no joke, still one of my favorite little ditties:

[https://www.youtube.com/watch?v=3Io5l0YgNko&t=34m20s](https://www.youtube.com/watch?v=3Io5l0YgNko&t=34m20s)

I actually sometimes still listen and maybe even dance to the Amiga version of this ^^ And I'm not saying this isn't a great song, musically, but most people wouldn't want to hear this on the radio or in a club, while I would absolutely go apeshit if that ever happened. I know having heard it first as a kid is a part of it, but the end result matters. I love this tune, even though most normal people might not enjoy it, and would at least prefer "normal instruments". (And don't even get me started on L.F.F. by 4mat :D)

So I try to shift my standard from "is this really good, does this make me look awesome", to "is this _too_ embarrassing, or really just a pointless amusical waste of time", and try to raise the bar for what embarrasses me... because even something I might not like _that_ much, might be the jam for someone else, who knows. What would I tell that imaginary person, that they never got to hear their jam, because I was afraid of what other people might think of it? I also know songs where I like the demo or some dirty live version much more than the perfectly produced studio version, so I try to tell myself, the more the merrier.

I think what really helped in my case is that it all became coupled with lyrics that are either very personal or very political, and it took me so much.. wrestling, not being able to sleep well doing it, but also not being able to let it go for good... and also the world (and rap music) becoming a lot more crazy, and probably me getting older, to become less inhibited -- and being embarrassed about too simple music was completely overshadowed by that. It used to be a concern but it got lost along the trek :) And I also discovered that as far as "beats" go, less really is more, at least, very little is more than enough. The same goes for chip style melodies, and those two are all I need to be happy musically, basically forever.

Well, that and compos with small sample packs becoming more of a thing again. Nothing more fun than that IMO :)

</comment></comment></comment></comment></comment></comment><comment><USER9> Oh man, this is amazing. I'm teary-eyed with nostalgia, too.

For anyone who is unfamiliar with the demoscene and tracker music, here are some recommended old-school tunes to spin up to get a feel for the art at the time. (Someone more in touch than me will have to lead you to the new school!) Just keep in mind the technological limitations on some of these songs: 4 channels, maybe 100k all-in for such wonderful music. Truly amazing.

My recommendations, running from 1986-1993ish: Karsten Obarski - <USER2> Hammer Firefox - Galaxy 2 Uncle Tom - Poseidon Jester - Elysium Captain - Space Debris Tip + Firefox - Enigma Mantronix - Act Of Impulse 4-mat - <USER3> Sector Theme Romeo Knight - Cream Of The Earth Greg - Odyssey Part 2 Jugi - Onward Ride Laxity - Desert Dream

I'm sure others can add more. What amazing times!

<comment><USER10> Karsten Koch - The Blue Valley (darn, S3M can't be played on Bassoon) [https://modarchive.org/module.php?37685](https://modarchive.org/module.php?37685)

Skaven - Catch that Goblin!! [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=34654)

Skaven - 2nd Reality (from the absolute classic demo) [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=60400)

Uplink, the hacking video game, actually used a bunch of classic tracks as its OST: [https://youtu.be/8Esv7RPM--c](https://youtu.be/8Esv7RPM--c)

<comment><USER11> Catch that Goblin was amazing, when it started playing at the partyplace, everyone sort of stopped not paying attention to the compo, and turned their heads with a "wtf" face. IIRC some of the samples got Skaven in trouble with Disney.

</comment></comment></comment><comment><USER12> Since it plays modules made for the Amiga, linking this is mandatory:

[https://bel.fi/alankila/modguide/interpolate.txt](https://bel.fi/alankila/modguide/interpolate.txt)

<comment><USER13> This bit made me go "wat" out loud.

> Additionally, it is possible to engage a low-pass 12 dB/oct Butterworth > filter tuned at approximately 3.2 kHz by turning the Amiga power LED > brighter with a special protracker command.

<comment><USER14> This didn't happen on the earliest Amigas. It just changed the power LED brightness.

I had one game (Psygnosis "Baal", otherwise fairly unmemorable) that flickered the LED with the beat of the title track just because it looked cool. It sounded _awful_ on anything besides an A1000.

</comment></comment></comment><comment><USER15> I graduated from Amiga trackers to a full fledged studio, with hardware mixers, synths, effect racks etc. And then, years later, back again to just a computer. Full circle.

<comment><USER16> I messed around with the Amiga trackers back in the day. When I look at the software available today, e.g. on my iPad, I have a hard time getting anything useful out of it. Which software are you using now?

<comment><USER17> SunVox is a fantastic modern tracker that runs on pretty much anything.

<comment><USER18> True, but SunVox is so much more than just a tracker. In my experience with (PC) trackers they rely mostly on modifying pre-recorded samples. SV on the other hand allows you to chain together a crazy array of synth modules to produce sounds "from scratch".

<comment><USER8> Well there's Renoise, there's Jeskola's Buzz (the changelog starts at 2008 but I'm sure I used it well before that), Noise Trekker had a synth as early as 1999. Adlib Tracker? You're still right in that for the most part, for a long time, tracking on the PC meant FastTracker or ScreamTracker, and those just used samples. But we've come a long way since then in the early 2000s.

<comment><USER19> Buzz was around in 1999 (I think - I first used it in 2000/2001) but circa 2001 the coder had a hard disk crash and lost his code, and finally resumed work on it in 2008 from a much older codebase or possibly from scratch. I assume that's part of why the changelog starts in 2008.

I miss the 1998-era softsynth with built-in tracker Analogic, later called AXS (or was it the other way round?). [http://www.pouet.net/topic.php?which=11012&page=1](http://www.pouet.net/topic.php?which=11012&page=1)

</comment></comment></comment></comment></comment></comment><comment><USER20> Superb! The second song, Stardust, was in the demo "World of Commodore 1992" (EDITED). Excellent track.

[https://www.stef.be/bassoontracker/?file=demomods%2FStardust...](https://www.stef.be/bassoontracker/?file=demomods%2FStardustMemories.mod)

<comment><USER6> Sanity - World of Commodore 92

[https://www.youtube.com/watch?v=u43uH- kQpzk](https://www.youtube.com/watch?v=u43uH-kQpzk)

<comment><USER20> Thanks! One of my favorite demos from Sanity remains Arte:

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

<comment><USER21> Great demo.

Not as good as the best ever though :-)

"Kefrens: The meaning of life is to become a legend"

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

</comment></comment></comment></comment><comment><USER22> Omg. Man, [https://www.stef.be/bassoontracker/?file=demomods%2Fspacedeb...](https://www.stef.be/bassoontracker/?file=demomods%2Fspacedeb.mod) really brought back memories.

</comment><comment><USER23> Modarchive and modules.pl API support under Files -> Load is brilliant.

<comment><USER10> Weird, I can't find Skaven on their integration of either modarchive.org or modules.pl

<comment><USER24> I think because all his modules are .it and .s3m, so they are excluded. This tracker can only play .mod and .xm

</comment></comment></comment><comment><USER25> Writing a .mod player is a fun recreational programming project. I kind of want to get an Amiga so I can hear the sound of the Paula chip doing resampling by changing the audio clock rate instead of my PC doing digital resampling to 48kHz.

</comment><comment><USER26> Load the "Lotus 2" music, and disable channels 1, 2, and 4, to hear their attempt at subliminal messaging in the first few seconds of the song.

<comment><USER27> "You will not copy this game!"

</comment></comment><comment><USER28> Amazing project, thankyou :)

Notable artists who started their careers on trackers: aphex twin, machinedrum, axwell, darude, deadmau5 +many more

</comment><comment><USER29> I've been trying to get into trackers for sequencing for a while, but the learning curve is very steep. Has anyone got resources to learn how to sequence one of these beasts with a keyboard? They seem to be the key to making lots and lots of intricate breakbeats.

<comment><USER30> With "keyboard" you mean, a musicians keyboard, right? I assume you need a midi interface to the software but I don't know of any tracker that supports midi.

My personal favourite tracker is Fast Tracker II, but it also don't support midi. However, it has some really good documentation that might help you get into working with trackers:

[https://milkytracker.titandemo.org/docs/FT2.pdf](https://milkytracker.titandemo.org/docs/FT2.pdf)

<comment><USER29> Actually my understanding is that you can use a computer keyboard to very rapidly enter lots of notes quickly and precisely without relying on your own human limitations as you would with a musical keyboard. I've seen it billed as sort of like Vi for music.

<comment><USER30> Yes, I'm pretty sure you can set FT2 in a record mode and then "play" notes on your computer keyboard, but I don't think that's what OP is asking.

How I understand OP's question is; you make a drum pattern in FT2 which you can trigger to play by pressing a key on a musical keyboard. I think the context of OP's question is for during a live/real-time performance.

</comment></comment></comment></comment><comment><USER31> Not only has the author collected a great library of classic mod files to play back, they compiled a fantastic starter library of mod samples for composing new work. These have such a delightfully retro sound to them, I'd love to use them in other software as well, such as the sampler in my primary DAW – anyone know how to extract a WAV file from these vintage Amiga DMS archives?

</comment><comment><USER32> Cute! Sadly it doesn't handle my .it or .s3m files.

</comment><comment><USER33> I'd been using [https://github.com/defrac/defrac- sample-8bitboy](https://github.com/defrac/defrac-sample-8bitboy) 8bitboy for a while, but alas it seems that most things block it from playing music these days.

</comment><comment><USER34> Thanks for the trip back in time to Octamed and a £20 sampler. This is one of the best tunes produced on an Amiga IMHO: [https://www.youtube.com/watch?v=L36m5sobhOE](https://www.youtube.com/watch?v=L36m5sobhOE)

</comment><comment><USER35> This takes me back!

But it feels kinda wrong to have that mouse cursor and have it not move perfectly smooth.

<comment><USER30> > But it feels kinda wrong to have that mouse cursor and have it not move > perfectly smooth.

So you get the full immersive experience. :)

<comment><USER36> The "immersive experience" would have that cursor move at a solid 60FPS and negligible latency. Amiga had hardware sprites, and even software-managed sprites had comparable performance.

<comment><USER35> You also need a CRT or at least some sort of strobing refresh display to eliminate smearing from persistence of vision.

</comment></comment></comment></comment><comment><USER37> Just for information, it just crashed on the Space Debris song for me (FF on linux), had to close my browser for the sample to stop looping.

Retried on chromium, no problem, and it's cool !

Bringing back memory from when I was a student :-)

I'm going to open an issue if it can help

</comment><comment><USER38> I love this. Like many people here, I mucked around with modules on the Amiga using OctoMED. I could never match the great songs that came with the games and demo of the time but I had a lot of fun.

</comment><comment><USER10> Well this brings me back a few decades. Funny how music does that.

</comment><comment><USER39> This brings back memories. For the life of me though, I cannot remember what the music format was that I could use to play background music in turbo pascal. Happy days.

</comment><comment><USER40> This is great.

I remember listening to Axel F, and attempting to make my own mods, but basically just changed the instrument samples.

<comment><USER41> This video is for you then:

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

Not the author - just wanted to add to your nostalgia kick.

<comment><USER42> Good grief, he did that with just 4 tracks! Sounds exactly like I remember it too. Thanks for sharing.

</comment></comment></comment><comment><USER43> This is really good. It takes me back to my Amiga days ! BTW: VLC can also play MOD files.

</comment><comment><USER44> Just amazing and brings back a lot of memories. Now I just need to find the music I did

</comment><comment><USER45> It works incredibly well even on my Android cellphone... I am surprised.

</comment><comment><USER46> OMG, the memories.... .mod files, right? I used to have thousands

</comment><comment><USER47> This is fantastic. I love the demo tunes. Runs pretty smooth too.

</comment><comment><USER48> very cool, and all in vanilla ES5, impressive.

<comment><USER49> Quite true, in spite of favouring native over Web when given the option, it is demos like this that show how much we have evolved and make me reassess the current state.

</comment></comment><comment><USER50> Wow. Respect. Amiga represent !!

</comment><comment><USER24> I am really impressed by the responsive layout -- the UI adapts to different window sizes! Nice touch :)

Some favorite modules to check out. First link is link to modarchive site, second link is direct link to Bassoon Tracker with the module pre-populated so you can listen instantly! So handy!

Matrix Cubed - <USER4> [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=145090) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D145090)

DeusEX - <USER5> [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=143186) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D143186)

Sybaris - Welcome to the Gods [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=151392) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D151392)

Mindwalker - Evoke '98 [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=169456) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D169456)

xerxes - hesse's sovesang [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=62901) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D62901)

"me and kenet" (unsure of artist) - Beautiful or not? [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=139336) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D139336)

drax - repeating patterns [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=67478) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D67478)

Tim Wright - Agony (intro) original version [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=126853) | [https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.m...](https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D126853)

Unfortunate some mega favorites like Skaven's "The Alchemist"[0] and Vincenzo's remix of 2nd Reality[1] are Impulse Tracker modules and won't play in Bassoon Tracker. Maybe .it support will be added? :)

[0] [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=48557) [1] [https://modarchive.org/index.php?request=view_by_moduleid&qu...](https://modarchive.org/index.php?request=view_by_moduleid&query=49947)

</comment><comment><USER51> this thing is gorgeous.

</comment><comment> starlig-ht holy f. well done</comment>


How to pair socks from a pile efficiently (2013) - <AUTHOR> https://stackoverflow.com/q/14415881/1376127 <comment><USER2> He is talking about algorithmic efficiency using big-O notation but then limits N to 30. So, dumb question. Also, who the hell has 30 distinct pairs of socks?</comment>


Ask HN: What are the Linux Tools/Scripts you don't want to live without anymore? - <AUTHOR>

Everybody has some piece of software/code on his *nix system that is either cool/ a quality of life improvement/ or just really usefull. I'd like to see some of your favorites. <comment><USER2> `up`, a small Bash function I once wrote. It allows you to walk up the directory tree by passing it a path or the number of levels you would like to walk up.

Has served me well in Java in projects with deep directory trees (due to deep package hierarchies).

[https://github.com/helpermethod/up](https://github.com/helpermethod/up)

</comment><comment><USER3> Picked up very recently: [https://github.com/peco/peco](https://github.com/peco/peco)

Git alias for keeping branches up-to-date: [https://gist.github.com/ricardobeat/9600953](https://gist.github.com/ricardobeat/9600953)

</comment><comment><USER4> Although not specifically Linux:

screen, ack, ssh-agent, git.

</comment><comment><USER5> i have an alias for pwd | pbcopy which basically copies my current directory into clipboard.</comment>


Windows Live Outsources Blogging, Migrating 30 Million Users To WordPress.com - <AUTHOR> http://techcrunch.com/2010/09/27/windows-live-blogging/ <comment><USER2> Windows Live running its blogs off Wordpress, on Linux with MySQL?

It doesn't get any better than this. Chairs will fly.

<comment><USER3> No, that's not what's happening. Microsoft is migrating these users to Wordpress.com, an existing hosted blogging service. They're getting accounts there and their blog posts are being imported. Microsoft isn't running Wordpress.org software.

<comment><USER4> still, I will say that it is a victory for open source community!

<comment><USER5> Microsoft has been doing this for some time. Outsourcing and linking to services that people are using. Windows Live is integrated into a LOT of services. It's actually pretty nice. They plug into these systems that already exist, and leverage them for their own customers.

It's really smart.

<comment><USER2> I agree it's smart.

But that doesn't change the fact this platform is, from top to bottom, everything Microsoft has been criticizing and sabotaging for the past decade: GPL, Linux, MySQL...

It's like Google deciding to do search through Bing...</comment></comment></comment></comment></comment>


Show HN: use Excel to read Shared Open Database - <AUTHOR> https://github.com/melancholiaforever/CQL_Excel <comment><USER2> Crawlers and anti-crawler wasted too much resource, data shared in open database is a great idea. BTW, if someone can maintain all data listed here, that will be really helpful. [https://github.com/awesomedata/awesome-public- datasets](https://github.com/awesomedata/awesome-public-datasets)

</comment><comment><USER3> Great dataset covering government, economics. Hope that more open data can be added to this database for research.</comment>


Linksys routers will soon monitor your breathing as well as movement - <AUTHOR> https://www.theverge.com/2020/1/8/21056418/linksys-wellness-pods-aware-health-date <comment><USER2> Might have been more surprising had we not had the mass adoption of smart home speakers like alexa, siri and google assistant</comment>


Imperative Functional Programming (1996) [pdf]  - <AUTHOR> http://www.cs.bham.ac.uk/~udr/papers/imperative-functional.pdf <comment><USER2> In the same vein, [http://blog.jle.im/entry/first-class- statements](http://blog.jle.im/entry/first-class-statements)

</comment><comment><USER3> Looking at Rust, Swift, Scala, even JavaScript ES6, I think that Imperative and Functional styles are doing pretty well together.

<comment><USER4> I can only speak for Scala: it's doing "pretty well", but in some aspects it's not doing as well as it could, were it a purely functional language.

Scala has a lot going for it, not the least its interoperability with Java. But being a hybrid language is not zero-cost: its type inference for example is less powerful than Haskell's (it can infer fewer things; I've read this is because inheritance complicates things), and to me its type signatures are harder to read. Also, because pretty much every Scala function has "purity escape hatches" built-in, you can never be sure what does or doesn't have side-effects. And this is unrelated to purity, but Scala's null makes me sad.

<comment><USER5> The weakness of type inference arises, as you note, due to subtype polymorphism. You can't escape from this when you've got class-based OO, it seems.

</comment></comment></comment><comment><USER6> [1996]

</comment><comment><USER7> This is awesome and flies in the face of many arguments that functional and imperative programming languages need to be kept "pure" and mutually exclusive.

<comment><USER8> It'd be great if there was an interface that could be used to abstractly express the idea of computations that could possibly dependent on "previous" computations, thereby enabling you to write sequential instructions.

        (>>=) :: Monad m => forall a b. m a -> (a -> m b) -> m b

        Prelude> getLine >>= putStrLn
        blah
        blah

        Prelude> do a <- [1, 2]; b <- [4, 5]; if (even a) then (return b) else (return a)
        [1,1,4,5]

        Prelude> do a <- Just 1; b <- Just 1; if (even a) then (return b) else (return a)
        Just 1

        Prelude> do a <- Just 4; b <- Just 2; if (even a) then (return b) else (return a)
        Just 2

        Prelude> do a <- Nothing; b <- Just 2; if (even a) then (return b) else (return a)
        Nothing
        -- depending on a computation that may not have succeeded

Then you could distinguish pure and impure code just from the types by assigning a type wherever effects need to be performed to get our effecty value.

        Prelude> :t getLine
        getLine :: IO String

        Prelude> :t putStrLn
        putStrLn :: String -> IO ()

        Prelude> :t (>>=)
        (>>=) :: Monad m => m a -> (a -> m b) -> m b

        Prelude> :t (>>=) getLine
        (>>=) getLine :: (String -> IO b) -> IO b

        Prelude> :t (>>=) getLine putStrLn
        (>>=) getLine putStrLn :: IO ()

Then we could make a syntax to wrap it all up and let you write code as if it was actually sequential, imperative instructions.

        main = do
          putStrLn "Enter your name please: "
          name <- getLine
          putStrLn ("Hello, " ++ name)

Maybe we could make a programming language around this, maybe name it after a mathematician that contributed to the development of lambda calculus.

<comment><USER9> It would be great if this hypothetical mechanism didn't have any interpretive overhead too, for the cases when we need to use it for imperative code for efficiency reasons.

<comment><USER10> There doesn't _need_ to be an overhead to this extra type disciplining of side-effectful computing. It is perfectly possible for the compiler to take the pure monadic code and implement it with actual side effects (which I believe GHC does do).

What I _do_ miss though (dearly) is that there is a certain cost as to what can be encapsulated. For instance, in Haskell, it is no longer so easy to hide side effects behind a pure interface.

<comment><USER8> >For instance, in Haskell, it is no longer so easy to hide side effects behind a pure interface.

This is not true. There are a number of ways to do this in Haskell.

Also this is tantamount to, "my programming language won't let me lie", and is often associated with an infacility with Haskell. I mean no offense, just speaking from experience.

You don't need to hide effects behind a pure interface once you're comfortable with the abstractions provided.

Edit: tel's comment is quite good as-is, but I'd like to add that part of what makes ST nice isn't just having an eliminator, but also so you have a more precise delineation of what "effects" could happen. IO is kind of a big type. Still very valuable.

<comment><USER10> So the example I have in mind is that of a Randomised Binary Search Tree (or Treap, if you want). Its interface is pure, however it requires access to an RNG for insertions. Because of this, it cannot be treated as a pure collection: you need to tell the type system, hang on, this RBST carts around some state which changes when you insert to it, despite the fact that the state doesn't change the extensional behaviour of the structure. This is a provable property, but maybe not provable by Haskell's type system.

Now I know that you can hide unsafePerformIO in the interface, and in this case I expect it is fine, but this is not easy, it feels like a hack.

Another example that I have personally watched play itself out in disbelief was in a fairly large Haskell project: There was need of a lookup table, with some 10000 elements. In such cases, I would have stored the lookup in a database, or a separate file at least, but because they wanted to maintain purity so badly, the solution was to write a 10000 line long Haskell file. But wouldn't it be nice if you could load a file and tell Haskell: don't worry, this won't change, so treat reads to this purely.

I never said such things were impossible, merely not easy, and I don't believe this is by accident. I am almost certain that such things are made difficult to prevent abusing such features, but that doesn't stop me from missing them :) .</comment></comment></comment></comment></comment></comment>


Peter Thiel's Dinners Are the Hottest Ticket in LA - <AUTHOR> https://www.vanityfair.com/news/2019/10/peter-thiel-dinners-are-the-hottest-ticket-in-la-whats-his-endgame <comment><USER2> I feel like Thiel has better things to think about than Trump 24/7\. I think the most contrarian thing you could do right now is not getting drawn into the Trump media cycle.</comment>


How to Generate a PDF Using Node, React Components, and Headless Chrome - <AUTHOR> https://www.pdftron.com/blog/react/react-to-pdf/ <comment><AUTHOR> Here's a direct link to the web-to-pdf GitHub project: [https://github.com/PDFTron/web-to-pdf](https://github.com/PDFTron/web-to-pdf)</comment>


Lambda Twist: An Accurate Fast Robust-Perspective Three-Point Solver [pdf] - <AUTHOR> http://openaccess.thecvf.com/content_ECCV_2018/papers/Mikael_Persson_Lambda_Twist_An_ECCV_2018_paper.pdf <comment><USER2> Mobile Friendly View: [http://pdf.cab/http://openaccess.thecvf.com/content_ECCV_201...](http://pdf.cab/http://openaccess.thecvf.com/content_ECCV_2018/papers/Mikael_Persson_Lambda_Twist_An_ECCV_2018_paper.pdf)

</comment><comment><USER3> P3p -> perspective 3 point. Figuring out camera perspectives from a sample of projected samples. In this case 3 dim, i.e. traditional camera pose from depth data. Kinda practical.

<comment><AUTHOR> Last night I tracked down a copy to one of the seminal papers:

The Perspective View of Three Points – Wolfe (1991) [pdf] [https://news.ycombinator.com/item?id=20026626](https://news.ycombinator.com/item?id=20026626)</comment></comment>


Unroll.me - <AUTHOR> https://daringfireball.net/linked/2017/04/23/heartbreaking <comment><USER2> Active discussion:

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

</comment><comment><USER3> This may sound silly, but I consider any application that requests full read access to my Gmail account to be akin to asking for my social security number.

I remember when the big wave of smart email apps first came out a few years ago, and the horror was the expressed here when it was revealed that these apps basically route all of your email through their servers in order to do processing on it.

Sadly at lot of the trepidation about services like that seems to have abated -- or maybe the general population just isn't aware of how intrusive these types of services could be. But I would never allow any third party service to access my email.

<comment><USER4> "This may sound silly, but I consider any application that requests full read access to my Gmail account to be akin to asking for my social security number."

Have you ever emailed your social security number, had your social security number emailed to you, or signed up for any sort of service to your gmail account including your paycheck management company, your tax returns, your bank, or anything else that via email password reset could be used to access your social security number?

Certainly I'd go so far as to say that almost anybody's "real" gmail account could certainly be leveraged to get the last four digits of your social security number. Given the low entropy of the other 5 numbers given other details [1], even if you can say with a straight face that your email has _never_ had your very, very regex-able social security number in it, it's still got _most_ of the bits, most likely. Perhaps not enough to automatically target you without a bit more machine learning than I think we quite have at the moment, but... getting perilously close, honestly. Someone who really dedicated themselves to taking "gmail inboxes" and writing a system to determine social security numbers from that could probably do pretty well. It wouldn't quite be just "fire some machine learning at it", but the system as a whole seems pretty feasible to me.

[1]: [http://www.stevemorse.org/ssn/ssn.html](http://www.stevemorse.org/ssn/ssn.html) . It isn't _quite_ as bad as it seems for many of us, because we didn't all used to get SS numbers at birth, so my SS number does not correspond to my birth. But if you have my last 4 numbers and a handful of other bits of information about where I've lived, it's distressingly few bits between me and my identity getting stolen.

<comment><USER3> Oh, I would not be surprised if my SSN is floating somewhere out there because of something like this. So that's a good point. I was more making the comparison because I was looking for an analogy to something most people at least try to guard heavily.

</comment></comment></comment><comment><USER5> I looked on their website, Frequently Asked Questions, and even hovered over text like "Unroll.me is a free service" in order to find a disclosure.

I could not find ANY disclosures whatsoever.

Nowhere does Unroll.me disclose that they sell your emails to the highest bidder.

I wish we had a FTC that could bankrupt Unroll.me's previous and current founders and executives. Absolutely despicable behaviour.

<comment><USER6> Terms of Service pointed me to their Privacy Policy.

Privacy Policy indicated the following:

> We also collect non-personal information − data in a form that does not > permit direct association with any specific individual. We may collect, use, > transfer, sell, and disclose non-personal information for any purpose. For > example, when you use our services, we may collect data from and about the > "commercial electronic mail messages" and "transactional or relationship > messages" (as such terms are defined in the CAN-SPAM Act (15 U.S.C. 7702 et. > seq.) that are sent to your email accounts. We collect such commercial > transactional messages so that we can better understand the behavior of the > senders of such messages, and better understand our customer behavior and > improve our products, services, and advertising. We may disclose, > distribute, transfer, and sell such messages and the data that we collect > from or in connection with such messages; provided, however, if we do > disclose such messages or data, all personal information contained in such > messages will be removed prior to any such disclosure.

Damningly, if they're collecting and disclosing transaction details, they're also technically conveying personal information given the ease by which identities can be reversed from this sort of data.

</comment></comment><comment><USER7> I prodded unroll.me a couple of years ago about their data retention policy. Their answer was sketchy so I ended up not using the service. I'm surprised it took this long for someone with reach to look into them.

Original thread: [https://twitter.com/elahd/status/575692415132135425](https://twitter.com/elahd/status/575692415132135425)

DMs: [http://imgur.com/H0UABYa](http://imgur.com/H0UABYa)

<comment><USER8> I have tried the service, and my interactions with it have confirmed all perceived sketchiness:

In a moment of desperation, I signed up for this a while back. I found it not to be useful and tried to remove my account with the site, which turns out to be essentially impossible.

I ended up revoking access to my email account and continued to receive emails from unroll.me that the service "has lost its connection to your account," which I found hilarious, because in my desperate attempt to get rid of spam, I created more.

I've tried to unsubscribe from these unroll.me emails several times before, and the unsubscribe link takes me to a page containing all the subscriptions that the service once found on my account (the one you'd see if you were trying to use the service---so all that data is still there, for sure, and it has been many months), and I have never actually been unsubscribed.

<comment><USER7> ...and they still have all of your emails! You can't take back the emails they've already archived, which (presumably) is everything that was in your inbox before you disconnected your Gmail account.

</comment></comment></comment><comment><USER6> Basically a repost of [https://news.ycombinator.com/item?id=14180463](https://news.ycombinator.com/item?id=14180463)

Had to search my inbox as a sanity check to make sure I hadn't signed up for the service. Turns out I hadn't, but it was pitched on Product Hunt both in April 2015 and May 2016.

I'm hoping at least security folks made the mental connection that signing up meant compromising your personal emails. That's the single reason I didn't bother.

<comment><USER9> > Had to search my inbox as a sanity check to make sure I hadn't signed up for > the service.

Wouldn't you remember granting a third party full access to your email inbox? That doesn't seem like a trivial decision to make.

<comment><USER6> I trust my brain but verify my memories from time to time. :)

</comment></comment></comment><comment><USER10> Great, I'm sold on leaving unroll.me but I think there is a deeper problem here. Email is so insecure and if you're already using Gmail then who knows who Google is selling your emails to. Google is just a lot better about keeping it a secret. Fooling yourself into thinking your emails are secure if you're not using Unroll.me is a joke. Also, please suggest a secure alternative when telling people to leave a service over security. I'd love to switch to something else that gives me some false sense of security but shutting off unroll.me and allowing my inbox to implode with spam is not a great option right now.

<comment><USER11> Although I've since moved on from Gmail, because I don't like Google having access to all of my emails and harvesting the data from them, I do trust Google as far as sanitizing emails much more than a service like Unroll.me.

As far as a different service, I found Unroll.me to be just another annoying email I had to read and found it kinda useless since if I wanted to "roll up" an email, I had to read the daily email to see what it suggests and then add to my rollup list. My solution was to just unsubscribe from any email that I didn't actively read (which was most of them). Especially given that most services are one-click unsubscribe now in the Gmail interface or Mail.app, it's pretty simple compared to a few years ago.

</comment></comment><comment><USER12> > operating under the radar

The privacy policy is clear and easy to find and understand. You can be annoyed with yourself for not reading it. You can decide the service isn't worth the tradeoffs. You can be annoyed with yourself for being naive about how free products work.

But it's illogical and disingenuous to call this "under the radar" or blame the service for your own surprise about how it works. We have free will and a responsibility to understand the agreements we enter into. Admitting so casually that we can't handle those things is a scary thought.

<comment><USER13> Few people read privacy policies. Everybody knows this. The people making this product know this. If the only place they explain it is in the privacy policy, then they are _knowingly_ and _intentionally_ putting it in a place where most of their users will not see it.

<comment><USER12> > Few people read privacy policies.

People have free will and that's their choice. I'm not surprised that most don't. I rarely do. But it doesn't make sense that the people who have strong feelings about privacy aren't reading them. You can't give up what's clearly your own personal responsibility and then blame someone else for the consequences.

<comment><USER13> I agree that blame should go to people who care about privacy and then don't read privacy policies.

However, blame should _also_ go to companies that hide important privacy info in privacy policies, with the full knowledge that most of their users will never see it.

Given that the company here is a single entity, while their users are a disorganized mass, I think the company should bear much more responsibility for fixing the situation. They can unilaterally fix it for _everybody_ , while their users can't.

The company also exists with the sole purpose of running its business. That is all they do. Their users, on the other hand, are quite busy doing many other things and dedicate perhaps 0.1% of their time to doing business with this company.

In a relationship that's this lopsided, we should not hold both sides to the same standard. The company should bear _far_ more responsibility for hiding important information where nobody will read it than their users should bear for not hunting it down.

Edit: it occurs to me that this is basically like getting conned. Somebody spins a story at a gas station about how they're trying to get to Cincinnati and they just spent their last $5 on money for their sick kid and can you just help a guy out, and they manage to con some poor sucker, do we focus our ire on the con artist or on the sucker? I'm OK with telling the sucker that they should be more careful and they shouldn't have fallen for the story, but they are ultimately the victim here, and the culprit is the scammer.

<comment><USER12> > Somebody spins a story at a gas station about how they're trying to get to > Cincinnati and they just spent their last $5 on money for their sick kid and > can you just help a guy out, and they manage to con some poor sucker, do we > focus our ire on the con artist or on the sucker?

That is just ridiculous. You're describing a lie. This situation has transparency that people have simply chosen to ignore. Fine print isn't a crime.

<comment><USER13> Lying is about intent. When you know that people will expect a reasonable level of privacy by default, and that people won't read your privacy policy, then selling all of their data and only mentioning it in your privacy policy is _also_ lying.

</comment></comment></comment></comment></comment></comment><comment><USER14> I find it fascinating that there are services which require access to your _complete inbox_ , irrespective of how useful they might be or what they've written in their privacy policy. Every single email you ever sent/received, and every single email you will send/receive. Maybe I'm being paranoid, but sorry, that's just a huge "no" in my book.

</comment><comment><USER15> Someone is selling similar data to investors via Quandl. The source is confidential, however, so it's unclear if this is Unroll.me as well.

[https://www.quandl.com/alternative-data/email-receipt- data](https://www.quandl.com/alternative-data/email-receipt-data)

</comment><comment><USER16> Selling data to the highest bidder doesn't surprise me. Users should expect this, but since it's all buried in TOS, only more savvy users are going to know or notice.

Maybe it's time for some ethical standards among developers. Dumping email to an insecure server should be something that every developer would refuse. Somebody was just following order.

</comment><comment><USER17> > If you're not paying, you're the product.

Facebook, Google, ..., Unroll.me

<comment><USER18> And if you are paying, they can make an extra buck by selling you out too.

</comment></comment><comment><USER19> Scummy to say the least.

</comment><comment><USER20> If you have ever used the service, it probably has still almost full access to your gmail account (I noticed it had in mine).

You can remove its authorisations at: [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions)

<comment><USER21> Thanks for the link for the lazy

</comment></comment><comment><USER22> Typically I'd expect this data to be anonymized, but when it's your entire inbox how anonymous can it really be?

</comment><comment><USER23> I used unroll.me once but it didn't really work so I removed it.

</comment><comment><USER24> I don't find the practice ethical at all, but that said, don't understand why anyone would be surprised by this. Users are almost always the product.

Seems like the Gruber version of outrage porn.

<comment><USER25> I disagree. If think it's the false sadness — er, "heartbreak" — expressed by the CEO in response to users being upset that angers Gruber. It's one thing to be a straight up sociopath and run your sociopathic business but quite another to pretend you care one iota about the people who you are monetizing by turning them into a personal data slurry.

By the way, folks seem to be intent on down voting your comment into oblivion. That, sadly, seems like increasingly typical behavior here, and elsewhere on the internet. The thinking seems to be: "I don't agree with your opinion therefore I will do my best to make your opinion disappear." Does that make anyone smarter? Perhaps someone was deeply, personally offended — in which case, off with your head, right?

<comment><USER24> I get it. I just think Gruber is a hypocrite. Wasn't long ago he was invited to an Apple meeting so he could then write a blog post shilling for them.

The boundaries broken are not comparable, but I just don't feel that Gruber has any moral high ground to stand on because of his affiliation with members in the industry.

In addition, it's not like we haven't seen this act before with company CEO's. This sort of thing happens all of the time, and in every industry. He's a smart guy, but his post seems overly-reactionary.

I am less bothered by the CEO's comment than by their monetization strategy, but then again, I don't really see the need for the product in the first place.</comment></comment></comment>