Petition to prevent DEA from making Kratom plant Schedule I - <AUTHOR> https://petitions.whitehouse.gov//petition/please-do-not-make-kratom-schedule-i-substance <comment><AUTHOR> This petition is time sensitive and unlike many other petitions you have seen in the past. Kratom is a plant from Indonesia in the same family as coffee, and is currently being used by many different people to help with their chronic pain, anxiety, depression, and more. It is not an opiate as some incorrect news sources have claimed. The DEA has filed a Notice of Intent to make an emergency decision to make this plant a Schedule I substance starting September 30th, which means that the DEA thinks it is more harmful than cocaine.

This petition is very important because it actually could mean that we can fight this hasty and uninformed decision by the DEA. One of the three ways this decision can be fought legally includes a clause for people collectively disagreeing with the emergency scheduling decision. Lawyers that have looked at this decision believe that this petition qualifies and could have a direct impact on saving this innocuous, life-saving plant from being demonized by the DEA based on lies and incorrect data. Kratom has never been identified as the sole cause of a single death, and in fact is used by many people (myself included) as an aid in leading normal, productive, pain-free, anxiety-free lives. If you sign this petition, you would be doing the world a huge favor. Please don't forget to verify your email address once you've signed it. Thanks!</comment>


Ask HN: What was the first blog/site/newspaper that covered your app/site? - <AUTHOR>

No matter how small or obscure it was <comment><USER2> I sell my product primarily to parents and teachers (mostly teachers).

A 4th grade teacher with a web page, we'll call her Mrs. Smith, picked up my first linkbait and included it in the paper and virtual version of a list of resources she sent home with parents.

Mrs. Smith is now in the good company of several state departments of education, a few curriculum guides, various and sundry teachers, and a smattering of homeschooling bloggers.

As to the first site that featured my product qua my product, as opposed to something free I gave out to get my name out: a particular 3rd grade Spanish teacher, on her personal blog. She liked it.

I also got a good chunk of nepotistic links when I was starting out from other software entrepreneurs who hang out in the same forum I do. Ian Landsman (<http://www.userscape.com/blog/>) and Joel Spolsky stand out from the first few weeks, but I'm probably forgetting people who were no less important to me at the time.

</comment><comment><USER3> Tuaw - the only one so far =/

[http://www.tuaw.com/2008/10/28/actiongear-simple-yet- powerfu...](http://www.tuaw.com/2008/10/28/actiongear-simple-yet-powerful- task-management/)

</comment><comment><USER4> HN

(Sorry. Someone was bound to write it.)

</comment><comment><USER5> Digg (front page for bug.gd )

</comment><comment><USER6> Mashable

</comment><comment><USER7> techcrunch

</comment><comment><USER8> BBC</comment>


Android Asset Studio - <AUTHOR> http://romannurik.github.io/AndroidAssetStudio/index.html <comment><USER2> Looks nice, but a little outdated given all the new material design stuff.</comment>


Show HN: Retool – build internal tools faster - <AUTHOR> https://tryretool.com <comment><AUTHOR> Hi HN! I'm one of the creators of Retool, and we're excited (and very nervous again) to be posting this on HN. We first showed Retool to HN around a year ago ([https://news.ycombinator.com/item?id=14515494](https://news.ycombinator.com/item?id=14515494)).

When we posted Retool last time, we thought it was a cool idea (visual programming + functional reactive programming). But we didn't really know whether it was useful, and whether people would pay for it.

Since last year, we've been hard at work talking to customers and writing code. We discovered that internal tools (eg. to manage deliveries) is a good use case for a visual programming language like Retool.

Basically, Retool gives you components (textinputs, dropdowns, tables, etc.), and queries (connect easily to APIs, SQL databases, etc.). In a FRP way, they can interact with each other. So your tables can pull in data from queries, and buttons can pull in data from a table's selected row.

When we show Retool to people, they often think "oh! it's visual basic for the web!". And in many ways - it is! Maybe that's something you think is great - maybe not. In any case, I'd love to hear HN's thoughts. :)

Here's a 3 minute video demo I just made this morning: [https://cdn.tryretool.com/approval_video.mp4](https://cdn.tryretool.com/approval_video.mp4) of me making an approval workflow in 3 minutes

If you're curious how it works - here are the docs: [http://docs.tryretool.com/](http://docs.tryretool.com/).

Thanks!

<comment><USER2> Ha! I see in your video demo that someone is being naughty:

[https://www.dropbox.com/s/ymacuu8eo3m5267/Screenshot%202018-...](https://www.dropbox.com/s/ymacuu8eo3m5267/Screenshot%202018-08-09%2012.46.28.png?raw=1)

<comment><AUTHOR> That's me - in fact! We thought it'd be a funny joke HN would appreciate :)

</comment></comment></comment><comment><USER3> Holy Crap. This is amazing. Lot of folks have tried to make a general purpose visual programming solution and it always sucks. However, if we narrow the problem to

1\. Show some data on a grid based on user input. 2\. Let user select a row. 3\. Provide different buttons to take actions on the selected row by doing an API call.

Then your tool solves the above problem extremely well (based on the tutorial I saw). And I guarantee you that any organization with tech teams have need to create plenty of such 'mini apps'.

I recently started a new job as a technical lead and I am going evaluate this tool seriously. Due to the nature of the business, we will be prefer an an on- premise solution. Do you have existing clients who use your on-premise solution? How are the updates to the tool distributed? And most importantly, what's the pricing like? Feel free to reach out to me via email.

BTW, you guys have done FANTASTIC job on the main page design/copy. It's been a long time since I saw a product website which instantly sold me on the idea. Well done!

<comment><USER4> > _if we narrow the problem_

Cold Fusion shipped with a wizard to build web CRUD apps against SQL databases, which worked, and you could then continue coding from. It wasn't bad, and came long before Rails or Django admin.

This feels like democratizing that.

<comment><USER5> Definitely! You'll find Retool supports much more than SQL databases and Django admin supports a tiny subset of Retool use cases. For instance, most companies find that after a certain scale Django admin apps need to be converted to custom code. Retool is designed makes custom code unnecessary at any scale.

</comment></comment></comment><comment><USER6> Not having played with it, I love the concept! I'd suggest making the docs more readily available from your frontpage, as it's somewhat difficult to find a link to them.

EDIT: signed up, ran through the tutorial, and I'm suitably impressed. This is a very polished product.

Will you support command-line tools? There's a few places where I can see my admin tools using command-lines to make things happen. Might be nice to be able to spin up a docker instance and run a set of command-line tools in response to an action, or to provide the contents of a table.

A few questions:

\- Why is there only support for Google Sheets query on-premise?

\- How many users can access an account in your free tier? This might be a way to better segment between free/first tier - add a limit of ~3-5 users before you need to start paying for the service.

\- [https://github.com/tryretool/retool_onpremise.git](https://github.com/tryretool/retool_onpremise.git) 404s for me - are you adding customers to that repo manually before they can clone it?

<comment><AUTHOR> Just added and deployed docs above the fold on home screen. Thank you!

\- Whoops - we forgot to update that - we added it to cloud a few weeks ago. Updated our docs - thanks!

\- Hm - good question! I think there's currently no limit, but yes, that's a good idea as we scale. We want to have a "generous" free tier because most engineers we meet find Retool fairly interesting. And so we want to allow people to play around with, without having to pay us.

\- Yes - that's correct for now. Once we have a better on-premise process, we'll open it up! :)

Thank you for the questions and feedback!

</comment></comment><comment><USER7> Your landing page is insanely good. How did you create those animations?

Also just the general styling/design of the entire site + retool itself is so well done.

<comment><AUTHOR> Thank you! Our designer + engineers are very happy to hear that!

We created the animations ourselves with [https://github.com/drcmda/react- spring](https://github.com/drcmda/react-spring).

<comment><USER8> I wonder if such a tool exists for creating responsive animations from websites as if recording screencasts.

</comment></comment></comment><comment><USER9> When I was first taken on as a developer in 2002 I worked on something like this, though I was very junior. XML was a thing then and so the "app" stored it's configuration as an XML file. You would alter your app by writing XML. This meant it looked like code and it failed in the marketplace, as people already had code and they didn't see the use of learning something new. Also this XML had to contain SQL, and HTML, and it had URLs in it. So not something a novice could cope with. The next step taken was to try and build a GUI to generate the XML files, but that didn't sell either because in order to do the really good stuff you still had to understand SQL, and HTML, and Javascript and the URL structure. Even if the app was responsible for some of those things.

Projects like these blur the lines between "coding" and "configuring" software, and I think the success of Retool long term will be understanding how to walk that line. The benefit of code is that it allows for greater complexity to be understood meaningfully, and configuration's benefit is that it is easier to learn. I think if someone is expecting to code and gets a configuration interface, that's OK until it limits them, and if they want to configure and end up having to code, then that's a fail for them as well.

Good luck.

</comment><comment><USER10> What's the open source alternative? I'd like to help in building something like this.

<comment><USER11> Hard to say - LO Base and Kexi don't have any web support at all.

Perhaps [https://github.com/formtools/core](https://github.com/formtools/core) ? Or [https://form.io/](https://form.io/) is open-core but more polished (from the screenshots).

<comment><USER10> Web is important because a fair level of development is being done for non- technical end users.

</comment></comment></comment><comment><USER12> No one has mentioned Google App Maker which comes with GSuites Business and Enterprise. Retool seems to be in direct competition.

<comment><AUTHOR> Sort of! We've definitely drawn inspiration from them (for example, we borrowed some ideas from their right hand side for editing component properties). But I think we're fairly different.

For example, in Retool, you can make a `PUT` request in a Postman-like GUI. And when you press run, we handle the data flow for you. In Google App Maker, you still have to write custom JS to call APIs or execute SQL queries: [https://developers.google.com/appmaker/models/external- data-...](https://developers.google.com/appmaker/models/external-data- options). nd when you do call them, you have to worry about error handling, setting `isFetching` states, etc.

</comment></comment><comment><USER13> Really cool idea, and would completely simplify our internal tools building process, but opening our firewall to allow access to the small scale internal DBs that we would work with is a total no go.

Not to mention that even trying to create a demo for internal teams that would build tools using this with our data would mean miles of red tape that makes it a heavy sunk cost before we even get to the starting line.

If this had some form of containerized app (like Influx Chronograf as an example), then I could create demos that would likely lead to license purchases. But without that, we'll just keep building internal tools with internal frameworks.

Great idea, heavily limited by not having something I can deploy internally without an enterprise license.

<comment><USER14> Elsewhere in the thread it is stated that 70% of the installation are actually on premises.

</comment></comment><comment><USER15> The image bounding box labeling widget looks like a hidden gem! This tool would shine where the dataset has sensitive information or the job is too specialized to use on Mechanical Turk.

[https://docs.tryretool.com/docs/tagging-images-for- machine-l...](https://docs.tryretool.com/docs/tagging-images-for-machine- learning)

<comment><AUTHOR> Thank you! Yes - a few customers use it for exactly that! Please try it out some time - it's one of our coolest (IMO) components. :)

(There was surprisingly - no good open source library for drawing bounding boxes / landmarking on images. So we built our own - and now every Retool user gets to use it!)

</comment></comment><comment><USER16> Congrats! Your landing page is fantastic.

I would definitely urge people in my company to give this a try for future internal tools.

I hope it works out as well as you've sold it [=

<comment><AUTHOR> Thank you very much! I think it will - but the only way for you to figure out is to try it :)

</comment></comment><comment><USER17> I've been using this for the last 3 months and it's a pretty amazing tool. We need to spin up tools quickly for our operation teams and this has been a godsend.

The support has been amazing as well. Very quick response times and fixes when we report any bugs.

</comment><comment><USER18> Do You have any plan, when the on premise tool will be publicly available on github?

</comment><comment><USER19> This looks very cool. Will give this a try!

Btw, I think I remember you back from a Startup School some years back! You dropped me home. Hi!

<comment><AUTHOR> I remember it! Nice to see you again, and thanks for the kind words!

</comment></comment><comment><USER20> This seems optimized for creation of small apps (and is also presented very well). But what striked me watching the intriduction video: When you revisit your a written app, it seems hard to understand whats going on and also hard to get a feel for if all functionality have been implemented and works. How does testing your app with this tool work? How does it help with maintaining a written app to lets say add a new functionality (when you have forgotten all about where your data is stored, where it is read from, what your queries where when you wrote them etc.).

</comment><comment><USER21> How do you actually connect this to your database? Can't find anything about it in the docs. Maybe it's obvious if you log in but would like to know before I try.

<comment><AUTHOR> Sure! You can either deploy it on-premise or you can whitelist our IP address. (I just realized our docs for whitelisting our IP address is gone, so I'm adding it back in now.)

On prem docs: [https://docs.tryretool.com/docs/setup- instructions](https://docs.tryretool.com/docs/setup-instructions)

<comment><USER22> The github repo that this references is either private or doesn't exist.

<comment><USER23> I'd assume because they are not open source and if you want to use enterprise you need to sign a license agreement.

<comment><USER22> Which absolutely makes sense. Except they plug the Heroku button which only works with open source, which makes the whole thing pretty confusing.

<comment><AUTHOR> It's a little confusing - sorry. We recently switched the repository from public to private, and forgot about the Heroku button! We'll get that fixed soon - thanks for the feedback!

</comment></comment></comment></comment></comment></comment><comment><USER24> We've used Retool extensively for multiple products at our startup. It's a fantastic tool that's gotten us out of trouble many times. David & Anthony are amazing founders as well!

If you ever need to build an internal tool, do give them a look before you decide to build it in-house. Wishing Retool all the best!

</comment><comment><USER25> Definitely impressive. The short description seems a little vague or misleading to me though. "Internal tools" can mean a lot of different things - deployment tools, testing tools, data management, etc - so I expected something more generic by the title.

<comment><AUTHOR> Thanks! We've found it difficult to describe exactly the tools that people build in Retool, and "internal tools" is the best phrase we've found.

We've considered "business apps" (vague), "operations tools" (unclear), or "CRUD tools" (sounds unimpressive). What do you think?

</comment></comment><comment><USER26> Super impressive. This is like the perfect evolution of what Blockspring should've been!

<comment><USER5> It's true - retool can do much of what blockspring does (or blockspring might be able to be implemented in retool). But retool can do much more, writing back data and running arbitrary api endpoints. The range of frontend components you'll find in retool goes well beyond tables too - from the basics of any app (buttons, dropdowns, checkboxes) to more advanced json previewers, forms, and even image labelling.

<comment><USER27> any chance you will implement a tree structure?

</comment></comment></comment><comment><USER28> This is great -- landing page and docs are super informative and makes me want to try this.

<comment><USER5> Thank you, you should try the onboarding as well!

</comment></comment><comment><USER29> Love seeing a year of solid effort manifest like this. Nice work!

For every frontend team out there, this should be the goal of your development efforts--to build a component library like this that can be used to rapidly compose any kind of application.

<comment><AUTHOR> Thank you!

</comment></comment><comment><USER30> Great work. One of the very few "Show HNs" I'm impressed by at first glance. My team's internal tools are all CLI-based, but if I had to support users who preferred GUIs I'd definitely give this a try.

<comment><AUTHOR> Thank you - we appreciate the kind words!

</comment></comment><comment><USER31> If you answer my question, I'll tell you where a bug is in your docs (kidding).

Question: Do you use (P)react or some other framework for your components, or have you done all of this component synchronization from scratch?

Bug/Typo (Chrome): I can't click on the "Local Storage" section[0] in the Component reference, and the description for `localStorage.values` is incomplete: "A key-value store with the data with all the".

[0] [https://docs.tryretool.com/reference#libraries](https://docs.tryretool.com/reference#libraries)

<comment><AUTHOR> React! Syncing from scratch would be difficult, and probably not worth it for now.

Thanks for finding both bugs! I'm on my phone (in bed) now, but I'll fix it tomorrow morning. Appreciate it! :)

<comment><USER31> Thank you, I suspected it was React (I later saw somewhere you will add support for custom React components). Looks like good work man, best of luck to you!

</comment></comment></comment><comment><USER32> Cool product! If anyone is interested in a similar research project, here is an amazing one from CMU, done about 5 years ago!

[http://www.cs.cmu.edu/~shihpinc/gneiss.html](http://www.cs.cmu.edu/~shihpinc/gneiss.html)

"Gneiss is a spreadsheet tool for using and analysing online data. It contributes many extensions to the conventional spreadsheet model to support using and analysing web service and other hierarchical data, and creating interactive, data-driven web applications."

</comment><comment><USER33> In FAQ, "What's an query?" should be "What's a query?"

<comment><AUTHOR> Fixed - thank you!

</comment></comment><comment><USER34> David reached out to me around 5 months ago with a demo (it was a sales pitch) and I was thoroughly impressed! Very happy to see the product get even better. Good job to everyone at Retool! Will be signing up as soon :)

<comment><AUTHOR> Thank you - I enjoyed talking to you as well!

</comment></comment><comment><USER35> Looks really interesting. I'm getting a 503 on the Google auth though :(

<comment><AUTHOR> Weird! It looks like we had a few scaling hiccups - should be fixed now!

</comment></comment><comment><USER36> Congrats on launching, David + team! So great to user test a few weeks ago — everything from landing page plus onboarding flow seems to have come a long way since then. Keep up the good work.

<comment><AUTHOR> Thanks Ted! We learned a lot from our user onboarding with you! :)

(I should reply to your email from last week - sorry I've been really busy with launch!)

<comment><USER36> You're all good man, no rush - fully understand :) Let me know when you and Boaz get together. I have a feeling you'll hit it off.

</comment></comment></comment><comment><USER37> Do you have an on-prem demo version I can try? I'd like to make a small pretend app to showcase to my team how this can be effective.

EDIT: Ah I see. I should contact you. I'll do that.

<comment><USER5> Yes, definitely! Reach out to us at firstname.lastname@example.com

</comment></comment><comment><USER38> Congratulations on launching, the professionalism and communication from these guys are second to none. Now to go find and read the Slack bot integration!

</comment><comment><USER39> Super cool...What technologies is this built on?

<comment><USER5> The frontend is standard react + redux + a lot of customization. A lot of the engineering effort is in the library of components and database connections we've built up.

</comment></comment><comment><USER40> looks pretty cool! I'm glad you built something great in the past year.

We build a bunch of tools on top of React-Virtualized which is a brilliant framework (by one of the core devs of react). But obviously what you have is a brilliant end-product.

<comment><AUTHOR> Thank you!

</comment></comment><comment><USER41> Completely mind blown by this, lot's of use-cases rushing to my mind!

<comment><USER41> Why you guys are not on Twitter? [https://twitter.com/benoror/status/1027757144895094784](https://twitter.com/benoror/status/1027757144895094784)

</comment></comment><comment><USER42> Can we incorporate Retool into our HIPAA compliant stack?

<comment><AUTHOR> Yes - we have 2 customers who are HIPAA-compliant, and who use an on-premise, airgapped version of Retool. I don't see an email in your account - do you mind dropping me a line at email@example.com?

Thanks!

</comment></comment><comment><USER43> looks familiar ;)

</comment><comment><USER44> I just went through the whole 4 minute tutorial. It was really amazing what I could achieve and everything in Retool worked perfectly.

This is incredibly polished and amazing and great. Well done!

Only thing I wanted was a dragger on the right hand side of the table so I could pull the table to be wider.

Also, I'm wondering, it looks and works so great, and the UI has so many parts, what did you build it in?

<comment><AUTHOR> Thank you for your kind words! Yes - dragging and dropping + resizing is one problem we should spend a lot of time improving. It currently works... but we could probably make your Retool experience a lot better by just improving that, haha.

Yep - as tennien mentioned - React.

<comment><USER44> Thank you ! :D</comment></comment></comment>


The State of JavaScript 2017 survey is now open - <AUTHOR> https://stateofjs.com/#2017 <comment><USER2> This needs a "Heard of it and don't have an opinion" option.

<comment><USER3> The other one I wanted was "Heard of it, but it's not relevant to my current projects" – "want to learn" overstated my level of interest in some cases.

<comment><USER4> Yeah same. Locally offline DBs that seamlessly sync to remote DBs and optimistically respond are cool, but not relevant to what I do now.

</comment></comment></comment><comment><USER5> I think I got all of them right, but frustrating that it doesn't let you know at the end.

<comment><USER6> It is a survey, the results will be posted later on. If you are interested, you can view the results from last year while you wait. Interesting to see how some of the community feels towards certain ideas.

</comment></comment><comment><USER4> ES5 and ES6/2015 options, but no ES8/2017? My code is requires 'await' and is significantly better for doing so.

Since it covers SASS/CSS too, would be interested in % of people using grid or flexbox.

</comment><comment><USER7> Took it, always mind-boggling how many new flavors and frameworks are coming out. Can't keep up! clojurescript, Typescript and vanilla js for me, all day long. Want to get into Elm also.

<comment><USER3> Any survey like this should include at least one fake framework name to see which percentage of respondents aren't really reading the questions — but they'd probably have to preregister it on NPM to avoid someone publishing it as a joke.

</comment></comment><comment><USER8> Ironically this survey does not work when javascript is disabled :)

<comment><USER9> It'd be ironic if it didn't work when JavaScript _was_ enabled — this seems pretty on-brand. ¯\\_(ツ)_/¯</comment></comment>


Show HN: Redppr – taking on Instagram and rating apps - <AUTHOR> http://www.redppr.com

<comment><USER2> Congratulations on the emptiest website ever...

<comment><AUTHOR> Work in progress, the main thing is the links to the App and Play stores.</comment></comment>


Node.js Foundation – Node.js and Io.js Convergence Repo - <AUTHOR> https://github.com/jasnell/node.js-convergence <comment><USER2> As far as this repo is a fork of IO.js i'm not sure this is going to work out as a "merge". I think Joyent should consider their defeat and recover the bridges they've burned.

On the other hand, it would be amazing if I could do brew install node and get iojs on my Mac.

<comment><USER3> The (draft) convergence plan details how the merger is likely to be handled, including on the technical side: [https://github.com/jasnell/dev- policy/blob/master/convergenc...](https://github.com/jasnell/dev- policy/blob/master/convergence.md#converging-the-projects)

EDIT: Hmm, didn't see this one linked from the OP: [https://github.com/jasnell/dev-policy](https://github.com/jasnell/dev- policy). Not sure why there are two documents with similar purpose.

<comment><USER2> I didn't see that too.

I wish both teams seamless convergence! It's a great news for the community. I hope business guys will not modify this in a non-sense way.

</comment></comment></comment><comment><USER4> I understand there a lots of governance/no technical differences, but is there a clear answer as to why Joyent can't use 'fast forward' Node to the current IO.js stable? Are there major discrepancies between the roads the two teams have taken that would necessitate a 'merge' of the two projects?

<comment><USER5> Yes. And this is the reason I can't take people who advocate io.js seriously. They either didn't do their homework, or have a bizarre set of requirements from software. Joyent did lots of improvements in node.js observability with DTrace and mdb providers. This was one of the very first thing that broke after io.js forked.

Yes, releasing a new release every week is more important than being to debug, profile, and understand your application.

<comment><USER4> As far as I understood, removing MDB was an unfortunate side-effect of upgrading V8 to a newer version[0], and while I can see this would be an issue for some people, I would argue that bumping V8 and the performance and core language improvements that come with it is worth it! But I perfectly see you're point.

Also, this is going to be an issue for Node core too eventually, unless they plan to stay on an old version of V8 indefinitely.

Not sure what you're referring to about DTrace issues in IO.JS, could you provide some guidance?

0: [https://github.com/iojs/io.js/pull/1023](https://github.com/iojs/io.js/pull/1023)

<comment><USER5> DTrace works exactly like mdb, it requires knowledge about V8 internals.

The problem is haphazardly upgrading the V8 version without thinking about the consequences. This is not how you do release engineering, especially since io.js is advertised as stable.

Stable doesn't mean "it works for me", it means you provide some formal guarantees to downstream consumers about the stability of exposed interfaces.

I'm very well aware that some (most?) people don't care about things like good introspection support and stability, but it's pretty pathetic to see factual information being downvoted because people don't agree with the message.

<comment><USER4> I think "haphazardly" might be a little harsh, my understanding is that the IO.js core team fully understood the introspection regressions that would occur when bumping V8; but they took the descison that improved runtime performance combined with native support MANY new language features meant the regressions were acceptable. I agree fwiw.

They favoured the many (who would use the new V8's features) over the few (who valued DTrace etc)

I haven't heard any real claims as to IO.js instability, and have been using it production at scale for several months myself.

</comment></comment></comment></comment></comment><comment><USER6> I really do hope the Node.js and Io.js projects do converge and work with one another. This is a promising and great sign, I hope the wonderful work and participation of both sides continues as this will ultimately benefit everyone from both sides in the end. Competition is good, cooperation is better.

</comment><comment><USER7> Looks like an official effort to merge the projects from what I can tell. Hopefully it will work out!

"This project is operating with the oversight of the joint Node.js and io.js core technical teams."</comment>


A Hypothesis Concerning the Perceived Break of the Curveball - <AUTHOR> http://www.plosone.org/article/info:doi/10.1371/journal.pone.0013296

<comment><USER2> Can anyone explain what phenomenon they are referring to? I'm not familiar with it.</comment>


Ask HN: Good programming language for kids - <AUTHOR> My niece is 13 this week. For her birthday I've bought her a laptop and I'd like to get her into programming (I'm not a developer myself).
I was thinking of something like http://www.squeak.org/ or http://scratch.mit.edu/
What do you think? <comment><USER2> Ask her! First, figure out what exactly she wants to do/make/play with—then pick the best tool for the job.

If she just wants to make web pages, set her up with some webspace and then, after she's gotten HTML and CSS down, show her that she can "make things happen" using PHP and Javascript.

If she wants to make a game, I would personally recommend starting off not with any raw-coding environment at all. Why? Kids don't generally _like_ designing game _mechanics_ —and that's what they're tasked with if they have to turn a general-purpose programming environment—or even a multimedia environment like Flash—into a game engine. If they say they want to make a game, chances are what they _want_ to do is just to re-use ideas they've seen in games they've already played, but with different content assets and "individual-asset mechanics" (i.e. new power-ups, weapons, etc.)

My own recommendation, then, is _RPG Maker_ , partly because it's where I got my own start in logical systems-based thinking, but also because it has a nice, gradually-sloped learning curve, beginning with pure level design, and then transitioning into scripting as the need arises, before finally peaking with the limited ability to rewrite the game engine in the scripting language itself (with just enough chafing to make them crave a better tool.) The only catch is that it isn't free—RMXP is $60USD, as far as I'm aware.

<comment><USER3> _"Ask her! First, figure out what exactly she wants to do/make/play with—then pick the best tool for the job."_

I think you've totally nailed it here, but the other part is actually _providing something to do._

Knowing how to program doesn't mean that you have _something to program,_ which is often borne from some frustration or something that's missing in your computer life.

I just want to throw out there that the other half is stoking the creative fire. I think challenge projects are fun for this (like homework in a way), but the key is finding the right balance of challenge and reward.

</comment></comment><comment><USER4> Python comes with a turtle module, which means you can do all the neat drawing stuff you could do in Logo back in the days.

Also Python's interactive console provides two helpful functions: help and dir, which let you stay in the console even when you have to look up documentation, check properties of an object or find what else is contained in an imported module. There are other shells for Python that provide other functionality like saving your session's input in a file so you can actually write entire programs in Python for later use.

Also there's <http://www.inventwithpython.com/>, which is aimed at children and lets them create simple games to see results early on.

My first programming language was PHP at age 15, so I never had to make the jump from BASIC, but I've seen people stick with BASIC way past its expiry date just because they were used to it, becoming increasingly frustrated with its limitations. I think Python has the advantage that you don't easily hit a wall like that because you are writing in a "real" programming language from the get-go.

<comment><USER5> The original poster's first suggestion was Squeak. It is a variation of Smalltalk, a "real" programming language, that is focused on being approachable and fun for children. I find it rather fun as an adult, too, and would highly recommend trying it out.

If you are using Smalltalk to introduce programming to a child, I suggest downloading the eToys version from Squeakland: <http://www.squeakland.org/>

Adults interested in using Smalltalk for developing sophisticated web applications should take a look at Seaside: <http://seaside.st/>

</comment></comment><comment><USER6> Scratch is a great choice. Worked well with my daughter. I think she was 8 at the time. She quickly grasped ideas like looping, variables, message sending between objects, coordinates...

It's a fun environment for them to experiment and mess around with, which helps learning a lot.

</comment><comment><USER7> Look at storytelling Alice. It's a PhD thesis mod of Alice, designed to help kids (especially girls) get into programming.

<http://www.alice.org/kelleher/storytelling/>

<comment><USER8> Another vote for Alice.. I had an intro to engineering course freshman year that spent 3-4 weeks with Alice to teach basic programming concepts for non- comp sci people and beginners.

It's the perfect tool for developing basic concepts of programming, but in a fun environment that doesn't "feel" like coding.

<comment><USER9> I have a deep mistrust of Alice. When everything you do is done by pulling something from a menu, how do you even think about creating something basic that is not already in those menus? It is almost like expecting to learn a lot about civil engineering by playing with Lego. Certainly, there are many things you would find superficially similar, but the essence is missing. Yes, I am exaggerating, but you see where my mistrust comes from.

</comment></comment></comment><comment><USER10> Microsoft's Small Basic fits the bill perfectly - perhaps undersold on this link but...

[http://www.microsoft.com/downloads/details.aspx?FamilyID=B00...](http://www.microsoft.com/downloads/details.aspx?FamilyID=B006D58D-C2C7-44AD-936B-E7E2D7DE793E&displaylang=en)

<edit> A good overview can be found here <http://msdn.microsoft.com/en- us/beginner/ff384126.aspx> </edit>

</comment><comment><USER11> I would probably try Hackety Hack: <http://en.wikipedia.org/wiki/Hackety_Hack>

<comment><USER12> Hey, thanks for mentioning Hackety! I'm the maintainer now.

The site is now <http://hacketyhack.heroku.com/> , and we're gearing up for a 1.0 release in the next few weeks. There's been a lot of work to get Shoes 3 ready, and once it's done, I can get 1.0 out the door...

</comment></comment><comment><USER13> As weird as it might sound but I recommend Basic. With line numberings.

It will make her need to think about the whole program beforehand.That taught me analytical structural thinking so well. Also at some point I realised I could put more lines in between 10 and 20, 9 more lines!

<comment><USER14> Kids should have fun programming. Line numbers are sheer torture.

I speak as someone who learned to program in TI-99/4A BASIC. The eventual move to QuickBASIC 2.0 was bliss: structured code and full-screen editing. I realized instantly what I had been missing.

<comment><USER13> And I learned on an Apple ][ with program loading taking a minute. Basic is fun. You can make the machine do what you want.

</comment></comment></comment><comment><USER15> Ruby. I don't think you could get any less verbose, it's simple to understand and to the point, great for a first language. :)

<comment><USER16> I would agree 100% with you except for some personal experiences I've had. I'm a full time Ruby developer who incessantly tries to pull all his friends, kicking and screaming, into programming - _any_ programming - and naturally I push Ruby first, since I find it such an elegant, intuitive language.

To my surprise, though, some people just don't "get it". Where I see elegant, intuitive behaviour, they see incomprehensible magic. Where I delight in "objects all the way down", they find OO to be at odds with their conceptualisation and an unnecessary, unwelcome complexifying factor.

Depends on the person. I hate to say it but in many cases a less "opinionated about OO" language, like (gasp!) PHP, might be a better fit.

<comment><USER17> 'Depends on the person. I hate to say it but in many cases a less "opinionated about OO" language, like (gasp!) PHP, might be a better fit.'

PHP is equally opinionated about OO, as is Java, C++, Smalltalk, et al. It's just that not all opinions are equal.

</comment></comment></comment><comment><USER18> A few random suggestions. I don't actually know much about Squeak or Scratch, so those might be better options. YMMV, of course.

One way to sort of ease into the idea of instructing-a-computer-so-it-does- things is to make things in a context-free-grammar based system, like: <http://www.contextfreeart.org/>

I've found some people find it much easier than "real" programming, since it avoids control constructs and such. I personally actually find it a little harder, because I try to think of it in terms of operational semantics, and end up mentally reverse-engineering everything I write into the equivalent C code. I've had good luck introducing non-programming people to it, though; not tried with any kids; mostly computing-interested adults.

Processing is a relatively simple media-computing environment. Based on Java, but highly simplified and oriented towards 2d graphical applets: <http://processing.org/>

I personally learned on Logo, which I thought was nice. I'm not sure if there are good Logo implementations these days?

</comment><comment><USER19> <http://www.alice.org/>

</comment><comment><USER20> I think the most important part of your choice is to keep her motivated: So I would go with Squeak or Python. Squeak is great for learning programming; It is very easy to produce little games and things like this. Python is great if you want to use a lot of libraries and still want a clean programming language. Php is fine for web pages - if she loves to build them it is great, but the other languages are better suited for learning to programm. Bottom Line: I would go with squeak!

</comment><comment><USER21> I'd recommend Scratch. It's approachable and intuitive - and cross platform. It bundles loads of sprites, images, sounds, music loops, and sample projects. It also imports photos straight from your webcam.

Lot's of people will rail against a language like Scratch because it doesn't have any "real world" uses. However, teaching is a real world use, and that's why Scratch was developed. Programming concepts transcend languages.

Most people focus on Scratch's drag-and-drop interface, which does prevent syntax errors. Not fighting syntax errors means kids can spend more time learning programming concepts and experimenting with things that matter, such as arrays, variables, and stuff.

The under-talked about feature in Scratch that makes a good teaching tool is the "single stepping" mode. This mode steps through the scripts, one block at a time, allowing you to see the code "execute" as the game/story plays out. Great for debugging or learning.

Lot's of great places to find tutorials online. Try: <http://scratch.mit.edu> <http://www.scratchguide.com>

</comment><comment><USER22> Make sure she has an interest in programming first. If she does, do NOT start her out on a graphical programming language like squeak/scratch. Future compsci kids have romantic visions of hackers frantically typing into a green/black terminal to break into the government mainframe. They will be turned off instantly when they see themselves just dragging and dropping blocks onto a white screen.

</comment><comment><USER23> If she's interested in games may Kodu would be a good starting point: <http://fuse.microsoft.com/kodu/>

It's a visual programming language for creating games, it's very simple to create fun and playable games. It would certainly would as a good introduction to modelling and sequencing, which would lead on to "real" programming well.

</comment><comment><USER24> <http://inventwithpython.com/>

I have two girls (10,7) and they both enjoy this one. Easy to follow.

</comment><comment><USER9> Use something where you actually have to program by typing.

I would perhaps use DrScheme.

</comment><comment><USER25> Squeak and Scratch are honestly the best possible choices (along with the story generator style tools are also), please ignore any opinions to the contrary. I would especially recommend checking out Scratch, as the folks behind PLT Racket/(Scheme) who are very very into early CS education has spoken well of it, though PLT itself might be a great environment for more supervised learning of programming etc and had some very nicely developed materials you to work from

For those who ask "why?" I say: Because visual construction/play is the first view that is presented to the user in those environments! All things being equal, it is always always easier to learn any topic if you are being presented information across several media (visual, auditory, textual) than only one.

</comment><comment><USER26> Install XAMPP from Apachefriends.org and have her start PHP. It's what many schools use for their beginner classes. On Windows, I like PHPDeveloper personal edition for an IDE. It's cheap (or free, I can't recall).

PHP is mainstream, and since it's a web technology, she can likely show it off to her friends. It's not hard to find cheap PHP hosting if she ends up building something that she wants to put on the public-facing Internet for friends or strangers to use. XAMPP also comes with MySQL pre-configured, which is a bonus.

I cut my teeth on Logo and BASIC as a youngster. I wouldn't wish BASIC on anyone, and she's old enough that Logo would be boring.

<comment><USER27> Come on, PHP is a horrible mess. Sorry to be so blunt, but that's the way it is. Don't start with PHP. I usually leave PHP devs to their own world, but since you suggest spoiling the children, I had to jump in...

As for hosting, you could easily host a Ruby/Sinatra app on Heroku to show off for friends.

<comment><USER4> I started with PHP and I wouldn't recommend it. It teaches you horrible habits and its type system is equally confusing if you get started or if you come from another language. Plus, you have that heavily polluted global namespace, a half-assed class system (objects are special, classes are special, primitives are special -- in Python the experience is closer to "OMG I've been using objects all along!" (like in those movies where the protagonist suddenly realises the shoes weren't magical, "the magic was in [him]") whereas in PHP you actually need to understand a completely different approach to what you're used to.

And don't get me started on naming conventions. Sure, you can adapt to PHP's inconsistencies, but ideally the first language you learn should be reliable and consistent.

BESIDES: if you learn a web language, you have to learn HTML first. And if you want to learn HTML these days, you also have to learn CSS and then JavaScript isn't far off either. In short: you'll have to learn a whole lot of stuff just to get anywhere. If you start coding in a shell and eventually start on GUI code, you only have to worry about what it all looks like on YOUR machine (and if you want to share your code, you can simply (have your daddy) make sure the other person has all the necessary modules in place).

</comment></comment></comment><comment><USER28> I remember trying to learn C when I was twelve. The strange errors the compiler generated were way above my head, because the system was more complicated than I could understand at the time. Eventually, when I was 13 or 14, I learned a bit of VB, but not enough to be really useful. I think, however, that someone might have a decent chance of learning python, especially since you don't have boilerplate code. Also, if you are working directly with the interpreter you always know that it was the last thing you did that caused the error, so you don't have to hunt around (think attention span).

</comment><comment><USER29> I would definitely recommend scratch. My nephew has been experimenting and making simple games with it for a while. There is a certain pride that an uncle feels when asked to explain the "abs" function to a child.

</comment><comment><USER30> I vote for REBOL. Syntax is really basic, yet really powerful. Can do graphics, simple animation, connect to the web, can accept web connections and is really small.

Basic applications at <http://musiclessonz.com/rebol.html> rebol tutorial include a painting app, e-mail sender and a calculator.

Syntax is the real winner. Keywords, "" and [] is basically all. No silly semicolons, curly braces or whatnot.

</comment><comment><USER31> processing. it's simple to make visual stuff, no boilerplate and "IDE" has only like 3 buttons (play, stop and ..)

</comment><comment><USER32> It strikes me that your choice should reflect her knowledge of math and basic logic. If she has a good grasp of these, then perhaps a "typed" language might be a good idea, otherwise, something like Alice (as suggested below) might be better because it introduces those concepts in a visual way.

</comment><comment><USER33> Lots of good suggestions in here, depending on the answer to "ask her."

I'll just add that at 13 she's old enough to start in with something more "real" than squeak or scratch. While they do teach logic, she'll be able to build on something more realworld-like for much longer (like, forever if she wants).

</comment><comment><USER34> Kojo might be worth taking a look at: <http://www.kogics.net/sf:kojo>

It's Scala, but reminds me of playing with Logo a long time ago. My 12 year old son really enjoys Squeak, but is fascinated by Kojo right now. (edited to add part about Squeak)

</comment><comment><USER35> I've recently introduced <http://hetland.org/writing/instant-hacking.html> tutorial to my 14 years old brother, hope python is simple enough.

</comment><comment><USER36> I started learning how to program with Logo when I was in 4th grade. Perhaps it's a bit out of date now (haven't looked at it in over 20 years), but I did end up becoming a programmer.

</comment><comment><USER37> I taught myself to program when I was twelve by doing PHP. Although I wouldn't touch it with a barge pole these days it's certainly easy to learn.

Having said that I'd probably get her a HTML/CSS book.

<comment><USER17> Did you later have to unlearn any bad habits, or did you have trouble picking up this or that concept or practice in other languages?

</comment></comment><comment><USER38> Big Trak, Lego Mindstorms, any programmable robot type toy.

</comment><comment><USER39> Smallbasic from Microsoft is very kid-friendly.

</comment><comment><USER40> basic... now with microsoft's new one who could go wrong?

i learned AWK... but then QBasic is what made me a programmer.</comment>


Kazakhstan's aggressive mass surveillance technique explained - <AUTHOR> https://protonmail.com/blog/kazakhstan-internet-surveillance/ <comment><USER2> I just crossed Kazakhstan to Uzbekistan few days ago in my travel.

In three days of driving there with a car I got stopped by the police 5 times for no reason and in most cases the cops just wanted to get a bribe

I'm not surprised The country is using a mass surveillance technique in an aggressive way.</comment>


Show HN: Lunacy – Standalone Sketch Viewer for Windows - <AUTHOR> https://icons8.com/lunacy <comment><AUTHOR> Hey there!

My name is Igor, I'm the developer of Lunacy. I'll be here to answer your questions regarding our new tool. I would also appreciate any feedback!

Please mind this is an alpha version and there are bugs here and there which will be fixed with new releases.

These are the main features of Lunacy:

\- Opens .sketch files in Windows

\- Exports images

\- Inspects layers, measurements, styles, fonts, colors, etc.

\- Generates CSS for layers

\- Works offline

\- It's FREE

<comment><USER2> hey just wanted to say it looks very cool so far.

<comment><AUTHOR> Cheers for the feedback, Bryan!

Anything you would change/improve in this edition of the app?</comment></comment></comment>


Ask HN: How did you invest your money when you started your career ? - <AUTHOR>

At some point in your career you had more money than necessary to cover your basic (or not so basic) needs:
How did you invest it ? (Stocks, saving accounts, startup, house...)
What went wrong ? What would you do instead today ?
What were your best decisions ? <comment><USER2> I paid off my student loans very quickly (2 years into a 10 year loan at sweetheart interest rates), and then put most of my savings towards my retirement accounts. Roughly 75% went to index funds, the remainder to individual stocks, mostly as a form of entertainment.

Given that the timing for this investment was the last four years, I have of course been clobbered.

Had I been less aggressive at both of those plans, I would have mid five- figures extra to put into my business. I would not mind having the extra cushion, and it would ease cash flow issues this summer, but I don't think the presence of it would make a major difference in my life.

I do not have any regrets. Part of the discipline of investing in index funds is that we don't know when we're going to get clobbered, so we invest regularly and over long periods of time will get very close to the market's average return.

(I also don't regret paying my student loans early: I have a burning, passionate hatred of indebtedness. Even a comparatively small amount of money at a subsidized interest rate makes me feel like I'm owned.)

</comment><comment><USER3> When I was fresh out of college, I put lots into a 401k. When I left that company, they mailed me a check (mistake 1), and my _ex_ spent it to pay off her credit cards (mistake 2). It took me 5 years to pay off the IRS, and it was another 5 years before I worked at another company that offered a 401k. I had stupidly placed the funds into the company stock as a sign of company loyalty, which dragged down my returns in the 401k, but since my _ex_ blew it all, that mistake meant she had 1/2 as much money to piss away as there could have been (she was in charge of handling the household finances which was why I didn't catch it until the IRS sent me a nastygram [mistake 3]).

Had I rolled it directly into an IRA, my retirement savings would be about 2x what they are now, and working for companies too cheap to offer 401k plans to employees for almost all of my 30s means that I have to put the max into 401k and IRA (for the rest of my working life) in order to avoid living under a bridge when I get too old to work.

</comment><comment><USER4> Thank you all for scaring me sh*tless. I just started my career in digital marketing and I'm beginning to think about what to do with my money. I make 30k and I'm wondering what to do with the excess funds.</comment>


I am very real - <AUTHOR> http://www.lettersofnote.com/2012/03/i-am-very-real.html <comment><USER3> This submission could not have come at a better time.

Over the past couple of weeks, I've been contemplating making a submission urging HNers to be _human_ , and to recognize that everyone else who comments here is also a _human_ , and that stories about startups and notable figures are essentially about _humans_ \- humans who all have families, friends, ambitions, desires, flaws, struggles.

All too often I see people here forgetting about that. I myself have been guilty of it in the past too. But there's something about the negativity and criticism here that grates on me more than on other sites. I think people here tend to assume that being an engineer/programmer means that not only must they treat their code with utmost logic and rationality, but that they should look at life in the same manner - that to be an empathetic and emotional person puts them at some sort of optimizational and productive disadvantage. All that leads to is cold, harsh discourse and criticism without considering the more abstract, but very real ways humans feel and behave. It's sad to see.

So, I guess this is that submission. Next time you write a comment, ask yourself if you're being human and remind yourself that whatever you're about to say is directed at another human.

Stop being robots, and just act human.

<comment><USER4> I agree with you, and there is a specific type of pedantry I find especially grating. I'm talking about the constant insistence on citations and double- blind studies, even when it isn't appropriate - even when someone obviously means only to share their own experience. There's an aggressive form ("Citation Needed") and a passive-aggressive form ("Say, friend, that's a bold claim! I sure am interested in this. Do you have a source where I might read more about it?")

Sometimes, this is completely appropriate, as when someone is using an anecdote as their only support in a vigorous debate, or when information is clearly being presented as factual, when it probably isn't. But as "Citation Needed" has become a rampant meme in its own right, I think it is increasingly applied in knee-jerk, cargo-cultish, and inappropriate ways.

Sharing anecdotes and experiences is one of the fundamental ways that humans share information about the myriad little nooks of the world that we move through. I know it isn't science. I'm quite well read on cognitive biases, statistics, and the scientific method; and I do not need to be reminded about these by HN commenters continually, every time somebody shares a story, or an opinion based on their experience.

I'm concerned about a chilling effect on the sharing of anecdotal information. There is information - information that I can use - in the many experiences related by others. I don't need or desire to get fully 100% of my information from peer-reviewed scientific studies. I know the difference between science and personal experience, and I would much rather bear the burden of telling the difference for myself, as the reader, than to have fewer people talking about their personal experiences.

<comment><USER5> Thanks for eloquently stating a problem I've noticed for a while. I think there's a fear of not coming off as a hard-nosed, logical thinker, so the constant need for citation is a proxy for "I believed XYZ because some authority said it was true. If I'm wrong, it's not me, it's because I was mislead."

The world is full of single data points. If you see an anecdote, see it as a data point, but more importantly, see it as a metaphor which could apply to your situation.

Sometimes I think some people wouldn't hug their kids until a study said it was ok (hrm, weren't there studies in the 50s saying you should do the opposite?). I'd like to think I'm rational, but sometimes you need to move beyond the cover-your-ass safety net of "the study says" and do what feels right. Citation? Here's a meta-study that most medical research studies are false (<http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1182327/>).

<comment><USER6> Erik Naggum had a flamy comment on that topic: [http://groups.google.com/group/comp.lang.lisp/msg/e5af8ef3f8...](http://groups.google.com/group/comp.lang.lisp/msg/e5af8ef3f88dd39c?dmode=source&output=gplain&pli=1)

The study you mention brings me to another point: In some cases the discussion here on HN revolves about believe systems, papers an references cited are often selected for an argument by authority. Moreover: would a paper in itself be enough? wouldn't you have to, critically follow through to the reviewing peers? concurring papers? This is indeed death of any discussion and it proves nothing in the end.

Typical thread of citations against citations: <http://news.ycombinator.com/item?id=3749114> but the debate is never coming beyond the point of "how do yo know this?" questions, masking "I don't like your point" as "you have no data backing this up".

<comment><USER5> Exactly. I saw that back and forth thread on education and it made me cringe.

</comment></comment></comment></comment></comment><comment><USER7> While not nearly as important, the idea that authors are real makes me immediately relate to my own experience that customers don't seem to understand that software is made by real people too. People with feelings, who are fallible. Several comments on blogs or reviews on the app store show to me that people don't feel they are being insulting or rude if they aren't facing the person they criticize. The more I wrote this comment the more I started to seem the Internet as a whole falling victim to anonymous words that cut deep. We've had to develop unnaturally thick skin.

<comment><USER8> David Foster Wallace's take on this was that my own reality is so overpoweringly real, that it's hard to see you (or anyone else) as real.

 __ _everything in my own immediate experience supports my deep belief that I am the absolute centre of the universe, the realest, most vivid and important person in existence. We rarely talk about this sort of natural, basic self- centredness, because it's so socially repulsive.... Other people's thoughts and feelings have to be communicated to you somehow, but your own are so immediate, urgent, real...._ __

The remedy he proposed:

 __ _[Instead:] if you're aware enough to give yourself a choice, you can choose to look differently at this fat, dead-eyed, over-made-up lady who just screamed at her little child in the checkout line - maybe she's not usually like this; maybe she's been up three straight nights holding the hand of her husband who's dying of bone cancer, or maybe this very lady is the low-wage clerk at the Motor Vehicles Dept who just yesterday helped your spouse resolve a nightmarish red-tape problem through some small act of bureaucratic kindness. Of course, none of this is likely, but it's also not impossible - <USER2> just depends on what you want to consider._ __

[http://m.guardian.co.uk/books/2008/sep/20/fiction?cat=books&...](http://m.guardian.co.uk/books/2008/sep/20/fiction?cat=books&type=article)

What works for me sometimes in dealing with customer-service folk is to ask them what they would do in my position.

<comment><USER9> While I agree with your suggestion for dealing with Customer Service, I don't agree with Mr. Wallace's proposed remedy. Why should I have to imagine someone in a piteous position in order to be able to empathize with them? Can't we just accept people for who they are and empathize because they are just like us?

<comment><USER10> You might as well ask, "why can't we just make ourselves smarter?" Our brains don't always work in the way we want them to work; what's wrong with proposing a brain hack that results in a desired emotional output?

Wallace's hack is particularly cool because it uses the prefrontal cortex (over which you have at least some level of conscious control) to create stories that trick your limbic brain into generating the preferred emotional response.

I've seen this referred to as "riding an elephant", because the "rider" (the conscious mind) can skillfully manipulate the "elephant" (the bulk of the brain), but ultimately remains at the larger creature's mercy. Great image.

<comment><USER5> Thanks for that explanation. I've seen the "riding the elephant" analogy before and it's quite fitting. Usually the rider can't do much, but this trick seems to work.

</comment></comment></comment></comment></comment><comment><USER11> My favorite part:

>Perhaps you will learn from this that books are sacred to free men for very good reasons, and that wars have been fought against nations which hate books and burn them. If you are an American, you must allow all ideas to circulate freely in your community, not merely your own.

Thanks again, Vonnegut.

<comment><USER12> >But it is also true that if you exercise that right and fulfill that responsibility in an ignorant, harsh, un-American manner, then people are entitled to call you bad citizens and fools. Even your own children are entitled to call you that.

I might have gasped out loud.

</comment></comment><comment><USER13> Burning a book (good or bad) is the lowest form of expression humans can stoop to. If people understood the fact that a book is simply a personification of ideas, and ideas good or bad, cannot perish in a fire, the will realize the folly of engaging in a futile act like burning a book.

One of the inevitable consequences of the digital revolution will be that, there will come a time, when a controversial book will be published exclusively in digital format with no physical copies to burn. I don't know if this necessarily good or bad, but the fact that idiots can't burn a book will provide me some amount of pleasure.

<comment><USER14> I'm not so sure that this type of book-burning is tied to the physicality of books, rather than a symbol of rejection. Certainly, there have been instances throughout history, such as when the Nazi government or the Catholic Church have carried out organized purges of particular written works on a societal level, where the supply of the work has been materially impacted to the point that it is difficult to obtain.

But I assume you're referring more to examples such as this story, of small groups using book-burning as a publicity stunt, or a public symbol of their rejection of the work. In those cases, I doubt the lack of physicality makes any difference; if they wanted to protest a digital-only book, they'd simply print it out on something flammable first.

<comment><USER13> Good point. I was not necessarily referring to the physicality of books but the notion these book-burners subscribe to, that if they symbolically burn a book, the idea will perish. Your point of the Nazis burning the books out of supply only illustrates the point that to burn a book in the hope that the idea will perish, did not necessarily work.

</comment></comment></comment><comment><USER15> "And no copies of this letter have been sent to anybody else. You now hold the only copy in your hands. It is a strictly private letter from me to the people of Drake..."

What happened?

<comment><USER16> I'm guessing like most people who write for a living that he had a carbon (assuming this is before word processing) or a disk file found in his papers after his death.

</comment></comment><comment><USER17> For some more background, the local newspaper looks back on this story 35 years later:

[http://www.minotdailynews.com/page/content.detail/id/519549....](http://www.minotdailynews.com/page/content.detail/id/519549.html?nav=5576)

</comment><comment><USER18> Is there even any logical basis for the idea that banning curse words or otherwise offensive language "protects" children?

The word itself causes no harm. Tell a child a curse word they don't know and they aren't stricken back as if you had slapped them. It has no meaning or value until you describe what it means and when to use it. Then once it's explained to them, assuming they weren't harangued by their parents into fearing the word itself, there's the use in a book such as The Adventures of Huckleberry Finn:

 _"Oh, yes, this is a wonderful govment, wonderful. Why, looky here. There was a free nigger there from Ohio – a mulatter, most as white as a white man. He had the whitest shirt on you ever see..."_

Contrast this with a book like Where The Red Fern Grows, where a boy's dog (who he loves dearly) is disemboweled in front of him and he has to literally stuff his intestines back into the dog's bloody carcass.

If the high purpose is indeed to protect children they should be taught about the world so they'll know how to deal with it. Sure, there's ugly things about the world and for the most part we try to isolate ourselves from it, but burning it doesn't make it go away. The end result may be it enforces in the child the idea that they can choose to destroy any part of society they dislike, regardless of anyone else's opinion and without a reason other than their feelings. Personally I can't think of anything more frightening.

<comment><USER19> The moral purity police are always with us and always find some excuse to save other people from damnation: witch hunting, regulating the surface area of women's clothing, statutory rape, and so forth.

</comment></comment><comment><USER20> I'm curious, how, if "... no copies of this letter have been sent to anybody else. You now hold the only copy in your hands." is true, how is it reproduced on this site?

<comment><USER21> Shaun here - I run Letters of Note.

Presumably Vonnegut kept the draft, or kept the original and sent McCarthy the one copy. The letter's text was later included in Vonnegut's book, Palm Sunday, as mentioned on the site.

<comment><USER22> As an aside: thank you for the great web site.

<comment><USER21> Thank you. It's a pleasure.

<comment><USER23> Your site always makes my day. Keep the good work!

</comment></comment></comment></comment></comment><comment><USER24> Every time I read a story like this, I'm reminded of Dunbar's number and David Wong's excellent (and very funny) summary: <http://www.cracked.com/article_14990_what-monkeysphere.html>

The "Monkeysphere" explains a huge amount of silly human behavior.

<comment><USER25> Thank you for sharing this link, this actually helps explain a lot of stuff I've been wondering about for a while.

<comment><USER24> Yeah, my description of the Monkeysphere is: "The Universal Theory of Human Behavior". I wish more people knew about it. Just doing my part. :-)

</comment></comment></comment><comment><USER26> I've been obsessing a little bit over Ready Player One over the past couple weeks. Not that it is an amazing piece of literature, it surely is not that. But it is highly entertaining and an incredible work of meta fiction. It is a fiction about a fictional world in which essentially all other fictional worlds co-exist, and they all celebrate each other. I would recommend it to anybody at all without reservation (if you don't read speculative fiction you'll just ignore my recommendation anyway, even though I think this book would have the power to open some doors to you).

I have not read Kurt Vonnegut, but was intrigued by the specific reference to him as the main character's favorite author, a certain kind of twisted high praise in the context of the book as a whole. I have not heard much about Kurt Vonnegut beyond recognizing the name and the Ready Player One reference. But reading this letter, and with the added bonus of the implied recommendation from Ernest Cline, I've heard enough.

Where's the best place to start?

<comment><USER27> Slaugherhouse-Five is his best-known book, and was the book referenced in the article. I would say to start there.

Here are the grades Vonnegut himself gave his own books (in Palm Sunday):

Slaughterhouse-Five: A+

Cat's Cradle: A+

The Sirens of Titan: A

Mother Night: A

God Bless You, Mr. Rosewater: A

Jailbird: A

Player Piano: B

Welcome to the Monkeyhouse: B-

Breakfast of Champions: C

Wampeters, Foma and Granfalloons: C

Palm Sunday: C

Slapstick: D

Happy Birthday, Wanda June: D

</comment></comment><comment><USER28> I was curious how this document was released, if only one copy was distributed to a person who was probably not inclined to share it. The first newspaper reference on Google I could find is dated June 1982.

[http://news.google.com/newspapers?id=L6pNAAAAIBAJ&sjid=r...](http://news.google.com/newspapers?id=L6pNAAAAIBAJ&sjid=rfsDAAAAIBAJ&pg=2734,3598967&);

Anyone have access to Factiva or LexisNexis?

<comment><USER21> Vonnegut himself released it, in his book, Palm Sunday.

<comment><USER29> But in the letter he claims that the copy the recipient is holding is the only copy. Was he lying or did he somehow have it returned to him?

<comment><USER30> Looks like this letter is 1973, the book 1981. His ultimate point is that he wasn't exploiting the letter for attention. 8 years after the incident, I think it's safe to claim the potential for exploitation is gone.

EDIT: Oh, you mean you took him literally, that he didn't even have his own copy. Well:

"And no copies of this letter have been sent to anybody else. You now hold the only copy in your hands."

It sounds like this could imply that he could be holding onto a copy himself. Interesting point, why would you do that if you didn't mean to exploit it, at least eventually? Or maybe he just likes to hold on to things for records.

<comment><USER31> I know personally I keep copies of every letter I send, simply to refer back to if and when the recipient responds to me; it's useful to know what questions I asked when the answers come in.

<comment><USER29> That's a lot easier now than it was back then. Maybe he used carbon paper but there was no photocopying and obviously no word processing, at least nothing that an individual outside of a specialist organisation would have access to.

It's obviously the most likely explanation but still, it perhaps stretches what might be considered usual for the period.

</comment></comment></comment></comment></comment></comment><comment><USER32> Everyone seems to be confused by the "I am sending you the only copy" aspect of this letter. I'm sure he kept excellent records, and keeping a copy (or the original) for himself would be a standard business practice for someone in the communication business.

It is no different than you sending an email to someone saying, "I'm sending this note to you alone rather than posting this publicly, ..."

As for why he would keep a copy: no different than why you keep copies of your emails. Should the recipient respond, he'll have his original to reference if the person responding takes items out of context, attributes statements not actually made to Vonnegut, amongst other benign or nefarious mistakes.

</comment><comment><USER33> This is very weak. We should not burn books because it might hurt the feelings of authors? Surely that means it's ok to burn the books of dead authors?

The reason why we should not burn books is because

\- it deprives potential readers of the benefit of reading them

\- the free circulation of ideas is the cornerstone of a free society, and trying to restrict it is the beginning of tyranny

\- arguments should be fought with arguments, not fire

But the feelings of authors really don't have anything to do with it. KV shouldn't have felt insulted that someone burnt his books. He should have been ashamed for the human race that anyone would burn any book (and not just his own). He should have punched the guy in the face.

<comment><USER34> this letter is a very good example of tailoring an argument to the audience.

</comment></comment><comment><USER35> Do people burn books online? Is there a correlative action to tossing vilified literature in the fire? The attitude characterized by McCarthy's response to Slaughterhouse-Five retreats from reality to the ideal. As media channels have diversified and the input streams exponentially increased, can I burn something by choosing not to consume it? Obviously we cannot take in everything, but I think the filter bubble, both imposed and self-manufactured, creates a sort of insularity and a disconnection from the broader human experience. If I only read what I like or relate to, it makes me less real.

<comment><USER36> Good question.

I think there's no similar action analogous to burning books online, so people inclined to do so are left to other kinds of action, like writing angry comments and blog posts.

</comment></comment><comment><USER37> This is exactly why the 6th Amendment of the US Constitution guarantees the right to face your accuser.

"in all criminal prosecutions, the accused shall enjoy the right…to be confronted with the witnesses against him"

It's harder to accuse someone, or even insult or disparage them, when you have to face them. And that is something that should be hard to do.

<http://en.wikipedia.org/wiki/Confrontation_Clause>

</comment><comment><USER38> I am curious for more. Does the source book have more on this story? I'd like to know whether the letter was ever shared in the community.

<comment><USER39> It must have been shared with at least one other person as it explicitly states that there is only a single copy in existence. For us to be reading it means either the recipient or the person they shared it with subsequently shared it with others.

<comment><USER40> "Copy" probably doesn't refer to an actual copy, outside of the one Vonnegut probably made for himself -- it refers to the one sent.

<comment><USER41> Still rather deceitful of Mr. Vonnegut.

<comment><USER42> hmmm

</comment></comment></comment></comment></comment><comment><USER43> To me the key sentence is:

>You should also resolve to expose your children to all sorts of opinions and information, in order that they will be better equipped to make decisions and to survive.

A great way of saying that if you don't learn on your own to discern good from bad, you will never learn to do it, and learning requires exposure to all sides.

</comment><comment><USER44> "If you are an American, you must allow all ideas to circulate freely in your community, not merely your own."

Tell me you don't buy this?

</comment><comment><USER45> _And no copies of this letter have been sent to anybody else. You now hold the only copy in your hands._

ahem.

</comment><comment><USER34> I still can not believe how awesome this man was. This is exactly how all people should be.

</comment><comment><USER46> I wonder what the school board would have done with Fahrenheit 451.

</comment><comment><USER47> This was an amazing letter. Great lesson for me on so many levels.

</comment><comment><USER48> isn't government actually run by people too?

</comment><comment><USER49> _Everything was beautiful and nothing hurt._

I was depressed for weeks when he died.

</comment><comment><USER50> _If you are an American, you must allow all ideas to circulate freely in your community, not merely your own._

If Kurt is an American, Kurt must allow book burning.

If you are an American, you must not down vote.

<comment><USER51> I guess you stopped reading at that point, because he goes on to say:

 _After I have said all this, I am sure you are still ready to respond, in effect, "Yes, yes–but it still remains our right and our responsibility to decide what books our children are going to be made to read in our community." This is surely so. But it is also true that if you exercise that right and fulfill that responsibility in an ignorant, harsh, un-American manner, then people are entitled to call you bad citizens and fools. Even your own children are entitled to call you that._</comment></comment>


File Systems, Data Loss and ZFS - <AUTHOR> https://clusterhq.com/blog/file-systems-data-loss-zfs/ <comment><USER2> I switched to FreeBSD a couple of years ago, partly for the sake of ZFS which is a first-class filesystem on that platform. FreeBSD was much more similar to Linux than I expected, and where there were differences, the FreeBSD way was usually simpler. My system has been stabler ever since, and I no longer fear to hit the "update" button.

<comment><USER3> How's package management? I switched away from *BSD a decade ago because the sysadmin side was so far behind Debian (which, to be fair, was true of almost everything else) with update reliability, speed, etc. What's it like in the modern era?

<comment><USER4> FreeBSD has recently included a new binary package manager (pkg) which seems to work well enough, but in all honesty it's still feels a few years behind apt / pacman / yum.

The nice thing is how well you can mix and match ports (source based management, in case you weren't aware) with the binary packages. And FreeBSD ports are surprisingly easy to manage too.

It's also worth mentioning that FreeBSD runs circles around a lot Linux distributions when it comes to upgrading. There's a tool, literally called _freebsd-update_ , which is the equivalent of _apt-get dist-upgrade_ and makes the whole process so painless you could be forgiven for thinking you were running a rolling release OS.

<comment><USER5> > FreeBSD has recently included a new binary package manager (pkg) which seems > to work well enough, but in all honesty it's still feels a few years behind > apt / pacman / yum.

You don't expect someone to be able to write a full-featured bug-free package manager equivalent to those that have matured over a decade in under a two years do you? What't they've done so far is beyond impressive and at this pace it will be improved beyond the competition within 3 years.

<comment><USER4> I think the FreeBSD devs have done a cracking job with _pkg_ and I did comment about how it's a new package manager to give context that it's likely to be refined and improved upon with time.

All I was just trying to give a balanced opinion but it seems you can't post anything on here these days without someone finding criticism. { _sigh_ }

</comment></comment></comment></comment></comment><comment><AUTHOR> Thanks for the explanation of misdirected writes. I've heard the term before, but didn't know exactly what caused it. Reading this post was like watching one of those How Things are Made shows on the Discovery Channel. Very interesting to see how some things I take for granted actually work.

<comment><USER6> Misdirected writes are not as well known as they should be. I am happy to increase awareness of them.

</comment></comment><comment><USER7> >ZFS is operating on a system without an IOMMU (Input Output Memory Management Unit) and a malfunctioning or malicious device modifies its memory.

If a Linux system possessing an IOMMU was booted with iommu=pt as a kernel command line option, does the IOMMU still protect from this type of failure? This option puts the IOMMU into passthrough mode which is required to successfully use peripherals on some motherboards.

<comment><USER6> No. This mode was introduced specifically for virtualization so that the IOMMU will only restrict access to a guest machine's memory, such as when KVM is in use:

[http://lwn.net/Articles/329174/](http://lwn.net/Articles/329174/)

The only case in which this would help is when ZFS is on the host and a device passed through to a guest malfunctions.

</comment></comment><comment><USER8> TLDR: "its data integrity capabilities far exceed any other production filesystem available on Linux today"

</comment><comment><USER9> _" In the case that we have two mirrored disks and accept the performance penalty of the controller reading both, the controller will be able to detect differences, but has no way to determine which copy is the correct copy."_

If you 'seed' the checksum algorithm for a block with the block number being written, a subsequent read of a different block that produces the same data will have a checksum failure. That would make it possible to choose which block has the right data.

So, if you are willing to eat the performance, you can detect single misdirected writes.

<comment><USER6> When I wrote that, I was talking about hardware RAID 1, which has no checksums.

<comment><USER9> But the disks have their own checksums, haven't they?

<comment><USER6> The low level formatting has ECC, which never leaves the drive. That said, there are two cases to consider for misdirected writes. One is that the write clobbers multiple sectors in which case you would get uncorrectable sectors. The second is that it perfectly replaces another sector. In that case, the ECC is a perfect match as the ECC is stored with the sector. Neither drive would report a problem, but the data would not match. This is what I described as being a problem and traditional RAID is incapable of dealing with it.

<comment><USER9> And that is where I stated that drives can report a problem. If they 'seed' their ECC algorithm with the sector number (XOR-ing the result with it would be sufficient), they can (statistically) detect that, when they read sector #X, what they got wasn't what they ever wrote as sector #X.

In fact, I guess they already do. If they didn't, there would be misdirected reads, too.

<comment><USER6> The low level formatting does include a sector number, but it is not part of ECC. I am not sure what your point is. Your theoretical description of how hard drives could work does not reflect reality. Research by CERN and others has confirmed the existence of misdirected writes. Deployed ZFS installations are detecting corruption in situations where the drives report everything is fine. Even if the storage hardware improves, having end to end checksums in the filesystem will continue to make sense.

That said, I think you are fixating on one way that things can go wrong. Another way that misdirected writes can occur is a bit-flip in the micro- controller's memory. This also allows for misdirected reads as well as reading/writing data that has a single bit flipped. These devices micro- controllers do not have ECC memory. Even if it were added, you still need to prove that there are no programming bugs via formal verification, but given that these devices are black boxes that cannot be inspected, you cannot rely on the claim of a proof even if one is done and there would still be the possibility for errata in the micro-controller. It is far easier to just use end-to-end checksums in the filesystem. Even if you think the device is trustworthy, end-to-end checksums give you the ability to check that it is doing what it is supposed to do. You simply do not have that with traditional RAID.

</comment></comment></comment></comment></comment></comment><comment><USER10> I found the Reordering Across Flushes section really interesting. So one rule of thumb is that you should not use hardware RAID with battery backup? Are there other types of hardware that would give you the same problems?

<comment><USER11> Well, with ZFS you want to avoid hardware RAID controllers completely. The protections from ZFS only work if the filesystem doesn't have anything in between it and the actual disks. Depending on your vendor, it can actually be difficult to get a card that lets you have JBOD access to a large disk array.

The only exception that I can think of is encryption. You could wrap a disk with an encryption layer in software, but then you could still to make a separate virtual device for each disk.

<comment><USER6> A hardware RAID controller could limit ZFS' ability to provide integrity, but not enough that I would say another filesystem does a better job there. All filesystems are compromised by the failures that traditional RAID can introduce.

That said, I would never recommend a hardware RAID controller for use on any system. They add additional cost and additional failure modes, but give little in terms of benefits.

</comment></comment></comment><comment><USER12> Does anyone have a good up-to-date comparison with btrfs on this topic?

<comment><USER13> Check out the previous HN thread on ZoL:

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

<comment><USER12> Thanks that was very helpful. Seems btrfs is still a bit behind, some of it by design.

Valerie Aurora, who worked both on ZFS and btrfs seems to think the btrfs architecture is better in a few ways:

[https://lwn.net/Articles/342892/](https://lwn.net/Articles/342892/)

<comment><USER13> Thanks for the link. That was a very interesting article. Btrfs sounds very interesting.

</comment></comment></comment></comment><comment><USER14> Does ZFS on Linux support ARM? I'd like to give it a spin in Arch Linux ARM.

<comment><USER15> I like to see that too!

I worked on ARM Linux NAS system for an SOC company for a while. I think ZFS on ARM is good idea mainly because the low cost, low power CPU.

Does anyone else see such need? If so, fill out this survey:

[https://docs.google.com/forms/d/1HRt_aYmuGkyQvBp9p2Tr3-9ygXR...](https://docs.google.com/forms/d/1HRt_aYmuGkyQvBp9p2Tr3-9ygXR0YyTe2u7rtjTirOo/viewform?usp=send_form)

I am trying the lean startup method. :-) If there is < 20 people show interested in this concept, I won't spend more time on it.

<comment><USER11> Have you thought about FreeBSD for the NAS? It's a pretty common base for home-brew NAS systems. I'm not sure how the ARM support is though.

</comment></comment></comment><comment><USER16> ZFS on CoreOS anyone? [CoreOS does have btrfs support]

<comment><AUTHOR> Yes: [https://github.com/ClusterHQ/flocker/blob/zfs-on-coreos- tuto...](https://github.com/ClusterHQ/flocker/blob/zfs-on-coreos- tutorial-667/docs/experimental/zfs-on-coreos.rst)

<comment><USER17> sdf</comment></comment></comment>