Show HN: Write code using natural language - <AUTHOR> https://metacode.app <comment> TBF-RnD Okay so I came here expecring something different. Turns out that this is a stack overflow search engine.

So ever since I read a book on AI I have been pondering on when and how computers will steal our jobs.

I do have an idea on the subject though if anybody is interested in working with me on this please comment: So with github and loads and loads of other open source repos don't we have enough training data.

Couldn't throwing loads and loads of processing power on training an AI on commits create an intelligence with an "actual" understanding of day to day programming problems.

Love to discuss this please comment! Crazy idea but huge if it works!

<comment><USER3> >> Couldn't throwing loads and loads of processing power on training an AI on commits create an intelligence with an "actual" understanding of day to day programming problems.

I'm curious to know why you think it's possible to create "an intelligence" with "actual understanding" thanks to lots of processing power and data. What makes you think this is actually doable? Do you think that this has been done before, for example?

<comment> TBF-RnD Okay so seeing how a brain is made up from 86 billion neurons. 16 of those in the most recently developed cerebral cortex. Randomly creating a set of random configuration of billions of neurons and then subjecting them to simulated evolutionary evolutionary preasure on the basis of how close they come to A) the correct solution B) compiling code that runs C) tests if available* Kill of the worst performing networks. Mate the most succesful and have the offspring replace those who where not fit enough for survival.

How would it work exactly, I wouldn't know which is sort of the point. But sooner or later representations of abstractions within the code would appear within the graphs.

I get that this is not either trivial and cheap. Let alone hosting the wast amount of source code and parse it would require computing power weighing in at quite a hefty sum.

Human beings probably have the advantage of having built in functionallity that we are born with encoded in our DNA.

I suppose that a fair bit of "intelligent design" would be required. That is having coded parses that breaks down the source code into input signals that would help speed up the evolution.

Even reaching halfway there could be useful. Say by providing useful analysis, maybe warn if something seem stupid. To some extent I believe that for a natural language programming language to be viable some understanding of abstract concepts have to be present in the algorithm. That's why I don't think we'll ever program via speech recognition for example. Whenever Siri is smart enough to parse what we are trying to do, why bother with programming. Why not cut the middle man and plug her directly into Jira. but I'd love to be proven wrong regarding this though.

I am by no means saying that it would be easy or even viable within the forseable future. Thank God for that because that would means unemployment for quite a few of us.

* As I am writing this it struck me that test driven development just happens to make this easier.

<comment><USER3> >> How would it work exactly, I wouldn't know which is sort of the point. But sooner or later representations of abstractions within the code would appear within the graphs.

Sorry to be mean but all this sounds awfully confused and terribly hand-wavy. It sounds like you think that stuff would just magically work like you want it, if only you mix up enough ingredients (data, computation, neural networks, evolution, abstractions, representations, graphs...).

Well, stuff doesn't just magickally work. Lots of people (like, literally thousands) are training machine learning models and not a single model has ever come close to "understanding" anything. I'd start from trying to figure out why that is the case, and then see if something can be done about it.

Otherwise -and, sorry again, but- all these are mere time-wasting fantasies.

<comment><USER4> When op used the word "understanding", I interpreted it as some program that can provide code snippets, skeletons, or whatever abstraction in some contextual way so it's not just a dumb table lookup.

You're post is unnecessarily pessimistic and generally bad faith.

And maybe ops vision can't be realized today, but if someone is thinking beyond the current state of the art, it's short sighted and incredibly ignorant to dismiss them as time wasting fantasies.

<comment><USER3> Assuming the OP expects to gain something from this conversation, the most benefit that can be gained is from telling them why their idea makes no sense. _That_ is what "good faith" means and _that_ is what I did.

Your comment, on the other hand, seems to be confusing good faith with indulgence. Just saying "yes" to people and being nice to them does them no favours.

<comment><USER4> A discussion that makes us think about the boundaries of what is or isn't possible today is indulgence?

You failed spectacularly by your own definition of a good faith discussion by dismissing ops post as "fantasy". You give no explanation of why it is unachievable today or why it would continue to be impossible in the future.

My previous team had a member who outright dismissed ideas and criticized things for the sake of sounding intelligent without proposing solutions to further the discussion or solve the problem. We let him go.

Good luck.

<comment> TBF-RnD Thank you :D

Couldn't have written it better myself.

Maybe there is an minimal test case that could demonstrate deeper understanding. Sort of a fizz-buzz for AI, to separate the parrots from the thinkers so to speak. Food for thought. Meanwhile I am to busy on other grandiose plans to give it to much attention ATM.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> This seems more like a helpful glue between documentation and code than "write code using natural language". Nevertheless, very cool!

<comment><USER6> I was thinking more along the lines of natural language snippet creation. I think one of the key problems here remains that you go from a ~30 word (+your own identifiers) vocabulary to a English language vocabulary where you're not sure how to express something.

The example says constrain x. I wouldn't have searched for constrain, but for saturation, min-max, limit, or something along those lines. I'm not sure this will work as well if you don't use the right vocab.

</comment></comment><comment><USER7> Is there a summary in text? I don't watch videos without a reason.

<comment><AUTHOR> I wrote a comment about how it works: [https://news.ycombinator.com/item?id=19985482](https://news.ycombinator.com/item?id=19985482). Will do a short blog post sometime soon.

<comment><USER7> Thanks!

</comment></comment></comment><comment><USER8> Cool experiment. Really shows how poorly conceived/verbose Auto Layout is. The first thing I do in any iOS project is add some sort of wrapper around all that constraint nonsense.

<comment><USER9> Can you elaborate your approach? I've been making iOS apps for a decade now but auto layout and constraints scare the bajesus out of me.

<comment><AUTHOR> Of course: the app draws from a database of thousands of snippets that are cleaned up and generalized with some scripting. Natural language queries are handled like search, with semantic matching over both natural language and code structures. Content within the snippet like naming, "subject"/"target", and values are dynamic (use # to modify those values) – but it still needs work. As for auto layout, I actually have a feature for that on the roadmap but wasn't sure it was a common problem – bumping up its priority!

<comment><USER10> When GP asked for GGP to elaborate on their approach, I think they meant for GGP to discuss their wrapper around constraints.

</comment></comment></comment></comment><comment><USER11> Using NL as a macro system for quickly inserting code, instead of as a way to hide actual code, seems like a good use-case. I wish the website was more informative about how much you can do with it, how far it goes to automatically generate snippets, and what kind of language support it's planned to have.

<comment><USER12> Normally I'd be very sceptical but this just seems like a shortcut to googling the thing you need from stackoverflow and shortcuts are nice.

</comment></comment><comment><USER13> I gave it a try; love how fast and simple it is! You probably already know this, but the set of snippets are somewhat limited at the moment (though pretty good for a first launch). Also, it would probably be helpful to have more descriptions/metadata around each snippet, so that you can use some NLP goodness to make search better.

I've been working on a related idea, which is sort of a search engine for programming questions integrated into your IDE (starting with JS in VSCode). The idea is to give you fast, relevant answers (code snippets when possible), and reduce context switching to the browser to keep you in flow.

Similar in spirit though; would love to chat more! (my contact info in profile; I didn't see a way to contact you)

</comment><comment><USER14> So this seems to be more like a natural search for code components? Does anyone know if it is dynamic or using preset templates with adjustable variables?

I did a talk out in Italy[1] where I showcased an evolutionary programming language, one could take either symbolic input or fuzzy language input and it would "reduce" it to a symbolic interpretation - which would be really powerful for a non-programmer to slowly "learn" through interaction how to speak / write code more precisely.

I'd love to see other demos people have, too!

[1] [https://vimeo.com/208899228/b9bc9eaaa4#t=23m27s](https://vimeo.com/208899228/b9bc9eaaa4#t=23m27s) (re-recorded for a webcast)

</comment><comment><USER15> Wow I really like this!

My main problem when programming against mac/iOS APIs is constantly looking up how to do the little things shown in the demo video.

I don't look forward to writing macOS/iOS apps but this makes me think differently.

<comment><USER16> I think you've nailed it. Getting all the constructs right can be tough - Metacode solves that.

</comment></comment><comment><USER17> Really awesome stuff for dealing with verbose frameworks.

In the code builder demo, it strikes me that all that code in swift could be replaced with a declarative format:

      let TestVC = viewController(
         button(
           padding: { left: 5 },
           width: 100,
           height: 200
        )
      )

And probably be easier to type than these snippet demos. Has there emerged a good declarative API for iOS? As a web developer, as much as I hate the insanity of the javascript tooling ecosystem it's hard to imagine going back to the spaghetti I see with swift/iOS apps.

<comment><AUTHOR> That would be awesome! But yeah nothing like that for iOS comes to mind.

<comment><USER17> A couple of days later... SwiftUI looks.. amazing.

</comment></comment></comment><comment><USER8> More evidence that iOS really just needs a declarative UI format. Storyboards/IB are trash and doing it programmatically is fine, but slow and error-prone.

<comment><USER18> If you think it's trash it's probably that you don't know how to use them. I've been making glorious UIs in IB for half a decade.

<comment><USER8> I know how to use them just fine, thanks. Anything that cannot be viewed/compared in version control or tested easily is trash. You cannot easily collaborate on complex IB or storyboards.

</comment></comment></comment><comment><USER19> This looks pretty neat. Thought about something sort of like this awhile back but never built it out, glad to see someone's giving a try! Good luck!

</comment><comment><USER20> Cool.

For an older implementation of programming using a natural language, there's Lingua::Romana::Perligata [http://users.monash.edu/~damian/papers/HTML/Perligata.html](http://users.monash.edu/~damian/papers/HTML/Perligata.html)

Unfortunately for probably most people here, the natural language in question is Latin.

<comment><USER21>
        nexto stringum reperimentum da.                     # $next = pos $
        nextum stringo reperimento da.                      # pos $string = $next;
        inserto stringum tum unum tum duo excerpementum da. # $insert = substr($string,1,2);
        insertum stringo unum tum duo excerpemento da.      # substr($string,1,2) = $insert;
        keyis hashus nominamentum da                        # @keys = keys %hash;
        keya hashibus nominamento da                        # keys %hash = @keys;

</comment></comment><comment><USER22> Nice landing page, it made it extremely clear what your product was and how I might use it.

I'm usually skeptical about programming language abstractions but from the demo it looks like this is more of a "helpful addition" then something you need to fully commit to which is interesting. I don't do a lot of Swift but will keep this in mind if I do. Best of luck!

</comment><comment><USER23> It's actually kind of cool to watch the animation, the tool maybe can help teach people how to code in a much faster time-lapse way. I personally don't know how to code in Swift but I think I learned a lot just watching the animation and the different snippets. Maybe you can livestream your Metacode app on Twitch for a learning channel.

</comment><comment><USER24> In a tightly-scoped domain like "write code in Vue.js" it might be really cool. Looking forward to seeing how this evolves!

But just like self-driving cars, once you start expanding the scope, and only just a little bit, it doesn't look so cool anymore. I would love to see how far they can take this.

Programming in the purest sense is taking problems that real people have, expressed in their own words, and creating a logical symbolic construct that automates a sequence of interactions that pleases them. Human language is an extremely fuzzy and messy affair involving all sorts of things like body language that don't transfer to writing. Programming is not like that. These are not just different things. These are completely different domains of things.

Neat. Best of luck, guys!

<comment><USER25> I toyed with the idea that corporate business analysts (who write requirements for products then hand to developers) could just write in a different syntax and pass them to a compiler that makes:

1\. database tables

1\. API CRUD endpoints with validation / sanitation

1\. screens with input fields

Most of the corporate work I did was very similar to this. It was either a batch job, a UI screen, or an API that talks to some other service.

<comment><USER26> Isn't that what UML was supposed to be for?

<comment><USER25> did UML not work out? why not?

<comment><USER26> Many people still use UML. It will always be there to use, whether or not it "worked out".

</comment></comment></comment></comment></comment><comment><USER27> Visual Basic did something similar to Basic with drag and drop controls and writing most of the UI code for you. This seems like a command line version of same thing.

</comment><comment><USER12> I'd prefer it to be "Show HN: Communicate with humans by writing code instead of using natural language"

</comment><comment><USER28> Very cool!

Do you have any ideas for how to document the tool well?

Thank you for the smile this brought to my face :). Really imaginative and cool tool.

<comment><AUTHOR> Not yet, right now I just have a tutorial window that shows up the first time you use the code builder feature, and the videos on the home page. Open to suggestions!

</comment></comment><comment><USER29> This will just converge to some kind of lisp and then pragmatically end up as XML and then be thrown away when it is realised it is a poor imitation html.

<comment><USER30> Is all "code of code" inevitably destined for a Lisp dialect?

<comment><USER31> IMHO: There is a good chance that Lisp is pretty close to expressing "natural language" in code. I would argue that written text / prose is even a bad starting point. I'd rather think about having an UML Activity Diagram, add a way to add parameters / variables to it. Then visually imagine that you take away the full bubbles around the commands and just leave the sides. They look like brackets, right?

Now fiddle in a syntax for having parameters, maybe place them next to the text that describes what the program wants to achieve.

The next step is to define what the program or routine is actually doing, so think about step one again.

... Every time I think about a non-graphical way of writing a program as intuitive as possible I usually end up with some sort of Lisp.

EDIT: several edits for wording

<comment><USER32> (Not (I think (really that (speak we (like this))))

<comment><USER33> It's more uniform, we use other forms of punctuation in writing.

Spoken programming languages is a different can of worms.

</comment></comment></comment></comment></comment><comment><USER34> Only Swift or it can handle any language ?

<comment><AUTHOR> Yup, just Swift right now, but collecting requested languages here: [https://forms.gle/Yfgxn3yi4JHvjmD17](https://forms.gle/Yfgxn3yi4JHvjmD17)

</comment></comment><comment><USER35> Project will end when it discovers it has reinvented HyperCard.

<comment><USER10> It's a snippet program. It's not trying to reinvent anything.

</comment></comment><comment><USER36> If you want to understand why this is bad just look at AppleScript, probably the closest thing I've ever seen to natural language, the only problem is that it's impossible to just figure something out if there isn't a tutorial, because there's no real convention you can make guesses based on.

<comment><AUTHOR> Ah, interesting! The difference between Metacode and something like AppleScript is that the artifact left over from using Metacode is still the rigorous programming language you're used to. If we retain a query log, you could even convert your natural language queries into code comments alongside your code to actually improve clarity.

<comment><USER37> You're going to get a lot of comments like these because when you say 'natural language' and 'programming' or 'code' in the same sentence people think coding directly in some 'natural'-like language. Also people often don't click on the actual links and many don't necessarily watch endlessly looping video clips when they do. A little bit of verbiage on the site might help that and head off the more obvious-but-inaccurate critiques. .

</comment></comment></comment><comment><USER38> The problem with this kind of stuff is that by due to the ambiguity of natural language, it becomes more complicated to actually do this at scale.

Also, you are essentially creating another programming language that I have to learn and I don't want to learn it.

"Writing code using natural language" should mean that I can write code without having to follow any kind of format.

I should be able to say "find the smallest item in the list" and "give me the smallest element in the list" and that should work the same way. Right now these natural language programming languages are still just that - <USER2> languages.

</comment><comment><USER39> One way to look at Stackoverflow is that it's a gigantic index that maps "intuitive plain English" to "non-intuitive exact syntax".

A good exampe of bridging this mismatch is "git" commands. A lot of questions about Git are just translating natural English into the "secret decoder ring" lingo of Git.[0] E.g. _" How do I undo a commit?"_ isn't something obvious like _" git undo"_. Instead, it's the more cryptic _" git reset HEAD~"_[1]

A lot of the programming grind is like that. You _know the English words_ for what you want to accomplish but don't know the exact programming syntax to make it happen. So this app is sort of like putting Stackoverflow lookups with copy&paste _directly into the IDE_.

In contrast, the existing "insert snippets" functionality in Visual Studio[1] or IntelliJ have _abbreviations_ to help find templates of code but not quite the rich natural language of Stackoverflow. I wouldn't be surprised if future versions of those IDEs incorporate something like Metacode.

[0] so many "How to...?" in the most-upvoted questions tagged [git] : [https://stackoverflow.com/questions/tagged/git?sort=votes&pa...](https://stackoverflow.com/questions/tagged/git?sort=votes&pageSize=15)

[1] [https://stackoverflow.com/questions/927358/how-do-i-undo- the...](https://stackoverflow.com/questions/927358/how-do-i-undo-the-most- recent-local-commits-in-git)

[2] [https://docs.microsoft.com/en-us/visualstudio/ide/code- snipp...](https://docs.microsoft.com/en-us/visualstudio/ide/code- snippets?view=vs-2019)

<comment><USER40> Except languages are ambiguous. When you say you want to undo a commit, do you mean undo like pretend nothing had happened or undo but please keep track of the change.

That's why the first thing I do when I'm learning something new is to read the documentation to find out what capabilities are available.

<comment><USER41> Right away? Or when you actually need to do the thing?

When I start using anything new I really only check that it can do what I need it to, not everything that's possible.

</comment></comment></comment><comment><USER42> My "first" programming language other than BASIC as a kid was probably learning Inform to create interactive fiction with

[http://inform7.com/](http://inform7.com/)

It was a pretty complex language, and meant to use English syntax to mix both the fiction writing and the coding. So you can end up with code that looks like the following, for example

\---

"Stage is a room.

The old lady is a woman in the Stage. Understand "mother" or "stepmother" as the old lady. The old lady is active. The description of the lady is "She looks plucked: thin neck with folds of skin exposed, nose beaky, lips white. Perhaps when her fortunes are mended her cosmetics too will improve.""

\---

And it obviously gets more complex as you create things like objects with weights and inventory limits etc. My experience of it is that when it worked it was pretty magical, but when it didn't it was utterly maddening to figure out how to get it to parse.

Kinda felt like a voice help that barely works.

Best of luck with this, I like where it looks like it is going, but it simply has to be /really good/ to be value-added and not frustration-added

<comment><USER43> I'm someone who picks up new languages easy - regardless of their paradigm - and this is honestly the first time I've spent 10 minutes going through a languages documentation and still not been any wiser where to start. That is an extremely odd programming languages; fascinating too.

Kudos for actually being able to use it.

<comment><USER42> The docs are actually amazingly comprehensive, but it does have a pretty steep learning curve, especially as it is presented towards non-programmers, so you can't nec look up how to do a conditional very easily.

However, what really shines are the tremendously well documented full games. You can literally load them in Inform and play the game in one pane and walk through the code in the other.

I'm still not sure what to think of it as a language, I think now as a full- fledged programmer, I would pick an interactive fiction framework that looks a lot more like a programming language and less like fiction. However as a beautiful experiment in being able to use the English language to write a story and make it playable at the same time, it is still pretty amazing to me.

It /is/ a full-fledged language. You can implement weather or tides or magical systems or inventory systems or health points or anything else you can thing of, but it all reads pretty English-y...until it doesn't!

</comment></comment></comment><comment><USER44> Natural language is ambiguous. Grammars for computer languages are designed to remove ambiguity. A natural language that is used to program a computer, too, will have to remove ambiguity, thus only using a severely constricted subset of a natural language. Is it worth it beyond curiosity? If a person can't grok a computer language are they going to grok such a terse natural language?

<comment><USER45> Only a Subset of features of natural langage introduce ambiguities, equivocations, etc. It is perfectly doable to force one and only one meaning per keyword (just like do programming keywords already (if, while, etc), removing the ability to use coreferences, etc I would love to see a great constrained English, formal without the readability and expressivity loss of formal symbolic grammars / formal maths

<comment><USER46> >Only a Subset of features of natural langage introduce ambiguities, equivocations, et

I wish! People won't even use "literally" consistently, despite it existing to prevent you having to guess which sense a speaker means.

Edit: Toned down.

<comment><USER47> People love to pick on the intensive meaning of "literally", perhaps because it is more recent, but it's really not much different from the range of uses of "really", which also can mean both 'in fact, truly' as well as an intensifier sense like 'very'. E.g. "I was really shocked", "I was literally shocked" have similar ambiguities. Competent human speaker generally provide enough context that potential ambiguities aren't too problematic -- for other human beings, if not for machines.

Human languages are more ambiguous than you might imagine, and lexical things like 'what meaning of "literally" is the speaker using' are pretty tip-of-the- iceberg stuff. (Think about what "Every man wants to read some book" or "the girl saw the man with the binoculars" (can) mean.)

</comment></comment></comment></comment><comment><USER48> One of the things I really like about Applescript is that, at least for simple tasks, the code reads as standard english. This isn't to say you can type anything in english and Applescript will interpret it, just that the correct syntax also happens to form real sentences.

Here is how I tell QuickTime to play NPR:

      set WNYCAddress to "http://www.wnyc.org/stream/wnyc-fm939/aac.pls"
      tell application "QuickTime Player" to open URL WNYCAddress

Here is how to tell if the file you've highlighted in Finder is on a specific drive:

      set theNameOfTheDrive to "Archive"
      tell application "Finder" to set theSelectedFile to the target of the front Finder window as text
      if theSelectedFile starts with theNameOfTheDrive then log "that file is on the right drive!"

Unfortunately, it all starts to break down when you get to more complicated stuff, but in the right situations it's kind of beautiful. I wish Apple had taken it a bit further...

<comment><USER49> Wicked tongues have called AppleScript "Visual COBOL".

<comment><USER48> Are we just comparing any old-ish languages we don't like to COBOL now?

Applescript has its problems but it's one of my favorite features in macOS. Maybe not the language itself, but the Apple Events capability. There's no equivalent in Windows other than AutoHotKey type stuff.

<comment><USER49> For AppleScript, the analogy seemed apt, as both AppleScript and COBOL set out to design a syntax resembling conversational English more than a typical programming language would.

<comment><USER48> Thank you, I've never actually seen COBOL code (presumably a good thing...)</comment></comment></comment></comment></comment>


Algorithms on Khan Academy – a collaboration with Dartmouth College professors - <AUTHOR> http://cs-blog.khanacademy.org/2014/11/teaching-algorithms-on-khan-academy.html <comment><AUTHOR> I'm Pamela, from Khan Academy. I worked with Cormen and Balkcom on the curriculum over the summer, and learned a lot myself while creating it (I don't remember my uni ever talking about Big-Theta!). I hope that this curriculum will be useful for the range of people interested in algorithms, from high schoolers to engineers studying for interviews.

If you have feedback on any of the coding challenges, please click "Report a problem". The automated graders start off strict, and I adjust those based on student feedback.

If you have feedback about other parts, please email compsci-feedback at khanacademy.org or pamela @.

<comment><USER3> YES! Thanks so much for helping put this together.

I've spent a lot of time looking for valuable resources on Algorithms, Data Structures, and other CS theory concepts. CLRS was highly recommended but without a technical background, I wasn't able to dive in as quickly as I hoped. A few days ago, I purchased a copy of Algorithms Unlocked [1] which was described as a "prequel" to CLRS. This review in particular grabbed my attention: "The people who will get the most out of this book are self-taught programmers who have never taken a course in algorithms but who nevertheless need to know this material." Hopefully there isn't too much overrlap :)

BTW, the crytopgraphy & information theory units [2] also look promising.

[1] [http://www.amazon.com/Algorithms-Unlocked-Thomas-H- Cormen/dp...](http://www.amazon.com/Algorithms-Unlocked-Thomas-H- Cormen/dp/0262518805)

[2] [https://www.khanacademy.org/computing/computer- science](https://www.khanacademy.org/computing/computer-science)

<comment><AUTHOR> Yes, Cormen thinks that Algorithms Unlocked is actually a much better book for the crowd that would likely use this content. I put more links in this article at the end, with recommendations from someone who runs an Algorithms study group for mostly self-taught programmers: [https://www.khanacademy.org/computing/computer- science/algor...](https://www.khanacademy.org/computing/computer- science/algorithms/algorithms-more-learning/a/where-to-go-from-here)

The crypto one has a lot of well done videos by Brit Cruise, I've been going through that one personally myself. The info theory is also done by Brit and likely just as cool. There is no programming in either of those, though you can see how they programmed a few visualizations.

</comment></comment></comment><comment><USER4> Hey there, I'm working on an algorithms book myself: [http://www.manning.com/bhargava/](http://www.manning.com/bhargava/)

It is meant to be an easier read than CLRS, so I'm excited to see that Khan Academy is thinking along the same lines! I have been thinking about how to make algorithms easier to understand for the last year, so I have some feedback. Some of it is critical, so first I want to say how much I LOVE that Khan Academy is doing this. I really like the interactive nature of this, and I really like that you have comments. I think that's one advantage of e-books vs traditional books: you can't comment on a paper book. I like the sequencing too (it is very similar to my table of contents, which is cool to see).

What I don't like:

I don't understand why you have four sorting algorithms here. What does insertion sort add over selection sort? I chose to only include selection sort and quicksort in my book. I think once you know those two, you can figure out insertion sort and merge sort if needed. It doesn't add a lot for the reader...I would rather they spend mental effort learning something new.

Similarly, why include big-omega notation? I use a writing principle called "just-in-time" vs "just-in-case". It feels like Big-Omega notation was included "just in case" the reader needs to know it for a later section. I would rather it be taught "just-in-time", i.e. right when the reader _needs_ to know big-omega notation to proceed.

I struggled with the recursion section. My challenge was:

\- come up with a real-world example that uses recursion.

\- come up with an example where the recursive solution is more elegant than a while loop. Otherwise, why use recursion?

It looks like you had the same challenges. I wish you guys would swap out the factorial example for something that solves a real problem: looking through a directory for a file, for example.

It would be great to see more interactivity in the harder sections too. For example, in "overview of quicksort", I would like to see an animation of the sorting (I am a visual learner).

Overall this is still amazing. Algorithms are such a core topic, and there are no good resources for beginners out there. Very happy to see Khan Academy take this step.

<comment><AUTHOR> Great feedback!

I think it helps to have both the sorts there, because it gives the students another opportunity to solidify their understanding of algorithms and because they are indeed expected in things like AP CS. Personally, I find them different enough that I need to spend time on each of them to grasp them- I always have to draw algorithms out when I'm learning them, so it helped me that we had the different diagrams and visualizations for each one.

When making KA content, we have to think both about the student that's going through the content from top to bottom and the student that's "snacking" on the content, like finding it via Google search. So if you knew that a student was going to do the whole thing, you could do more just-in-time teaching - <USER2> if you didn't know, then it'd be doing a disservice to the snacker to leave out something like Big O notation, because it'd sure be strange if someone learned Theta and Omega and came away not knowing that last one existed. We did spend a while restructuring asymptotic notation in particular, that was one of the topics we debated different approaches to.

We also debated the use cases for recursion, and if we should include the classic factorial challenge. We went for it in the end, as you saw. I think recursive art is my favorite, and works well in our ProcessingJS environment, but one could argue if that's real world :-) I believe that Devin is working on another tutorial with recursion and specifically on how students can come up with their _own_ recursive algorithm. I'll suggest the looking through directory example to him.

Yep, we are working on a quick sort visualization. I am also quite a visual learner.

The neat thing about online curriculum is that we can get feedback from all the students that use it and improve it over time. We'll probably look at all the feedback in a few months, once it's been out there for a bit, see where the dropoff points are, see what the common questions are, and use that to decide what needs changing.

<comment><USER5> Just to address the recursion point that the GP brought up. Here is one of the best explanations I saw where the problem not only lends itself to a recursive solution but where the recursive solution is actually the more intuitive one rather than a loop. Also it explains with 'real-world' problems, albeit in the context of the material (game programming):

[http://inventwithpython.com/blog/2011/08/11/recursion- explai...](http://inventwithpython.com/blog/2011/08/11/recursion-explained- with-the-flood-fill-algorithm-and-zombies-and-cats/)

</comment></comment></comment><comment><USER6> Just curious, but any chance of Khan Academy adding Discrete Mathematics? Correct me if I am wrong but I don't think coursera/udemy have a course either. The only free online course I am aware of for Discrete Mathematics is MIT OCW 6.042J.

<comment><USER7> Descrete Math is so important to understand the analysis of the algorithms (esp. a new problem). However, I did not find any useful course except the one you mentioned.

<comment><USER8> Berkley's Discrete Math class is solid. Lectures on Youtube: [http://www.youtube.com/playlist?list=PL-XXv- cvA_iDTidF2dnVq_...](http://www.youtube.com/playlist?list=PL-XXv- cvA_iDTidF2dnVq_8lqoigCNSEL)

<comment><USER7> This looks latest (fall 2014). Thanks :) Will try it out, I was looking for descrete mathematics course almost 2 years back and could find only MIT one. Good to see some options now.

</comment></comment></comment></comment><comment><USER9> Just wanted to say thanks, and keep on doing the great work you're doing. KA is one of those places doing good in the world :)

</comment><comment><USER10> The editor for the exercises is based on ProcessingJS - [http://processingjs.org/](http://processingjs.org/).

</comment><comment><USER10> The interactive editor is really cool. Playing around with the drawing functions can create some cool visualisations of the algorithms.

<comment><USER11> Yeah! We have full curriculum around it, as well (Intro to JavaScript, Game development, and Natural Simulations): [https://www.khanacademy.org/computing/computer- programming](https://www.khanacademy.org/computing/computer-programming)

It uses a real-time JavaScript editing framework that we're in the process of open sourcing: [https://github.com/Khan/live- editor](https://github.com/Khan/live-editor)

A technical talk on the editor (a bit dated at this point, but most of the points still hold) can be found here: [http://ejohn.org/blog/talk-khan- academy-computer-science/](http://ejohn.org/blog/talk-khan-academy-computer- science/)

<comment><USER10> What's the difference between the editor on the course page and the one in the repo?

<comment><USER11> None - other than on the course page you can save your progress. A simple demo of the open source editor can be found here: [https://khan.github.io/live- editor/demos/simple/](https://khan.github.io/live-editor/demos/simple/)

</comment></comment></comment></comment><comment><USER12> This looks really useful!</comment>


How to Recognize a Dark Age - <AUTHOR> http://www.loper-os.org/?p=21 <comment><USER2> > Who stole the original thinkers of that era, and planted type-theoretical > bureaucrats in their place?

Once a sufficiently advanced type-theory is in place, original thought can be automated and rigorously proven at compile-time. ;-)

</comment><comment><USER3> However, there's been a lot of improvement in things that need a stable foundation, like libraries and APIs and standards (whether defacto or more official).</comment>


The Day I Learned To Love Perl - <AUTHOR> http://blog.regehr.org/archives/375

<comment><USER2> It is kind of crazy how many companies have the glue in the background written in perl. I have worked for a few large and small firms and there is always a plethora of perl scripts moving data around or loading data and if they did not exist nothing would work. Also, no one dares rewrite them because they work well, and who wants to write data manipulation in java?</comment>


What industry spends the most on R&D? - <AUTHOR> https://craft.co/reports/s-p-100-r-d <comment><USER2> It's unfair to compare industrial and consumer companies to tech companies since the demand for commodities such as energy and food will not grow nearly as fast as technology. We cannot expect an already saturated market to spend too much on Research.

</comment><comment><USER3> What's the R&D spending on healthcare administration (e.g. hospitals/clinics)? The 'healthcare' sector spends the most on R&D, but I would imagine that is almost entirely because of pharma/biotech.</comment>


Fremont and Berkeley drive tech scene growth - <AUTHOR> http://www.siliconvalley.com/michelle-quinn/ci_29830647/quinn-next-silicon-valley-fremont-and-berkeley-drive <comment><USER2> Speaking as a long-time inhabitant of Berkeley the start-up scene here is still small potatoes compared to Silicon Valley or San Francisco. Moreover, there are a number of drawbacks to doing business in Berkeley.

* Office space is in very short supply. Office space with adequate parking is even more difficult to find. This is mostly due to restrictions on building.

* Both Berkeley and Alameda County levy taxes on the gross receipts of companies, which hits tech companies that do business on global markets. [1],[2]

* The political climate is not exactly favorable to techies. A good percentage of the population is anti-growth.

There has been a fair amount of interesting technology spawned from the Cal EE/CS department over the years. Berkeley also has convenient BART connections which make it easy to reach from many locations in the Bay Area. Still, most companies move out of town fairly quickly when they achieve any sort of size. Databricks is a recent example--they started as a spin-off from Berkeley AMPLab work but are now located on Spear in San Francisco.

I suppose over time the absurd costs of doing business in San Francisco will drive more business into the East Bay as people relocate out of the city. That said it seems premature to talk about a tech boom in Berkeley. The situation seems unlikely to change soon.

[1] [http://www.acgov.org/treasurer/faqbus.htm#receipts](http://www.acgov.org/treasurer/faqbus.htm#receipts)

[2] [http://www.ci.berkeley.ca.us/ContentDisplay.aspx?id=4258](http://www.ci.berkeley.ca.us/ContentDisplay.aspx?id=4258)

<comment><USER3> We went from downtown Berkeley to downtown Oakland, and when renewing our lease and deciding how to expand, decided to stay in Oakland. Great inbetween for SF + East Bay teammates, urban area, and plenty of room to expand.

Interestingly, unless you're focusing on primarily VC-funded style growth, it's easier to get spaces near BART _outside_ of SF. We've always been within 2 blocks!

Edit: as a data point, the last ~4 Berkeley companies my colleagues started all did Berkeley->Oakland somewhere between the 3-10 person point.

<comment><USER2> I worked at Sybase starting in 1990, shortly after they moved from Berkeley to Emeryville. I don't know the full details but office space probably played a big role. At its peak Sybase was one of the largest tenants in Emeryville.

At this point I would probably go for Oakland as well, in part because of the excellent BART access.

</comment></comment></comment><comment><USER4> I worked for a well-known startup in downtown Berkeley once. They talked everyday about moving to SF because of the difficulty in hiring people. Also, one employee was paying $8,000/month for a rental house downtown.

Fremont has been Indian-ized, so it's fine to live and work there if you're Indian, otherwise it's just a long commute to nowhere.

</comment><comment><USER5> Distinctions between cities are increasingly meaningless. It's just a never ending sea of humanity and its byproducts.

<comment><USER6> I assume you're not very familiar with local politics then. A NIMBY town if there ever was one. Good luck renting out a room, yet alone starting a business.</comment></comment>


A Textbook Buffer Overflow: A Look at the FreeBSD telnetd Code - <AUTHOR> http://thexploit.com/secdev/a-textbook-buffer-overflow-a-look-at-the-freebsd-telnetd-code/

<comment><USER2> <https://twitter.com/#!/cperciva/status/150864360170983424>

</comment><comment><USER3> Ok, but no one uses telnetd, right?

<comment><USER4> > Ok, but no one uses telnetd, right?

No. Telnet is heavily used in industrial environments.

<comment><USER5> There are also a fair number of soho [wireless] routers with telnet enabled by default.

I guess that's partly due to memory footprint, or assumed memory footprint (dropbear being fairly small), by the manufacturers, and partly due to windows not having a ssh client by default, whereas every major OS comes with a telnet client.

<comment><USER6> Keep in mind that for some reason they default-disabled the telnet client on Vista and later.

</comment></comment></comment></comment><comment><USER7> Anyone know if the other BSDs share this code?

<comment><USER8> According to comments on Colin's message, all BSDs as the bug has been there for years. OpenBSD doesn't have telnetd in its base distribution (and I currently don't have access to my OpenBSD server to check on the ports).

</comment></comment><comment><USER9> How many hands are needed to count the people still using telnet for anything _remotely_? I can see embedded use in isolated LANs, but...

</comment><comment> enjoy-your-stay I hereby propose a change to memcpy to include a maxbytes parameter and an optional assert() if len exceeds it.

Might turn up a few interesting things.

<comment><USER10> memcpy's third argument is the maximum (additionally, the exact) number of bytes it will copy.</comment></comment>


Thoughts about the role of a software QA engineer on a project - <AUTHOR> http://blog.perfectial.com/development/software-qa-engineer-explained/?utm_source=social_blog&utm_medium=YCombinator&utm_campaign=WhyYouNeedQA <comment><USER2> I've worked in a large organization that had a huge QA group. QA was taken really seriously. At various times, I had both a QA role and a development role.

Then, I moved to an organization where developers were responsible for their own QA. What I found was an incredible difference in the mentality around ownership of quality.

I began to realize that, perhaps obviously, quality was owned by the QA group, almost exclusively. It wasn't uncommon for developers to find a bug, but leave it untouched because QA would file it eventually.

So, while I completely respect QA engineers (I was one!), and think it is a pretty useful mindset to have, I also have observed how negatively it can impact an organizational culture. I'd be interested to hear from others about their experiences.</comment>


Software Engineers: What was your biggest ever f*ck up? - <AUTHOR>

I just came across this story where a 'junior' engineer truncated his entire prod Users table (http://news.ycombinator.com/item?id=5292591).
Every software engineer I've ever talked to has done something that was a major disaster. Would be great to read about your fails too!<p>Also add what was your lesson learned! <comment><USER3> My biggest f'up, so far..

It happened on my third week as a junior developer on a very nice startup company - its kinda my big dream to work in a startup.

It was a friday morning and I was just starting my day at work(I was working remotely) when suddenly one of the cofounders sent out an email that our website is timing out. So I checked out out nagios to see if the website is receiving a large amount of traffic and surprisingly I can even count the number of connections using my fingers. I was a newly hire back then and our lead developer is currently flying on his way back home. My other teammate is not yet online because he is in a different timezone and it is not yet his time to work. So basically I was the only developer available at the time. When my figure out that I have no idea of what is happening, he asked me to just shut down the server so that our customers will not be able to process erroneous transactions. The website is hosted on AWS EC2 and I cannot find our Amazon login credentials(its either I was too dumb at the time or too nervous because later I found out that our lead dev gave it to us a week before) then I decided to shutdown the sever through cli, you know shutdown -h now.

Now the other developer got online and asked me what happened. I told him everything then he decided to power up the server so that he can investigate the issue. He logged in to AWS console but he cannot find the server. It turns out that the server's shutdown behavior was set to terminate. And yes, I just destroyed/deleted the server that the website is using. To cut the story short, our lead developer came online and he rebuilt a new server. But still the timing out issue is still there. He found out that it was coming from a MySQL connection and the root cause was that select statement that is very slow. And guess who wrote that query. Yeah its me. A new release was just deployed the previous day and that query was used in one of the new features. The website became operational the following day and everything came back to normal.

The next day I became emotional and was depressed the following week that I handed down my resignation because I felt like I dont deserve to work for their company. They tried to talked me out on not leaving. The lead dev even said nice things to me(that Im a good coder and even him will write the same kind of select query if it was assigned to him). But my mind was too clouded and made a very poor judgment to pursue my resignation. And here I am now stuck on a corporate job trying to figure things out and getting my shit back together hoping someday I can work in a startup again and not f'up.

<comment><USER4> Sorry to hear that, don't be so hard on yourself in the future. This is hard work (even if it is fun). As a post-mortem you did one thing right and one thing wrong.

What you did right: You accepted responsibility. Good, this is a hard trait to find. The "perfect" engineer mixes equal parts intellegence and humility.

What you did wrong: You didn't trust your team. They were all very supportive of you, but you didn't trust their assesment of you.

Trust your team; trust yourself. Have confidence in your ability to learn from your mistakes.

You'll do fine. Start looking for another start-up job while working at a corp.

The best time to find a new job, is when you already have one.

</comment></comment><comment><USER5> My first "real job" was at a company that developed equipment for radiological surveys for decommissioning efforts, and after a short time was given the responsibility to develop a VB5/6 application that turned out to make a lot of money and gain a lot of favor contract-wise. A few months in, I was tasked to our largest project (and the largest decommissioning project in the US), and traveled back and forth each week.

As someone on the go, I thought it was a good idea to keep the source code for that app on my flash drive (there was no Github back then). For 6 months I worked directly on that flash drive, adding new features to support the large project, and expanding the abilities of the application to gain us even more favor. One day, I plugged in the flash drive and Windows gave the warning that it was corrupt and needed to be formatted. Immediately my heart sank, and the drive was indeed dead. My last backup was about 3 months old, and didn't even include some resources like icons and graphics.

Long story short, I had to sit there for weeks and re-code everything I'd lost, using the latest release as a reference to what was missing. On the plus side, my design was probably better the second time around, but nobody was pleased that any new releases would be delayed a month at least.

I now keep that flash drive, still in its corrupt state, as a permanent fixture on all the desks I've worked at since. It's a constant reminder to not be stupid when it comes to time-expensive intellectual property.

</comment><comment><USER6> Ops story:

I worked at a data centre which had an IP KVM attached to all of their machines. When you were logged in as 'admin', there was a mode you could toggle that would send all of your keystrokes to every server, but still only displayed the one you were logged into, so there was no (clear?) visual indication that this was going to happen. Coworker hit Ctrl-Alt-Del to reboot a stuck server, and rebooted every non-Windows server in the data centre (and we only had one Windows server).

Every customer got some level of compensation, the noisy ones got a lot of it, and no one ever logged in as admin again other than to relabel servers in the server list.

</comment><comment><USER7> This will show my age but ... as a junior developer, I was responsible for generating the 'gold' floppy disk set for our application. The second disk of five held hundreds of small report template files, and without a post-disk build defrag the install process for the second disk took a couple of hours instead of a few minutes. For one release - you guessed it - I forgot the defrag on the second disk. I passed the disks to another guy for a test install, and later on in the day he test-passed the install set and send it on for duplication. Hundreds of floppy-disk sets were sent out to clients later that week, and then we started getting many irate phone calls about the slow install process. Turns out the testing guy had missed the slow install rate because he inserted the second disk, then went out to lunch for a couple of hours, and assumed everything had completed quickly when he returned. Lesson learned - have a written checklist for generating installs / deployment (we didn't at that stage).

</comment><comment><USER8> When defining our initial data schema, we forgot to put a unique constraint on user email addresses. There ended up being quite a few duplicates, so before we added the constraint I had to write a query to remove the duplicate users. About 2/3 of our users didn't have an email listed, and my query failed to take that into account, so it wiped out all but one of those users.

<comment><USER5> I have also done this exact thing. Luckily, it was on a development database, so nobody ever had to know! Easy mistake to make, for sure.

</comment></comment><comment><AUTHOR> My biggest f*ck up:

When I worked for a financial institution my manager gave me a production level username and password to help me get through the mounds of red tape which usually prevented any real work from getting done. We were idealists at the time. Well I ended up typing that password wrong, more than 3 times...shit, I locked the account. Apparently half of production's apps were using this same account to access various parts of the network. Essentially, I brought down half our infrastructure in one afternoon.

Lesson learned:

Don't use the same account for half your production apps. Not really my fault :).

</comment><comment><USER9> I've had my share of SQL messes but nothing critical (thankfully!). Probably the worst as far as effect goes was a while back in a low paying dev job. I was under immense pressure to fix some thumbnails for an e-commerce site (as in, if this isn't done in 10 minutes, get your coat and get out). The shop I worked for was getting pressure from the client as they'd put it off for weeks at that point.

So.. I write a quick script to resize the master images and re-generate around 2,000 thumbnails. Except... I copy/paste the source path to destination - <USER2> I mistype 200px width as 20. Now we have a whole site with long thin product images and no originals to recover from! As in the linked story, no backups were in place and all work was done on production. Lost a weeks wages over that, and had to manually re-add everything from a stack of CD's :)

Lesson learned? Don't let pressure force you into making bad decisions. I knew I really shouldn't be doing that but I was young & foolish.

</comment><comment><USER10> I work at with a medical office management company. We handle the billing, training, hiring, and IT for various medical offices in the area. Included in the IT portion where I am, is the hub of the electronic medical records. One day while working on a new web application to tie into the EMR system I was fiddling with some SQL. After confirming I was logged into the development database I ran some select statements. I moved to a new query window in SQL Server Management Studio and ran a delete statement on a large (100,000,000+ records) table. I forgot to include a where clause so the entire table was wiped. Which was no big deal because it was the development database and it'd be restored in the overnight copy, except that the 2nd query window was connected to the production database. Oops.

<comment><USER11> As someone who works in the same industry, doing the same type of work, I cringed hard. I hope you were able to save your ass.

<comment><USER10> Fortunately it happened early in the morning. So the previous nights copy on the development server was close enough that it could be pushed back to live while causing only very minor issues.

What EMR system do you deal with?

<comment><USER11> A very very small one that I'm too ashamed to mention :) it's mostly medical billing though.

<comment><USER10> I hope they have better security than the one I use <http://www.jcurcio.com/posts/obscurity-is-not-security/>

<comment><USER11> Haha, a little bit better than that.

</comment></comment></comment></comment></comment></comment><comment><USER12> \- We got a brand new shiny Xbox devkit (one of the silver ones, only one in the studio), I plugged it in..BOOM!...oh it's a American devkit and I plugged it into a British power socket...ooopss..

\- Doing a port of PS2 -> Gamecube, one guy asks me 'do we need this assert?' I go 'nah it'll be fine'...cue a month later when we have a intermittent soak crash after several hours which I find out would have been caught instantly by the assert I said was ok to remove...took some time to find :/

</comment><comment><USER13> I was under the gun for some client facing deadline and I had a crash so I had to rebuild my system. We had registration for our software and nobody was around to give me a key, so I commented out the authentication and call home (not normally in my part of the source tree) then promptly finished my work and committed the whole thing... got caught at the last round of QA fortunately.

</comment><comment><USER14> I managed to code a pretty bad bug that went out and stopped a key module working on a piece of software.

Funny thing is, it got through a code review my own personal testing and QA testing.

Once the problem came to light it was a very obvious quick fix though.

</comment><comment><USER15> Spent 2 hours trying to fix a bug in the wrong place. I was getting syntax errors, because I typed fi instead of if, and I didn't even realise I typoed it.

</comment><comment><USER16> rm -rf / some/specific/path

<comment><USER17> I ran chmod like that as root.

</comment></comment><comment><USER18> I wouldn't call this a disaster, but: Coding a somewhat complex embedded application entirely in assembler when it should have been done in C from the start. I knew better, but I got going on the project in assembler and didn't stop.

At first maintaining and expanding functionality was not too hard. As time went by it became harder and harder.

The fix was to stop everything about a couple of years after the product was already shipping and take three months to re-write it in C. After that adding feature requests and improving functionality was an absolute breeze.</comment>


Tim Berners-Lee: we must regulate tech firms to prevent 'weaponised' web - <AUTHOR> https://www.theguardian.com/technology/2018/mar/11/tim-berners-lee-tech-companies-regulations <comment><USER2> FTA: "These problems have proliferated because of the concentration of power in the hands of a few platforms – including Facebook, Google, and Twitter – which "control which ideas and opinions are seen and shared"."

They are indeed very active in removing ideas and opinions which are deemed unsavory. A recent example in from our neighbour country, Sweden.

"Google is facing criticism in Sweden for its failure to prevent anti-Semitic material from topping searches featuring the term "Jews in Sweden."" [https://www.timesofisrael.com/swedish-jews-complain- google-s...](https://www.timesofisrael.com/swedish-jews-complain-google- searches-returning-anti-semitic-results/)

"Journalist Willy Silberstein, editor-in-chief Helle Klein and former TV4 CEO Jan Scherman are some Swedish Jews who are on an anti-Semitic list online. Their legal representative has reported the list to Google for more than a month that it should not appear in search results by their name. Only now – after Expressen and DN's audits – Google starts backing and promises to remove 24 people from the list from their search results." [https://tech2.org/sweden/google-starts-backing-after- critici...](https://tech2.org/sweden/google-starts-backing-after-criticism-of- anti-semitic-hatlist-news/)

I think the above serves well to illustrate the issue of weaponizing the web. The nazis are using the web as a weapon to list celebrity jews. The jews on the list are using the web as a weapon to wield power over Google's decisions and actions. Google is the weapon used by all the groups involved.

<comment><USER3> I wonder how long until governments start "google search result page 1" wars against each other (though I think China would have a running start in this one). Country X demands google can't show results about Country Y anywhere and Country Y demands google push results to page 1 that make Country X look bad.

<comment><USER2> Google itself is a player in this war since the search results for Country X when inside Country Y is different than when searching for Country X inside Country X. (aka "localized results")

I would be surprised if this capability is not already weaponized by CIA in the attempts to win hearts and minds of countries being liberated.

</comment></comment></comment><comment><USER4> Does anyone care about his opinions on this kind of thing? He fought to put DRM into every browser, you can't come back from such a poor political move.

<comment><USER3> You shouldn't evaluate the validity of an argument based on where it comes from, rather, evaluate it on it's own merits.

So yes, I do care what he says because it is relevant to my interests.

<comment><USER4> "You shouldn't evaluate the validity of an argument based on where it comes from"

Then why is his name is in the title? He's not the first person to make these points. The only reason The Guardian has to publish this over the thousands of other sources of the same opinion is his name. That was my only point. I didn't even read the article because I already disagree with the premise, give more control to the wrong people, just like with DRM. Regulations become legal "weapons" just as often as they actually help society. When they do, its usually the existing big companies that can A) afford to comply and B) know how to exploit the regulations to burden their competitors.

<comment><USER3> >Then why is his name is in the title? He's not the first person to make these points. The only reason The Guardian has to publish this over the thousands of other sources of the same opinion is his name. That was my only point.

And? It's not a very solid point tbh. "Other people said it too" isn't an argument against anything.

> I didn't even read the article because I already disagree with the premise, > give more control to the wrong people, just like with DRM. Regulations > become legal "weapons" just as often as they actually help society. When > they do, its usually the existing big companies that can A) afford to comply > and B) know how to exploit the regulations to burden their competitors.

You see, _that_ is an actual argument against the premise of the article. Or atleast the title since you skimmed over the contents. Though I disagree that regulation will make things worse considering how bad things already are.</comment></comment></comment></comment>


A new Netflix show wants to manipulate people into committing murder - <AUTHOR> https://www.theverge.com/2018/2/20/17032706/netflix-push-derren-brown-milgram-murder <comment><USER2> It sounds horrendous, but I suspect that the reality is... it will be essentially fake. There's no way this went past a legal department if it is as advertised, but as the usual "reality" bullshit? Sure.

<comment><USER3> It's Derren Brown, of course it's fake.

Plus he already did something very similar to this two years ago - [http://www.independent.co.uk/arts- entertainment/tv/news/derr...](http://www.independent.co.uk/arts- entertainment/tv/news/derren-brown-pushed-to-the-edge-magician-pushes-man-to- the-edge-of-murder-in-new-show-a6803146.html)

<comment><USER2> Good lord, what a monumental tool! ...and he's a magician?! I thought that guy who called sitting in a block of ice for days "Magic" was sad, but this is a whole new scale of wtf.</comment></comment></comment>


Ask HN: How can YouTube be improved? - <AUTHOR>

<comment><USER2> Not sure if this has any practical use, but it would be interesting to tie user comments to a specific time in the video so that you can see comments about specific parts of the video. For example, instead of watching a video, then scrolling down to read a user comment like "watch the blooper at 3:57", you could have a ticker below the video where "watch the booper" popped up at 3:57. I know the video author can add annotations, but users can't.

</comment><comment><USER3> YouTube is nearly perfect for watching a video. That's what it's _really_ good at. Not a lot of room for improvement on that.

The biggest unsolved problem is discovering good content. I would probably watch a lot more stuff on YouTube if I knew it existed. As is I usually learn about interesting content or producers from external sources. Making YouTube a better destination could turn it into something twice as amazing as it already is.

</comment><comment><USER4> My biggest grief with YouTube currently is, that I still need to have Flash enabled in order to watch ad-powered videos.

</comment><comment><USER5> Can't stand the new update not letting me middle click videos to open in new tabs.

Also a way to block accounts would be great so I don't see "John1" "JohnsGames" "JohnsIphoneVideos" "JohnsTuesdayRants" covering the Browse page.

</comment><comment><USER6> Two things I'm hoping for - a $3-5/mo ad-free subscription, and better playlist/favorites management.

</comment><comment><USER7> RSS Feeds so that you can subscribe to a channel as a Podcast in iTunes.</comment>


Why Macs Cost More - <AUTHOR> http://www.bazingajournal.com/2011/06/why-macs-cost-more.html <comment><USER2> >Apple's computing hardware, and the software development behind OS X, actually cost more to manufacture.

Does Apple really spend more on software development than Microsoft? It's slightly plausible that they spend more on items specifically related to home users and designers, but overall?

This link: [http://www.tuaw.com/2008/11/07/apple-adds-staff-boosts- randd...](http://www.tuaw.com/2008/11/07/apple-adds-staff-boosts-randd- spending-in-fy2008/) has Apple spending a little more than $1B on overall R&D, and this one: [http://blog.seattlepi.com/microsoft/2008/08/04/charts- micros...](http://blog.seattlepi.com/microsoft/2008/08/04/charts-microsoft- randd-spending-hits-new-high/) has MS spending about $8B.

<comment><USER3> Microsoft Isnt producing the computers though which apple does so you have to compare the software cost to that of say HP:s software cost.

<comment><USER4> But HP doesn't make their own PC operating system (yet).</comment></comment></comment>


Is Firefox the New Internet Explorer? - <AUTHOR> http://sirdg.com/2011/02/is-firefox-the-new-internet-explorer/

<comment><USER2> I may get downvoted for this, but I stop reading _anything_ when I see the author can't differentiate between "lose" and "loose". Normally I'm somewhat forgiving on spelling, but that particular one has become a pet peeve of mine because it's SUCH a common mistake these days and SO easy to learn not to do -- it reeks of laziness. In my mind if you don't know how to spell an extremely common, short word like "lose" your arguments are unlikely to be convincing. I realize that's a bit of an argumentum-ad-hominem fallacy itself (because your spelling has nothing to do with your argument), but to me a writer who misspells "lose" is like a singer who sings off-key.

</comment><comment><USER3> Sadly, Chrome has started not closing properly on me. It starts with tabs not closing unless I close them twice. Then if I quit Chrome, the window disappears but the process is still running and I have to force quit. Most up- to-date 9.0.597.102 build on OS X. Sigh.

</comment><comment><USER4> I think the actual cause of these problems is Adobe Flash. It's the main reason that browsers crash on my machine.</comment>


Hack your Own Web Project ? SQL Injection - <AUTHOR> http://9lessons.blogspot.com/2008/12/sql-injection.html SQL Injection <comment><USER2> another reason not to use sql</comment>


The network nonsense of Albert-László Barabási - <AUTHOR> https://liorpachter.wordpress.com/2014/02/10/the-network-nonsense-of-albert-laszlo-barabasi/ <comment><USER2> I work in a lab that directly competes with Barabási.

Barabási is seen as a mortal enemy and we try to discredit his work as often as possible, just as this article does.

But the truth is, the whole field is pretty much nonsense.

We try to apply network theory in a way which doesn't really apply. We make assumptions about biology that are trivially false. Any statistical results that reach significance fail to be significant on retesting. Any results which continue to be significant do not match the experimental data.

This field has not yet proven anything of true biological value.

<comment><USER3> How about Vespignani's result on epidemic thresholds?

[http://works.bepress.com/avespignani/13/](http://works.bepress.com/avespignani/13/)

<comment><USER4> You may have meant to cite [http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.86....](http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.86.3200), and for a discussion about that paper see this by Robert May [http://www.sciencemag.org/content/292/5520/1316](http://www.sciencemag.org/content/292/5520/1316)

What other papers do you consider to be hallmarks of the success of network science from the stat. phys. point of view? The largest critique from non- stat. phys. researchers is that context seems more important than network topology in most applications. Indeed it is important to understand why there is degree heterogeneity. Without understanding the technology surrounding the network however you can not only make incorrect predictions, instead you might be predicting the opposite of reality. [http://discovermagazine.com/2007/nov/this-man-wants-to- contr...](http://discovermagazine.com/2007/nov/this-man-wants-to-control-the- internet)

</comment></comment></comment><comment><USER5> I studied graph theory heavily in undergrad, started working in a genetics lab, and spent ~7 years in a bioinformatics PhD program focusing on biological networks. Barabasi was, at one time, the brightest contemporary star in my scientific pantheon.

Suffice to say, his publications (and most biological applications of network theory) are fairly meaningless beyond advancing careers. It's a case of cool sounding math that is misused and every PI wants to show that their tiny area of study is also scale-free/subject to cool network effects and therefore worthy of a publication pointing this out. The math is incredibly shoddy all around, and I was burned on several occasions by sticking up for actual scientific principles and pointing out when the math contradicted the assumptions they were trying to prove.

As an aside - this is my main distinction between Research and Science. Researchers do an excellent job of confirming their hypotheses via whatever model they can lay their hands on. Scientists falsify their hypotheses until no suitable model is left. I've met a lot of Researchers in my experience but couldn't truthfully tell you a true Scientist since the system discourages their existence.

Anyway, my advisor wanted me to SCALE-FREE ALL THE THINGS. The way that everyone gets a power-law in their system is (1) plot their system on a log axis, (2) do a linear fit, (3) voila the slope of the linear approximation is now the exponent of your scale-free power law system, no need to apply any statistical tests to show that your original system is actually exponential! And if you did want to take that extra step, just fiddle with the data until it does fit within your chosen margin of error.

</comment><comment><USER6> I know several acclaimed mathematicians who have little stake in the arguments between network scientists, but who all seem to think that Barabasi's work is extremely low on good ideas.

I am inclined to believe that two decades from now, 'complex network research' will be in a much better state, and there'll be less room for the likes of Barabasi.

</comment><comment><USER7> "Mathematics and the Internet: A Source of Enormous Confusion and Great Potential" [http://www.ams.org/notices/200905/tx090500586p.pdf](http://www.ams.org/notices/200905/tx090500586p.pdf) Is critical of scale-free networks of the preferential-attachment type, in particular of Barabasi's work. The paper is unusual for its polemic tone and for its name dropping. Researchers will trash each other in private--it is unusual to see this in print.

Much of the article is consumed with invidious comparisons of scale-free, preferential attachment network models of the internet with the authors' own HOT ("highly organized/optimized tolerances/tradeoffs") models: "In view of such a simple physical explanation of the origins of node degree variability in the Internet's router-level topology, Stogartz' question, paraphrasing Shakespeare's Macbeth, '…power law scaling, full of sound and fury, signifying nothing?' has a resounding affirmative answer." The authors seem to suggest by this literary reference that a scale-invariant model of the Internet is a "tale told by an idiot." This would not be lost on the readership of the Notices of the American Mathematical Society.

Its authors spare no opportunity to criticize their competition, as well as mathematicians and physicists generally, whom they regard as foppish, insular ivory tower aesthetes, whose nostrils are unacquainted with the bracing scent of an expertly soldered electrical connection.

Despite all of that, the authors are correct. I mention Doyle _et al._ because other authors have been critical of work on scale-free networks--this is not new. Doyle _et al._ warned about the misapplication of such networks to biology, though they mysteriously claimed that such failures of the scientific method "would reflect poorly on mathematics," as if mathematicians ought to be held responsible.

</comment><comment><USER8> What I found more interesting than Pachter's analysis of the specific failings of the Barzel-Barabási paper is the more general implications for our scientific process. I have two parallel trains of thought:

1) We all know that we have scientific "celebrities" and that their work is often over-represented in high-quality journals (while dissenting viewpoints are often suppressed). There is nothing wrong with critizing the work of the celebrity du jour (or in this case, maybe, du décennie), but framing is everything and you will find more success in your scientific career with constructive and respectful criticism without resorting to ad hominem attacks such as "the emperor has no clothes". No one benefits from a bloody cage match.

2) Network science (like many interdisciplinary fields) has problems because many of its practitioners lack extensive knowledge of the systems, experimental challenges and core research methodologies of the fields or contexts to which they apply their developments. Success in such interdisciplinary fields is often incentivized and measured in a very narrow way and not associated with the primary goal of science -- useful and meaningful advances in our collective body of knowledge. You want to be at the top of your field, but presumably (or hopefully) you have more noble aspirations -- you want your work to have real meaning. But this lofty goal is challenged by the rapidly growing body of scientific work and the fracturing of science into siloed sub-fields. For example, finding the right set of peer reviewers for an interdisciplinary submission becomes increasingly challenging. Consequently, mistakes will be made, missed in the peer review process, and published. Dissenting opinions and followup work need to be given equal representation.

</comment><comment><USER3> A case of so-called envy. The scale-free networks are nearly trivial and about as common as power law instances.

Barabási's works were the reason I entered science.

<comment><USER9> If there are more like you -- more people working in scientific fields because of Barabási -- then you people are the only real contribution he's made. His "works" are handwaving and gibberish.

<comment><USER3> The entire field of modern epidemiology depends on his results.

<comment><USER9> This is almost comedically incorrect. The only reason I can think of for someone to claim this is for entertainment.</comment></comment></comment></comment>


Houston and Rice University announce new innovation hub in historic Sears - <AUTHOR> https://www.houstonpublicmedia.org/articles/news/local/2018/04/12/278818/watch-live-houston-mayor-and-rice-university-president-announce-new-houston-innovation-hub/ <comment><AUTHOR> Here's the press release from my alma mater:

[https://engineering.rice.edu/news/rice-helps-anchor- houston-...](https://engineering.rice.edu/news/rice-helps-anchor-houston- innovation-district)</comment>


Notes on a tour of an Amazon distribution facility (2014) - <AUTHOR> https://docs.google.com/document/d/1F12fyVF0PO2fSmkOI2_R1IFigTaznaertxiVXlEbas4/edit <comment><USER2> That's a old manual Amazon facility. The newer ones use Kiva robots to bring the shelving units to the pickers, rather than the pickers going to the shelving units.

The manual system isn't that different from the Sears "schedule system" introduced in 1908.[1] Note the line "pickers don't necessarily pick items for a single or even complete order." That's crucial. Orders are split apart and combined pick lists generated. Picked items then flow towards order assembly stations, which Amazon calls "sort". At any one time, some maximum number of orders are in progress, limited by the number of output boxes at order assembly. Amazon does this with computers; Sears did it with clerks and pick slips, with Sears giving each order an assembly bin for a fixed number of minutes.

Separating picking from order assembly and inserting a sort phase reduces the order of the problem. Picking N orders from M items individually means O(N × M) cost, because as inventory becomes larger, the pickers travel more distance. With separate picking and assembly, performance is something like O(log(M) × N) cost, because each picker works in a limited area. That was Sears' big breakthrough.

[1] [https://news.google.com/newspapers?nid=1734&dat=19721006&id=...](https://news.google.com/newspapers?nid=1734&dat=19721006&id=bXkcAAAAIBAJ&sjid=AVIEAAAAIBAJ&pg=3170,3159101&hl=en)

<comment><USER3> By the way, wouldn't segways bringing people to the shelves have to expend less energy and be more efficient than kiva robots bringing shelves to the people?

<comment><USER4> Hmm.. don't know why asking a question deserves a downvote.

I think you're right that it would be more energy efficient -- since a human weighs less than a rack full of goods.

But energy, compared to the other costs, is a fairly small component of costs.

The bigger question is whether a person is cheaper than a machine.

A few years ago before Amazon bought Kiva, they would sell a complete setup for a large warehouse for $15-20m for 1000 robots. This included a lot of setup, but even if we assume it's just 20m/1000 robots = $20,000 each.

So for $20,000 you can get a robot that will work 24/7 for a few years. Lets pretend the kiva robots are completely junk after 3 years. That's under $7000/yr.

Obviously, that's going to be tough to beat with a human. But for comparison, lets assume a person gets paid federal minimum wage ($7.25/hr), there's no overhead, no management, healthcare, never gets sick, etc. That equals $15000/year. But that's only for 40 hours a week x 52 weeks/year. So really, we'll need 3 people.. so $45000/year. (EDIT: I forgot about weekends, which is another 48 hours. So really, we need 4 people, or $60,000/year.)

Considering that humans are so much more expensive than a kiva robot, the increased energy compared to segways doesn't really effect the outcome. It's clearly cheaper to use robots and simply pay for the increased energy usage.

</comment></comment></comment><comment><USER5> Despite popular belief, most Amazon facilities do NOT use kiva robots. The fulfillment center would have to be completely rebuilt on the inside to accommodate them. Heck, even some new facilities still don't use them. I work over at Amazon in one of their largest fulfillment centers in the USA. To answer your question regarding where a tote is sent in the facility is simple. During each shift, there are any number of queues open (usually about 5). When receiving an item from DA, we will scan an item into a tote and the computer determines, based on the size of the items, where in the facility it needs to go (library, or library deep). Aside from a few exceptions, most items are randomly stowed. The stowers all have a rate, and because of that, will find whatever space fits their needs. Pallet mass (items with a lot of the same quantity to fill a pallet) is checked regularly and pulled from the regular shelves and sent to a sorting area (at least that's what they started doing at my FC) where it can be stowed somewhere in "pallet land." Try not to think too much into where items are stowed, it is pretty much a clusterf*ck across the FC.

<comment><USER6> How does the work for stowers is arranged ? do the computer give them specific sets of items to stow ? or is arranged according to the order the goods arrive ?

And what is this pallet land ? what's the benefit?

<comment><USER5> Work is arranged by what truck is being processed, we attempt to follow FIFO as much as possible. Queues are determined, to the best of my knowledge, by which area of the FC has the most space (but they probably do it arbitrarily, I'm not in charge of any of that, so I don't really know their method). When a truck is being received, all cartons will be placed inside totes (or "juice carts") and sent up to the queues (there's usually only a couple queues that are "dropping" totes). Stowers are advised to take the totes, which are placed on u-boats, by using the FIFO method. Stowers are not given specific sets of items to stow; they only stow what's given to them.

Pallet land is the part of the FC for products we carry in large quantities (i.e. enough to fill a pallet, quarter pallet, or half pallet). Pallet land is just a nickname we give part of the pallet area. We also have a 3-story rack area full of pallets (at my FC). Some items we have on pallets include some Starbucks, Sonicare, and Darth Vader costumes (omg we have so many).

</comment></comment></comment><comment><USER7> The thing I took away from this was mistake minimization. As shipping the wrong item likely results in a mess of expensive actions down the road, it is much much better to make sure that the right item is shipped the first time. To this end they are willing to shuffle their entire warehouse just to prevent similar items from being set next to each other.

<comment><USER6> I don't think it's really random.Since it's dictated by the computer, even though it looks random, i'm sure there are some patterns in the order(for example there are items that statistically sell together) ,But maybe they keep it as a trade secret , only to be known by a small group of developers and managers.

<comment><USER8> To quote Lunarsm below:

> Aside from a few exceptions, most items are randomly stowed. The stowers all > have a rate, and because of that, will find whatever space fits their needs.

</comment></comment></comment><comment><USER8> This is a pretty great description (disclosure: I currently work at Amazon writing software used inside the Fulfilment Centers). I think an important point is there is big variance between facilities throughout the network. For instance, the use of Kiva robots as mentioned by others here. Meaning if you were to go on tours of other facilities you would definitely see new things at each (and of course many similarities).

</comment><comment><USER9> As I read through the notes, the one thing I really liked was the 4 day work week. Three days off just makes sense? I belonged to a union, and we had the opportunity to work 4 10hr. days, and the members voted it down. I still don't know why they voted it down.

<comment><USER10> I worked in a wafer fab for a summer and we did four 12 hour days and then three days off. And then three days of work and four off.

It was by far one of my favorite schedules. I rode my bike to work and that was about 45 minutes each way and when you add in the time it takes to get ready for work it was nice to only have to do that 50% of my days. And with four day breaks I was able to really get into projects or go camping for a long time.

</comment></comment><comment><USER11> All, thanks so much for the comments. We wrote this up so long ago; it's really interesting to get feedback now.

FWIW, The Infrastructure Observatory is working on more tours like this one, mostly in the NYC area. If you want to get involved (or have an idea for a tour that we should organize), get in touch at [http://infraobservatory.com](http://infraobservatory.com) or @NYInfraObserve on Twitter.

-Spencer

</comment><comment><USER12> Vaguely interesting, as I suppose a similar tour of, say, a Wal-mart or FedEx logistics center might be.

Bonus quote: "Our tour guide used an iPhone, but claimed he'd use a Fire if he wasn't locked into his carrier."

</comment><comment><USER13> Does anyone know any good resources/ books on the logistics of setting up and running a fulfillment/distribution facility with the latest tech?

</comment><comment><USER14> Pretty cool stuff

I wished they would add a diagram, even if it's just hand-drawn. It's would have been much easier to visualize, especially the detailed parts.

Also the naming is sometimes inconsistent across the different authors. e.g. Sometimes folks are called "associates", sometimes "sorters". It got confusing quickly. Would be nice if the naming was clearer

<comment><USER15> On a side note, there are languages such as French where repeating a word is a proof of bad style (and possibly lack of culture from the author), and others like Swedish (e.g. the Millenium books) where repeating is an appeasing regularity.

<comment><USER16> British English at least is in the "don't repeat" group.

</comment></comment></comment><comment><USER17> He doesn't specify exactly how cubbies are selected at the "inbound" stage, beyond saying it's random. I assume it's left up to the associate's own whims and judgements? I imagine the "no identical items in adjacent cubbies" rule improves the potential for picking the same item in parallel while preventing too much concentration, improving availability from different locations. I wonder what other constraints they are given for this stage.

<comment><USER5> It is indeed quite random. Each stower has a rate, and in order for us to make that rate, we can stow in almost any bin. Some other constraints include using the smallest bin possible for each item and not stowing heavy items up high (the scanner restricts stowing "heavy" items up top).

</comment></comment><comment><USER18> PDF @ [https://docs.google.com/document/export?0=mp&1=ws&2=print&3=...](https://docs.google.com/document/export?0=mp&1=ws&2=print&3=1&format=pdf&id=1F12fyVF0PO2fSmkOI2_R1IFigTaznaertxiVXlEbas4)

</comment><comment><USER19> Looks like initial notes for an IE Analysis. Pretty good for retrospective.

</comment><comment><USER20> I have no skin in this game and really don't know much about what is going on, but really appreciated that rundown. I've always wanted to know what goes on inside these places.

</comment><comment><USER21> And something unrelated I've learnt about Google Docs:

"Wow, this file is really popular! Some tools might be unavailable until the crowd clears."

<comment><USER12> Yep that was interesting. I am part of a Google Apps trial at work, but we don't have the resources to stress test it so I have never seen it under large simultaneous load (seemed to handle it fairly well though).</comment></comment>


Why I Gave Up Making a Twitter Bot After a Week of Trying - gdad-s-river https://hashnode.com/post/why-i-gave-up-making-a-twitter-bot-after-a-week-of-trying-cjirrbms0006zh5s1s5p7zfam <comment><AUTHOR> > Twitter flagging and spamming systems continuously kept thinking that > because I was tweeting so frequently I must have been a spammy bot. Which is > really shitty developer experience! Twitter should enable a dev container > mode for utilising its API

Heh,I had a terrible experience with the twitter api too but that's why you develop on one account and deploy with a different account. If the api limit is 100 requeste per hour make sure to limit to a paranoid limit like 40-60. Use multiple accounts if you can and need to.

Twitter uses automated spam bot detection and you'll never talk to a human for an unban. This is one of those things where you walk around the mountain instead of climb over it. Their api isn't fun but you can do useful stuff with it if you accept the limits.

Hope the author tries again :)</comment>


Internet of Things (IoT) Gaming Revolution - <AUTHOR> http://sabertron.com/iot-gaming-revolution/

<comment><USER2> Whats wrong with the scroll on this site?</comment>


YouTube - 'Work on stuff that matters.' -Tim O'Reilly (2 PARTS) - <AUTHOR> http://www.youtube.com/watch?v=Hc7Z5gmwXOg <comment><USER2> Filmed in the manner of Bourne Ultimatum. They seriously need a steady-cam.

Other than that, it was interesting. Although it was mainly a recap of this: [http://radar.oreilly.com/2009/01/work-on-stuff-that- matters-...](http://radar.oreilly.com/2009/01/work-on-stuff-that-matters- fir.html)</comment>


Google outlines plans for mainline Linux kernel support in Android - <AUTHOR> https://arstechnica.com/gadgets/2019/11/google-outlines-plans-for-mainline-linux-kernel-support-in-android/ <comment><USER2> 1\. Has Android's fork of Linux proven to be necessary? Linux already supported an RTOS/low-power kernel config at the time of Android's inception

2\. Is it time to discard backward compatibility and transition to a mainline kernel for future versions of Android? Apple does this every few years, with great technical and user success without much of an uproar

3\. Is it time for kernel devs to acknowledge the reality on closed source drivers, and standardize an interface in the mainline kernel for the same. Those who want to open source can, but those who don't find a way to retain source even today, possibly at the cost of performance (forcing code into user space). Let's just allow an LGPL interface with looking exception for well known interfaces.

4\. If Linux is unwilling to acknowledge industry trends, perhaps switching to a BSD kernel should also be evaluated. Oh the things BSD could do if it had the kind of funding that Linux does

<comment><USER3> Re 4: there is this thing called Fuchsia, which is also BSD-licensed.

<comment><USER2> Except BSDs have a 25+ year track record of production deployment.

What is Fuchsia's advantage over BSD? If anything, they have opinions on first-class language support for the user space (Dart). Do you dart?</comment></comment></comment>


Minecraft, Enhance :Using Neural Networks to Upscale and Stylize Pixel Art - <AUTHOR> https://nucl.ai/blog/enhance-pixel-art/ <comment><USER2> Yes, AI and art has been around for a while now, but I thought they were going to show Minecraft running with enhanced textures. I saw the still shot at the end of the article, and was curious. When I went further, and saw a class being offered, I was really excited only to find out it started October 15th 2015, and still has the sign-up listed. Then I tried to possibly join, but after seeing I would need to spend upwards of $388 per year to listen to a conference recording, I bowed out. I am not against paying, but as a hobbyist, I would venture $120 / year for access to conference and broadcast recordings, resources and forums. I can see sandboxes and courses being additional.

<comment><USER3> I find applications of AI to art very interesting. Do you have any pointers?

<comment><USER2> I actually prefer the term CI, or computational intelligence over AI. There is a wide gamut of things using CI or AI to do or explore art, with art being a very flexible concept. I consider 'Inceptionism' a form of art [1]. I did some personal explorations using GA (Genetic Algorithms) to score some music to my liking by letting the system evolve short melodies, and then based on a -1, 0, 1 score I gave them, evolve more samples for me to listen to. I played with Mathematica quite a bit after Stephen Wolfram published 'A New Kind of Science', and tried creating CAs (cellular automata) that started on one of the sides as well as the top, and created my own rules for where they intersected on the diaganol with restarts. I am now into livecoding music and graphics at a beginner level, and I am already trying to incorporate feedback, or competitive coding by a neural network doing time series analysis on my output and playing off of me like a jazz musician would, but it is in the concept, and prototype stage now. A conceptual idea I had in the 1990s involved writing a computer virus whose purpose was to replicate, and hide undetected in the system with no purpose to do harm, or do anything for that matter, but only to serve as a 'time-capsule' with a message to be released in the year 2000. I thought creating code that could evolve to seek new places to place itself on its own would be cool, and have a message popup on many terminals or out of a printer saying, "I am alive!". Needless to say I learned a lot about self-modifying code, but never created it. I think game AI is incredible, but it is a field I have only read about. I am sure there are a lot of things going on that you wouldn't guess from just playing the game. Unfortunately, I have never really been a gamer; it just never bit me.

      [1]  http://googleresearch.blogspot.co.id/2015/06/inceptionism-going-deeper-into-neural.html

</comment></comment></comment><comment><USER4> This looks really, really cool. I'm curious how it handles tiling; I only glanced at the examples but retaining repetition behavior is pretty important for this sort of thing.

<comment><USER5> You could easily extrapolate from those textures to a Wang tileset, as explained in this old paper from Microsoft Research "Wang Tiles for Image and Texture Generation": [https://pdfs.semanticscholar.org/8d96/c38065ddee67daac5390cf...](https://pdfs.semanticscholar.org/8d96/c38065ddee67daac5390cf65486648b970f8.pdf)

</comment></comment><comment><USER6> Very interesting! As I saw the last picture picture I immediatly thought why not apply landscape photography reference textures to the whole minecraft screen output.

</comment><comment><USER7> this is a brilliant form of texture compression, I think something like this was used in the demo scene, but based off manually tuned perlin noise superposition, instead of having a nn driving the generation.

</comment><comment><USER8> Please release as a texture pack! Thanks!

<comment><USER9> Numerous high-resolution texture packs have been around for years.

Minecraft by default ships with a 16x16 or 32x32 pixel tile size texture pack but community-made packs have much higher resolutions if you want them (128x128 tiles, 256x256, etc).

<comment><USER8> True. I guess I was trying to point out that it is fancy they used a NN to generate new textures, but without releasing it out as a texture pack, they lose a cool opportunity to let people experience the results themselves. I suspect that the screenshot at the bottom simply used one of the existing high resolution texture / shader packs.</comment></comment></comment>


In 1914, a 200ft wave at Trinidad, California (2014) - <AUTHOR> https://briantissot.com/2014/12/31/the-giant-200-foot-wave-at-trinidad-california/ <comment><USER2> The Really Big One: [https://www.newyorker.com/magazine/2015/07/20/the-really- big...](https://www.newyorker.com/magazine/2015/07/20/the-really-big-one)

<comment><USER3> Cool fact -- this article's author won the Pulitzer for best feature writing in 2016. [0]

That said, Cascadia subduction zone is one of the most underrated threat to the western sea-board of the entire North American continent, imo.

[0] [https://en.wikipedia.org/wiki/Pulitzer_Prize_for_Feature_Wri...](https://en.wikipedia.org/wiki/Pulitzer_Prize_for_Feature_Writing)

<comment><USER4> Peter Watts' science-fiction novel "Starfish" is a story of numerous, cascading distaters, one of which is a serious earthquake along the Cascadia Subduction Zone.

Short description and links to commercial vendors on Goodreads [0], and the complete novel available as an eBook is available from the author [1].

[0] [https://www.goodreads.com/book/show/66479.Starfish](https://www.goodreads.com/book/show/66479.Starfish)

[1] [http://www.rifters.com/real/shorts.htm](http://www.rifters.com/real/shorts.htm)

<comment><USER3> Very interesting read, thank you.

</comment></comment></comment></comment><comment><AUTHOR> You might also find this article about "One-Hundred-Foot Wednesday" interesting: [https://www.sfgate.com/bayarea/article/DESPERATE-RACE-FOR- SU...](https://www.sfgate.com/bayarea/article/DESPERATE-RACE-FOR-SURVIVAL- RIDING-FOR-THEIR-2652731.php)

</comment><comment><USER5> 60.96 meters

<comment><USER6> Presumably you're joking but since I've seen real examples of this, I'll mention that that's false precision and should be 60 metres.

</comment></comment><comment><USER7> Another crazy wave happened in Lituya Bay 60 years ago. 520 meters tall (1710 feet). Apparently a father and a son survived it, there's an interview with them on YouTube.

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

<comment><USER8> > the sudden displacement of water resulted in a megatsunami that washed out > trees to a maximum elevation of 520 metres

That reads to me that it ran uphill to an altitude of 520 metres, rather than that the wave itself was a 520m tall wall of water.

<comment><USER9> Indeed. The same article gives a height of 30m for the wave.

</comment></comment></comment><comment><USER10> An amusing little sentence to end on:

> Event will be cancelled if hazardous weather conditions are predicted.

</comment><comment><USER11> Unlikely for the wave to be anywhere near this tall. Rather a smaller wave hit the cliff face and water was pushed over the top.

<comment><USER12> Of course it is _unlikely_ but the history of the world is long and statistically it is a _certainty_.

<comment><USER11> I mean unlikely as in it's a poor fit for the observations. If the waves where actually that tall you would see very different effects.

For reference their are cool photos showing giant sprays around lighthouses from minor waves.

</comment></comment></comment><comment><USER13> We kinda have big weather fluctuations these days (Referring to global warming). How long till we have record wave fluctuations? You better get your surfboards ready.</comment>