Why I Believe Scratch Is the Future of Programming - <AUTHOR> https://elearningindustry.com/scratch-the-future-programming <comment><USER2> The future of programming is programming.

What's described in the article is indeed true, you can build stuff without syntax, you can extend it, etc.

But who is this for? I am not a fan of the "Let's teach everyone to code" rhetoric, because this is same as "let's teach everyone to play the piano", or "Let's teach everyone to be good at math!". People who will code will code even if you don't push them to. And most others, well they have other better things to do in their lives like making art, becoming a scientist, or becoming a doctor.

With this type of "programming", I think their trouble is they don't know who they're building this for. Here's what actually happens:

1\. People who want to do serious programming will immediately find out how inefficient this method is compared to "writing syntax", and switch to real programming.

2\. People who are hobbyists will find that it's not so hard to learn "real programming" once they get into programming.

3\. People who want to learn to program to get a job, will of course learn real programming

4\. People who want to build things but can't learn programming languages will maybe use this to write a prototype, but then immediately hire a "real programmer" once they see any sign of taking off.

5\. The "education" purpose is also out of touch too. If I wanted to teach my kid how to program I would teach him python. It's not that hard.

6\. Most other people won't and shouldn't care about coding. There are thousands of other interesting things to do in life.

I am all for making it easier to build things, and I appreciate that they built this so the world can experience what it feels like to try something like this, but I really can't see any possible use case for this.

<comment><USER3> _People who will code will code even if you don 't push them to._

The booming industry of coding boot camps shows that there are a large number of people who want to code but didn't have the opportunity or knowledge to learn until they were old enough and wealthy enough to pay for private tuition. I would argue that is strong evidence that your assertion is wrong - it's a reasonable assumption there are a number of people who are capable of coding and who want to code but can't afford private lessons and therefore won't ever become a coder.

Lowering the barrier to _starting_ , to the point where it's as simple as running an app without _any_ cost (beyond access to a computer), is a very good thing that greatly benefits a huge number of people.

<comment><USER4> I suspect the majority of those coding boot camp customers do not want to code, but want money, and see coding as an easy way to get it.

<comment><USER3> You have no evidence for that, and it's a pretty horrible thing to say about the people who take those courses.

<comment><USER4> What's horrible about that? People doing things for the money is the driving force behind capitalism, the best economic system yet invented. It improves everybody's quality of life. I have no objection to people going to coding boot camps because they think it will help them make money, and I hope they succeed.

But I don't think coding boot camps are evidence for great love for coding for its own sake. People who really want to code will find some way to do it no matter what. They don't need paid tuition.

<comment><USER3> People wanting money is fine. It was the assertion that they "see coding as an easy way to get it" that's too harsh. In my experience people who have been through coding bootcamps are very aware that they're learning something hard and that they'll need to put in a lot of effort, and that they're starting a new career where they'll be a junior in their first role unless they're very lucky.

</comment></comment></comment></comment></comment></comment><comment><USER5> I don't quite agree that there's no syntax, it's just that the syntax is more visual. You need to put the round things in the round holes and the square things in the square holes. I remember when I played around with Scratch (only a little, admittedly) there was still a lot that wasn't immediately obvious. There's a lot of digging around through the many blocks to find the one you need, and then puzzling how to use it.

Also, while being able to create your own blocks is important, you still need to create the blocks before you can use them. There's no top-down approach to programming; you need to build your blocks first.

I gave a small programming course at my son's school last year using Blockly (similar to scratch, but simpler and more guided) for 6 and 7 year olds, and that worked fine, but I still intend to teach my son a real programming language soon. (Ruby or Python, probably.)

<comment><USER6> I've seen Scratch used in several introductory programming classes and while I don't agree with the author's premise, Scratch just might be the future BASIC.

<comment><USER5> BASIC is a good comparison. It's a great tool to start with, but as soon as you really want to do something deeper or bigger, you'll want something more like Python at least.

</comment></comment></comment><comment><USER7> Personally, I hope to get away from it as fast as possible. Dragging blocks around is rather cumbersome and also messy.

My son can not really read yet, so for that stage scratch (or rather, Snap, which works without Flash) is fine. But for more complex things I imagine it will get inconvenient quickly.

What is nice is to have a display of the available commands. I actually learned programming on a ZX Spectrum, which had all the available Basic commands available on the keyboard (reachable with different key combinations). For learning that was great, as it also sparked my curiosity ("what does command x do?").

So maybe that could be emulated somehow - blocks are just one way to show the available commands.

Apart from that, I also find the Scratch environment not very intuitive to use. It's very confusing to me that there are no start, stop and pause buttons. But granted, that is one thing that can be overcome with experience (I googled that basically you have to reset state programmatically at the start of your program).

</comment><comment><USER8> Why I Believe Annoying Site Visitors With Desktop Notifications Is Not The Future

<comment><USER9> Surely you don't let your browser approve _all_ desktop notifications?

</comment></comment><comment><USER10> I was a little disappointed to see the lack of scratch adoption early on, but it needed a good deal of polishing.

It's not being used by any schools that I have checked out, but the ideas that I first saw with scratch are widely used across all kinds of early education technology.

I wouldn't say that anything like this is the future. RAD tools are fantastic, but they have their place. There's nothing that beats the performance and control of a low level language and they've all gotten better over the years with tooling (save assembly - which from my perspective has remained relatively stagnant).

Still - the ability for non-programmers to get reasonably complex work done given a set of fundamental skills isn't just an inevitability, it's a necessary component for the next era. When the techies aren't bogged down with keeping tracking systems of all sorts up and running, they can focus on innovation that just isn't happening at the same pace that it once was.

Kudos to the Scratch team for seeing the problem that's been glaring at us all since Logo disappeared and made a valiant effort at addressing it effectively. (I know... Logo didn't exactly disappear, but it has faded significantly)

</comment><comment><USER11> Unreal Engine's scripting language called Blueprints - [https://docs.unrealengine.com/latest/INT/Engine/Blueprints/](https://docs.unrealengine.com/latest/INT/Engine/Blueprints/). It's pretty cool and useful - you can make everything in Blueprints that you can in C++ in UE (10% slower than pure C++ code).

However there are some problems. If you have too many nodes in a script it's very hard to navigate and understand what's going on. So I'd say that there's place for both, because it's easier for quick prototyping, but I don't think it'll ever replace programming to that extent. It's just another tool for the toolbox.

</comment><comment><USER12> My daughter (9 years old) loves Scratch. For her I think the benefit is that she can do the part of programming that involves analysing a problem and extracting the logical steps that a computer could process, without all the fiddly matching up of brackets etc.

The original Scratch was written in Smalltalk and it was possible (once you were ready!) to access the underlying Objects and do 'real programming' The current Scratch2 is Flash (I think) and that's no longer possible. I think that's a shame.

<comment><USER13> It seems like Scratch is simply programming language tokens "visualized" as blocks instead of text.

I think this is a good start. I mean you learn programming while doing it and don't have to remember everything. Should be easy to map this to other programming languages.

I mean, many of us programmers started with copying code around.

I did my first mIRC chat bot that got news via sockets by copying the socket code from another script. I didn't even know what arrays were back then.

</comment></comment><comment><USER14> Just a side note - opening this article on mobile opened no less than two popups. I really hope this is not the future of web.

</comment><comment><USER15> Scratch is a decent tool for learning to code and for prototyping (you can get something visual and interactive up and running insanely quickly). However, I wouldn't use it for building anything remotely serious (i.e. something I'm paid for), and I don't think Scratch was ever intended to be used in that way.

That said, I think there is huge potential for visual programming environments in general, particularly in education. At my university, a custom Scratch-like environment is used in the introductory programming module, and it helps students to learn the fundamental programming constructs (sequencing, selection and iteration) without worrying about syntax or compilation. I think it's important that those first learning to code are able to experiment and easily get things running, and that is something visual programming environments are good at enabling.

</comment><comment><USER16> "Scratch does NOT require syntax" \--> this sentence alone disqualifies the whole article.

<comment><USER17> That plus the word 'believe' in the title. If i simply had to accept what others believe as to be the truth...

<comment><USER18> Huh? That's kind of an unfair criticism. The word "believe" is more or less an explicit expression from the author that the article is, well, his belief. As a programmer, I like explicit declaration when reading someone else's "code".

The fault is more with you, for automatically associating the phrase "I believe" with implicit brainwashing.

<comment><USER17> That is what you are doing yourself now. Dictionary however states something different,

believe bɪˈliːv/ verb 1\. accept that (something) is true, especially without proof.

</comment></comment></comment></comment><comment><USER19> With policiticans buying into the "everyone must code" hype, the gap between what students will be forced to learn in grade school and what they need to become professional programmers is going to be glaringly obvious.

Attempts to introduce today's complex real-world programming paradigms into school will fail, so the obvious next step will be for real-world programming environments to become more like the ones used for teaching. The challenge will be to ensure that these programming tools of the future are well- engineeered so that the code they produce is maintainable.

</comment><comment><USER20> Not sure if it's valid, but there's an implementation of a flow-based programming system over at [https://github.com/fractalide/fractalide](https://github.com/fractalide/fractalide). Although it's not quite at the boxes and lines stage yet, the components are reusable and efficient.

</comment><comment> wav-part Oh I thought it would be about Scratchpad Memory [1] which is the future :).

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

</comment><comment><USER21> I get that scratch doesn't require that a child can read or type yet, but really, shouldn't those be fundamentals that they learn first anyways?

<comment><USER22> and also, why need a child so young start with programming? I heard playing outside is rather healthy and socializing.

Of course if they're interested, why not, as long as it is fun.

</comment></comment><comment><USER23> The future of programming runs on Flash :(

</comment><comment><USER24> We demo'd a software called filebound earlier this year when looking at a document management solution and it left a hell of an impression on me.

Most business systems are built off of the concept of the "enterprise infrastructure" being the printing press for the front end infrastructure, and the back office being the back end infrastructure. When the Xerox printer was first introduced, you had a "rapid prototyping" system for business processes inwhich the xerox machine represented the front end and back office being the back end.

The "Next Gen" of business systems and processes was computerization and mobilization. We had mainframes and then the litany of "enterprise" architectures such as .net\SQL, Java\Oracle, LAMP, or SAP, and "rapid prototyping" architectures such as Paradox, MS Access, and so forth. That produced an alphabet soup of system types, jargon, TLA's, and business processes and lots of profound thought into designing businesses.

These "program a flowchart" languages we've seen, which are largely driven by certain MS SQL server features, are really great at building business processes because all of these systems have always had menu's, forms, data, and reports as the building blocks of the business process. By flow charting the business process as part of the programming, you end up with better visibility by management into the flow of the business system. The revolutionary item with filebound is backing up the flowchart with the data (so we know how things used to be done), being able to show changes to the flowchart and make notes (are we repeating the same mistakes?), being able to separate structured and unstructured data (hint: your "enterprise class" business system should be rigid and scalable, and should is your data structure), supports modularity (filebound in particular supports vb and powershell scripts as blocks in the chart), all while proving a certain degree of access to management to build and play with things like the original xerox machine did. Filebound also has some really nice automation capibilities; e.g. you can sit one end-user with minimal education and have them configure the system to structure data out of e-mail, e-mail attachments, or scans, and you can report on their accuracy and any errors that occur as examples, all using some pretty advanced OCR. Building forms is click and drag as well. Best part is, if management needs to really understand the system, print out the flowchart on 11x17 and hand it to them. Even the oldest coot will "get it".

Not that I'm plugging their software in particular, but when I saw a few short demo's, it left a real impression as to the future of business system programming. Imagine taking several flowcharts and exporting them as a business process; management would become very familiar with the data structure and system structure and where it's deficits and benefits are, and that is a good thing because you are forcing them to understand the structure of their business.

There's always going to be a place enterprise class business systems because scalability and rigidity are features. When the auditors show up, they know what great plains database tables to go look at. That's a benefit to them. When you have all sorts of things modified, they begin asking lots of rough questions.

"Real programming" is going to live everywhere else there aren't business systems and there's a lot of places where it'll fit in. You are not going to be able to build cad to cam software using a flowchart. No freggin' way. Try doing nested tree's. HA!

<comment><USER25> In my experience where these products struggle is they are often sold as a solution where the users can create a system without being programmers.

The reality is although they can make life easier they don't take away the need to be able to decompose a requirement into its relevant parts. You still need to think like a programmer to use them well.

<comment><USER24> 100% agree.

Managers are a reactive occupation, business analysts are a proactive occupation. Where they meet and compromise is on the business system. Good business analysts understand the market play and plan the reactions of the managers.

Advertising and Sales often targets victim's "reptilian brains", finding methods to control conversations and execute methods of exploit that force an endorphin dump. I've found it quite useful to criticize managers in very cruel ways, e.g. "That Sales guy gave us nothing solid; lots of power words, metered speech, and other sales tricks, and a whole lot of managers around a table endorphin-dumping themselves over it. What an incredible circus." From there you can carefully deconstruct sentences and show management their understanding of what they are getting into is very abstract and fluid.</comment></comment></comment>


Mathematics for Computer Science - <AUTHOR> http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/video-lectures/ <comment><USER2> Oh man. This course brings back so many memories of suffering through this material. But I can't emphasize how important this stuff is to know if you want to know anything significant in Computer Science.

What helped me ace the the exam was doing a hundreds of problems. I couldn't answer them most of the time, so I'd need an answer key nearby to get unstuck.

Drill, drill, drill. Just like you'd expect to drill for calculus, you can drill for this class.

What I found helpful was Rosen's "Discrete Mathematics and Its Applications". The material wasn't the best, but the problems are excellent. You can buy an older edition of the book and its solution manual for next to nothing on used book sites like abebooks.com

<comment><USER3> > I couldn't answer them most of the time, so I'd need an answer key nearby to > get unstuck.

This happens with a lot of books out there. It would have been great if the authors of MCS gave solutions for at least some select questions.

</comment></comment><comment><USER4> I know it's not related to this but if anyone has not watched the Linear Algebra lectures by Gilbert Strang of MIT. They are definitely worth a look as a strong foundation in Linear Algebra never hurt anyone. ([http://web.mit.edu/18.06/www/videos.shtml](http://web.mit.edu/18.06/www/videos.shtml))

Also available on iTunes U.

<comment><USER5> Thanks for the resource. I never really paid attention when I took linear algebra, and I've always regretted it since it seems to rear it's head everywhere.

<comment><USER4> I was the same way. I went through it thinking it was very abstract and had no real application. It wasn't until after that I realized it was basically used (in some way/shape/form) everywhere.

</comment></comment></comment><comment><USER2> If some of you feel a bit overwhelmed with the material, you may be well served by watching the first few lecture's of the following playlist:

[https://www.youtube.com/channel/UCG96LXNYz9x7eTqSRtQ2R9A](https://www.youtube.com/channel/UCG96LXNYz9x7eTqSRtQ2R9A)

It is Carleton University's freshman/first year Discrete Structures/Math course (COMP1805). They cover a lot of the same material, but at a more leisure pace and assume a lot less background.

<comment><USER2> Looking over the second part of the MIT course, I see that a lot of the same material is covered in this free textbook.

[http://cglab.ca/~michiel/DiscreteStructures/](http://cglab.ca/~michiel/DiscreteStructures/)

</comment></comment><comment><USER6> The reading material is fantastic. If anyone wants a more recent version of it, here's the link:

[https://courses.csail.mit.edu/6.042/spring15/mcs.pdf](https://courses.csail.mit.edu/6.042/spring15/mcs.pdf)

<comment><USER7> That's not just "reading material" ... it's a frigging 1000-page book! :-D

<comment><USER6> It all started with a 300 page reading notes, which, in my opinion, is pretty long already, but, boy, 1000 pages is a lot indeed :).

</comment></comment></comment><comment><USER8> I've been trying to self-study mathematics since around the new year. I initially tried following this course, but with only a background of high school math through precalculus I found this to be overwhelming.

So after a bit of research I decided to start working my way through "How to Prove It" by Velleman, which has introduced me to many of the concepts that seem to be pre-requisites for this course: set theory, logic, proof strategies, etc.

<comment><USER9> I did something similar last year with Statistics and Probability. The best place I've found for a linear course for online math is [https://www.khanacademy.org/](https://www.khanacademy.org/)

I was able to start at the beginning and get all the necessary math to actually step forward to some of the more complex courses. I'd suggest starting there.

<comment><USER8> I did start there actually. As much as I love Khan Academy there are lots of holes and the quality/thoroughness of video explanations really seem to drop off the further along you go.

To me they were most useful when I just needed a refresher on the precise operations to go through in order to solve a particular kind of problem, but already understood it. It's hard to beat a textbook for learning material that is completely new to me.

</comment></comment></comment><comment><USER10> I'm looking to gain the math foundation needed do inch my way towards data science. Could anyone on HN recommend a good path to take? For simplicity's sake, imagine my math level is 0.

Also, curious to know if anyone has good book suggestions or places with practice problems.

Edit: This is the best list I've been able to find so far [http://datasciencemasters.org/#math](http://datasciencemasters.org/#math)

<comment><USER11> I am self-teaching myself mathematics for a few years now and will suggest the following: Algebra and Trig, a subset of which is known as pre-calc. Don't short yourself on this because it is basic and you don't want to be struggling with it at the same you are struggling with the higher level stuff. I cannot recommend Sheldon Axler's Algebra and Trigonmetry highly enough. After much searching I found that and have been through it 3 times.

Next Calculus: I recommend Gilbert Strang's text book which will take you through what in uni is called Caculus 3, 1 being intro, 2 being differential and 3 being integral. I in the midst of this book and so can't speak to further but my plan is to move onto Strang's linear Algebra. After that, where to go depends on particular interest but leaving any of that out, in my opinion, will just handicap your further studies. Moder education does a lot of things wrong but the standard math sequence in use everywhere isn't one of them imo.

<comment><USER10> Thanks so much for the recommendations, hevelvarik.

Just to confirm, are these the right books?

\- [http://www.amazon.com/Algebra-Trigonometry-Sheldon- Axler/dp/...](http://www.amazon.com/Algebra-Trigonometry-Sheldon- Axler/dp/047047081X)

\- [https://open.umn.edu/opentextbooks/BookDetail.aspx?bookId=10](https://open.umn.edu/opentextbooks/BookDetail.aspx?bookId=10) / [http://ocw.mit.edu/ans7870/resources/Strang/Edited/Calculus/...](http://ocw.mit.edu/ans7870/resources/Strang/Edited/Calculus/Calculus.pdf)

<comment><USER12> In addition, get Israel Gelfand's books ([http://gcpm.rutgers.edu/books.html](http://gcpm.rutgers.edu/books.html)).

</comment></comment></comment></comment><comment><USER13> MIT OpenCourseWare has been a great tool for me as an undergrad. Since the start of year, I've watched the CS and Econ uploads concurrently with the courses I've taken.

It's not that the lectures are better, but getting a second chance to see the topics under slightly different contexts has been pretty effective for study. I've had the same experience with Khan Academy in my lower division courses.

</comment><comment><USER14> This is a similar course with some overlap: [http://www.cs.cmu.edu/~15251/](http://www.cs.cmu.edu/~15251/)

<comment><USER15> I haven't looked at the MIT course in detail, but doesn't it seem like Concepts would be more similar to this than 251?

</comment></comment><comment><USER16> I just want to put a plug in for the video lecture portion of this. Tom Leighton is an excellent lecturer. There is plenty of electronic textbooks/courses, but I really do think he explains the course material in an engaging and lucid way.

</comment><comment><USER17> This seems extremely useful. My school did not have a consolidated math class like this, although computer science and software engineering students were required to take various courses in math, particularly discrete and combinatorial math and linear algebra.

I do know that there were many students who double majored in Math / Computer Science although there was a restriction on minoring in mathematics as a CS student because of the large number of prerequisites. Still, it seems useful to combine proofs, induction, graph theory and related domains into one course. I did opt for taking a large number of math classes and some fairly high-level electives, and I have to say the most interesting area I came across was the use of generating functions for solving recurrence relations and the study of the Catalan numbers. For those of you unfamiliar with the Catalan numbers, it is the sequence of the number of binary trees that can be created with a certain number of elements. Another area they come up in (among a large number of problems) is creating paths by Manhattan distance.

The Catalan numbers also count the number of expressions with matching pairs of parentheses.

<comment><USER18> Catalan numbers show up all over the place and are a really useful sequence. My combinatorics course in undergrad had a "Catalan Problem of the Week" where you would have to show that the Catalan sequence solves a particular problem.

</comment></comment><comment><USER19> Concrete Mathematics is also a good background.

<comment><USER20> One of my favorite math books ever, but definitely not for the faint of heart. It's starts off slow but gets hard fast.

</comment></comment><comment><USER21> Having done an equivalent course in Australia I can say: despite being a struggle at the time to get my head around the content, in hindsight knowing this stuff is invaluable as you continue with your degree.

Discrete Mathematics has been invaluable in Formal Languages (Turing machines), Algorithms and Data Security.

</comment><comment><USER22> Math is just manually running code in your head. Which is just an ignorant and wasteful obsoleted vanity, like remembering and performing a series of notes.

<comment><USER23> Is thinking obsolete too?

</comment></comment><comment><USER24> Being a CS student in my Bachelors I was able to spend sometime on Number Theory. But the lectures here blew mind.

</comment><comment><USER25> I believe this is a pre-req to CLRS too.</comment>


Stop Breaking the Web - <AUTHOR> http://ponyfoo.com/articles/stop-breaking-the-web <comment><USER2> Considering that the average page size (first load) is getting bigger and bigger there is certainly some truth to it. Pages are getting slower and more complex and I see more and more browser tabs take 80mb+ for (seemingly) simple sites.

I also agree that web site/web app is slightly different, but: there are blogs and sites that load, show a blank page, then fade in some animation/spinner while loading fonts, styles and more scripts and then slowly fade in the content. However, if something goes wrong (font doesn't load, JS blocked, etc) you see a blank page with a spinner forever. HOW is that progress? That's just awful.

I recently decided to start a little blog[1] using the static site generator hugo[2] and I don't feel like I'm missing out on anything. Well, you won't be able to load the disqus comments and have no code highlighting without JS, but that's it.

[1] [http://code-and.coffee](http://code-and.coffee) [2] [http://www.gohugo.io](http://www.gohugo.io)

<comment><USER3> Consider that when most people get sites that don't meet their needs their gut reaction is to open 20 tabs and mentally slice data from all over the website. That doesn't seem very progressive either.

<comment><USER2> I am not saying there is no need for more complex web sites. Personally I just think it is sad that in 2015 there are lots of sites that won't load anything at all if you disable JS or have a bad connection.

With a 50k connection at home I simply can't accept waiting 3+ seconds until your site loaded its 500kb of JS and 4 different web fonts to finally show something.

<comment><USER3> Sure! Parts of that are indeed ridiculous.

Although I'm pretty sure the download size from a CDN is far less important from a performance standpoint (within reason). More important things include: \- Time to first byte from a slow'ish server (.5s to create the HTML and .5s to deliver). \- How many separate requests you are making (somewhat going away with http2)

Can we start ranting about the excessive amounts of tracking pixels everywhere now :)?

</comment></comment></comment></comment><comment><USER3> This is non-sense. Every few minutes you hear someone complain about the lack of progressive enhancement. The case for progressive enhancement is only valid when you have "content" that is easily parseable by human eyes.

In a world where you have too much data and users want to see slices of data, progressive enhancement fails to deliver a fast, pleasant, engaging user experience. In the case, where you have complex tools that help a user meet some end goal more quickly progressive enhancement falls short of providing the easy to use tools. The only case where this works in any way shape or form is when a site is submittable via simple forms and all data can be retrieved by visiting urls. Any, slightly more complicated use case fails to be delivered at any reasonable pace with any sort of reasonable performance. You know the kind of performance that wouldn't make your server side fall over.

This whole progressive enhancement thing is mired in decade old dogma. While progressive enhancement can work sometimes, it is NOT the only tool. We shouldn't wholesale prescribe solutions without knowing someone's problem.

<comment><USER4> Progressive enhancement does make sense in some cases, such as using a feature that not all browsers support yet but that the site can function without.

And progressive enhancement makes _perfect_ sense for things like CSS; if your site content makes no sense with CSS turned off, it probably makes no sense with a screen reader. So, for instance, remember to put content in a sensible order _in the HTML_ rather than arbitrarily rearranging it with CSS.

 _However_ , I no longer think progressive enhancement makes sense for things like JavaScript, as long as you use features just about every browser supports. Otherwise, you'd have to effectively write your site twice: once with JavaScript, and again as entirely forms/links and server-generated content.

The critical reason why I no longer think this makes sense: because it's completely sensible to follow an API-first approach to site design, where the first thing you write is an API usable _both_ by third parties and by your own first-party site. Then you can write your site on top of your own API. I don't think we need to target human-readable first; on the contrary, I think we get a better, more extensible, more programmable, more open web if we build APIs first and foremost.

Now, all that said, there are other ways this article is _completely_ right about not breaking the web. In particular, having an app is no excuse not to have a website, or one not usable on mobile. And if you're going to display a "you might want the app" banner, have a "go away and stop asking me" that _does not break navigation to the specific page the user was trying to visit in the first place_.

<comment><USER5> I think the article was pretty clear about API first being bad, and even linked to Twitter's write up of having to tear out that failure: [https://blog.twitter.com/2012/improving-performance-on- twitt...](https://blog.twitter.com/2012/improving-performance-on-twittercom)

<comment><USER4> I don't actually think an entirely client-side-rendered application makes sense; on the contrary, I _do_ think it makes sense to do most HTML generation on the server, and where appropriate, hand out snippets via the API, rather than handing out JSON or similar and making JavaScript produce HTML. But that's different than rendering _entire HTML pages_ entirely on the server. And for primarily dynamic content, I see nothing wrong (for many sites, at least) with assembling server-provided HTML snippets from JavaScript into a server-provided HTML base page, without any fallback to an entirely server- provided page.

</comment></comment></comment></comment><comment><USER6> Getting a little tired of reading these rants. People are building "applications" that just happen to run in the web browser, for convenience. They aren't building repositories for static information.

<comment><USER7> Yeah, these rants never account for the fact there there are a number of different types of websites, and tools for each. Don't use Angular or React for a blog for the same reason you shouldn't use Jekyll or whatever for an application. Different tools for different tasks.

<comment><USER8> The points apply equally to those things you call "applications" as they do to those things you call "sites". They're essentially the same thing. They're all functionality delivered over web technologies and for that reason, the OP's points still hold. In the case of a "web site" the functionality is "displaying content".

An "application" can be built using progressive enhancement. The OP even describes ways to approach this. There were applications before there were AJAX or Angular. Their experiences leave a little to be desired, sure, but they were certainly usable. A basis in simpler, server-centric interaction with enhanced, client-side experience jazz is still more in-keeping with "how the web was made", and with how it is consumed.

</comment></comment></comment><comment><USER9> Think about what happens with the "old web". You make an HTTP request to a server. The server evals short snippets of dynamic language inside a template to generate a really big string. Then the server sends that string down the socket.

If you want to view another object, you have to request another slightly different big string.

Because of how resource-intensive it is to assemble these strings, programmers deployed "caching software" to memoize every big string that came up. Server hardware was loaded with RAM so that they could store a lot of big strings.

\- - -

The new approach is to send the basic code of the website to the client _the first time_ , then have the client make additional requests for data via AJAX, assembling the UI as it goes. Sanity.

</comment><comment><USER10> I very much agree with this. Get the content to the user as fast as possible and then progressively enhance.

Most of the web sites that I get value from really just need HTML and CSS.

That said I don't mind waiting for rich web email clients, web version of Office 365, etc., that I leave open a while.

Complex web pages that are really just showing content also eat up a lot of CPU and memory resources.

</comment><comment><USER11> I'm sorry, but I'm still trying to understand what the author is trying to say. It seems like he had a bad experience with Angular and he's taking it out on hash routing and client side rendering (so basically, SPAs?). Beyond that, I'm not really sure.

</comment><comment><USER12> Absolutely. We have thrown the baby, and the sink, out with the bathwater.

I'll plug my little strike back against the insanity:

[http://intercoolerjs.org](http://intercoolerjs.org)

You can build a highly dynamic web site with normal URL schemes, sane HTTP caching behavior and zero client-side templating.

I need to do some more work on making it meet progressive enhancement goals, but I'm convinced this is a better approach than heavy client side logic for most web applications.

</comment><comment><USER13> It's been a while since I've seen anyone take a stand for IE6 users.

As a web application developer whose bootstrapped startup needs every user it can get, let me just say: I am perfectly willing to forgo all IE6 traffic.

<comment><USER14> Yeah, its a neglible share. The article lacks a grounding in utility. You shouldn't bend over backwards for 0.1% of leads. If your product looks 10% cooler for your best leads at the cost of not working for the 0.1%, it is actually a good deal.

<comment><USER15> Web design and development is also an art. Good artists look beyond business value.

You actually should bend over backwards to cater to as many users as possible, especially if you are getting paid to build websites for users.

Some countries require sites to be accessible to the disabled. If you design sites for the US government, they should also be accessible to 0.1% of blind or no-script users.

Sure, IE6 as a baseline is very progressive, but it is certainly doable. Less so, if you start with an inaccessible website and catering to as many users as possible is an annoying time-consuming afterthought.

If you can not muster an accessible progressive enhanced website, then you can not muster a js-only ARIA compliant website either. Your only hope is to make something profitable. That's being a marketeer or business man with a little HTML skills, not being a solid web dev.

</comment></comment></comment><comment><USER16> These companies need to realize that end users, especially me, now pretty much expect their apps and pages to:

        - annoy me for their benefit
        - spy on me
        - waste my battery
        - waste my bandwidth

interesting these companies don't seem to care much about gaining the trust of their customers or actually serving them in a convenient fashion.

<comment><USER17> Companies don't care, because end users, for the most part, don't care. At least not enough to significantly change their behavior.

<comment><USER18> The point is to make them care. There _are_ ways of doing this.

Google are steering progress toward HTTPS and app-add interstitials, for example.

</comment></comment></comment><comment><USER19> To a lot of you arguing that Progressive Enhancement doesn't apply to "web apps," as Jake Archibald argues[1], that really isn't an excuse if you can't distinguish it from what you consider a "web site." Is your content static? Is interaction core to your content (like a video game or a data viz explorer)? Even if interactivity is core to your content, why not first offer something like a product page. Describe about your interactive content in text or in images or in a demo video. Just the minimum static content a user can quickly download before the rest of the richer content is loaded. It's not much of an extra effort; you aren't back porting your interactivity to less capable devices. Instead you're using static content to show what your game could be.

[1] [https://jakearchibald.com/2013/progressive-enhancement- still...](https://jakearchibald.com/2013/progressive-enhancement-still- important/#app-is-not-an-excuse)

</comment><comment><USER20> So for the novice web developer, what _is_ the recommended course of action for creating a "modern," mobile-friendly website? The options seem to be:

\- Code all HTML and internal CSS by hand

\- Use a CSS framework

\- Use something like Bootstrap or other aesthetic rendering powered by javascript/jquery

The problem seems to be that the less work done by the designer means increased reliance on Javascript or external engines that then cause additional overhead, bandwidth, and possible breakage for people using NoScript or AdBlock. And to be honest, I'm sorta on their side, as it seems silly that a single website needs to reach out to three or four outside domains just to style the page properly.

What's the solution here?

<comment><USER12> As I've mentioned elsewhere, the best solution that I've been able to come up with is intercooler:

[http://intercoolerjs.org/](http://intercoolerjs.org/)

You can build dynamic websites with minimal or no javascript and just use the same old techniques you are used to.

</comment></comment><comment> mind-blight If web developers want to build applications for anyone outside the West, they'll need to work on faster page loads. A large percent of the world views the the internet on mobile devices with a slow connection.

Blocking content until a large JS file is downloaded, at least one more ajax request is made, and another round of downloads occurs is unacceptably slow in a developing country.

Isomorphic applications or server side rendering gives a company a competitive advantage in these markets.

</comment><comment><USER21> Bullshit. The author is confusing web sites and web apps.

<comment><USER22> No, I think many people do. People are beginning to treat all websites as if they should be web apps.

Look specifically at WIX sites, Google Groups, and Blogger these should not be web applications -- they are standard websites, repositories of information that need not live-update or run any javascript what-so-ever for the most basic of use-cases -- are entirely, 100% unusable without Javascript.

Browse the web without javascript, you'll find that most things are broken, even static content just doesn't work. That's the problem. Web Apps are cool. Your blog _requiring_ or a news group _requiring_ javascript to read is not cool.

<comment><USER23> Part of the problem is that the web content and security model requires one to consider a domain somewhat isomorphic to an app.

It wouldn't be so bad if the technology existed to reliably say "foo.com is serving data that can be rendered via the some-standard-component presentation layer." Then, the browser itself would have the capacity to cache and optimize the rendering layer for common content schema. As it stands, your choices are to code to one schema (the HTML5 / CSS / no Javascript presentation standard, with all the restrictions that implies), to write a web app that will be a special little snowflake different from all the other special little snowflakes on the web, complete with its own chunk of memory and processing in your browser, or to throw up your hands and commit your content to one of the existing solutions that build the app for you (but then basically also control your data).

We're missing a functional division between data and app that we have in the desktop model.

</comment></comment></comment><comment><USER24> How about we parse the html and css on the server, because, you know the user might have a browser with a slow rendering engine. Then we just ship them the images.

<comment><USER25> I hope you're being sarcastic.

<comment><USER24> indeed

</comment></comment></comment><comment><USER26> Puts a damper on the SPA + AWS Gateway API + Lambda app I was developing.

</comment><comment><USER27> Here is what I think about this...

      </comment><comment></comment><comment></comment><comment></comment><comment>=====
      |                         X |
      |                           |
      |  Would you mind taking a  |
      |  survey to give feedback  |
      |  about this Hacker News   |
      |  comment? It will only    |
      |  take 5 minutes and you   |
      |  can win a new Macbook    |
      |  Pro.                     |
      |                           |
      |   YES      NO     LATER   |
      |                           |
      </comment><comment></comment><comment></comment><comment></comment><comment>=====

In conclusion, stop breaking HN.</comment>


Google Play merchant changes - YES of COURSE - <AUTHOR>

Email from Google Play:
Hello,
We are committed to providing you with a consistent and reliable payout experience while we introduce new forms of payment to better serve your users and create more revenue opportunities for you. In order to do so, we are shifting our payout date to 15 days after the month's end.
Starting in February 2013, we will transition you to a schedule from being paid two days after the end of the month to 15 days after the end of the month.  In an attempt to ease the transition, we will make two interim payments before you are completely shifted to the new payment schedule as follows:
- February 2nd: Payment for January sales - February 15th: Payment for February 1 - 13 sales - March 15th: Payment for February 14 - 28 sales - April 15th: Payment for March sales
And every month after, you will also receive payment on the 15th.
We remain committed to offering a best in class marketplace for developers to sell their apps.  These changes will allow us to ensure users can buy your apps and we can transmit payments to you in a reliable fashion.
If you have any questions, please contact Google Checkout Merchant team at http://support.google.com/checkout/sell/bin/request.py
Thank you for your continued support of Google Play.
Regards, The Google Play Team
©2013 Google Inc. 1600 Amphitheatre Parkway Mountain View, CA  94043
Email preferences: You have received this mandatory email service announcement to update you about important changes to your Google Play account.
<comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---
How the hell do you improve my merchant experience by giving me my money 15 days later? </comment><comment><USER2> > Starting in February 2013, we will transition you to a schedule from being > paid two days after the end of the month to 15 days after the end of the > month.

Unless there's more to it, they're just changing what day of the month they cut the checks... so you get paid just as often, just as fast. What's the complaint?

<comment><USER3> Where do you get "just as fast" from? My understanding of the letter is that you used to get paid for a month 2 days after the end of the month, now you get paid for that month 15 days after the end.

I would assume that this smoothes out chargebacks for Google. But by no means is the merchant better off.

<comment><USER2> You get 30 days worth of revenue every 30 days. If Google Play is an important income stream for you, your cash flow is unchanged... unless, as you say, you're attempting to scam people and need to get paid before chargebacks come in. It doesn't sound like something to post an expletive-filled SHOUTING rant on HN about to me.

<comment><USER3> Over the next 10 weeks you'll get paid what you'd have expected to receive over the next 8. That's like losing 20% of your run rate for two and a half months. (Not to mention that if you've got specific bills you're expecting to pay with that money, you may run out.)

That's not a small delta in cash flow, and I could easily see learning about that on short notice causing serious problems for people.

</comment></comment></comment></comment><comment><USER4> Or you can look at it that you are getting payment for half of February 15 days early...

</comment><comment><USER5> What was the previous payout schedule - every two weeks I take it?

<comment><USER6> Monthly.</comment></comment>


Linux is an operating system for all ages - <AUTHOR> http://www.zdnet.com/article/linux-an-operating-system-for-all-ages/#ftag=RSSbaffb68 <comment><USER2> Yeah I set up my mom with GNOME 3 on Fedora. All she does is browse the internet and play solitaire. That's pretty much a zero maintenance computer right there.

Somehow they always manage to destroy windows.

<comment><USER3> 'Somehow they always manage to destroy windows.'

this. Sigh. The number of times I have to clean up all the things she (my mom) manages to install 'tool bars and what not'.

<comment><USER4> Have you tried setting her up with a standard user login by default? I did that with my folks and the number of computer questions seems to have gone way down.

<comment><USER5> In addition to that, uBlock/adblock also seems to take care of most toolbar/malware pop ups that parents tend to fall for.

</comment></comment></comment></comment><comment><USER6> Totally off topic, but it seems every website I've visited today has had some utterly obnoxious pop up appear when I'm half way through a sentence.

I hope this is a short lived trend.

<comment><USER7> Adblock extension is pretty awesome. Vastly reduces noise on the web.

</comment></comment><comment><USER8> > A friend and I took responsibility to stress the advantages of learning and > continuing to use Ubuntu.

As usual, FOSSers confusing ethics & principles with marketing. He's right, but that doesn't make it effective (sadly).

</comment><comment><USER9> Anyone in here working in Africa in the kind of project the OA mentions?

I'm wondering about bandwidth for updates and installing software. Ubuntu 15.04 is good for 6 months with updates. Debian current stable with a three DVD iso download (and a DVD drive!) would provide access to the whole software repository offline. There is a delta update DVD for each incremental ISO set.

</comment><comment><USER10> The article is out-of-time. The question nowadays is: 'Why didn't Android become a viable OS for desktops and laptops?'

<comment><USER11> For the same reason Windows did not become a mainstream OS for tablets and phones. There is a much greater distance between a finger-touch UX and a mouse UX than most people imagine.

There is also probably a hardware dimension to the answer: There is a greater distance between a heavy "convertible" part-time touch laptop/tablet-ish device and a real tablet that can be carried like a sheaf of paper than most people appreciate.

</comment></comment><comment><USER12> So this has to be said again : Linux is NOT an operating system, Linux is a Kernel. Android, Debian and OpenWRT are operating systems. Debian even support other kernels than Linux.

<comment><USER13> If you're going to be pedantic, at least nail it.

Debian (Linux) and OpenWRT are distributions. They're super-sets of applications, the GNU tools and the Linux kernel (or HURD). You only need the last two to form an "operating system".

Android is a little different in that it doesn't sit on a GNU stack. I'm happier calling Android an operating system than I am Debian and OpenWRT.

<comment><USER14> If Debian is a distribution and Linux is just the kernel, what do you say if you run Debian and people ask what OS you use?

<comment><USER13> Depends who "people" were. Somebody who knows nothing is going to hear "Debian", somebody with a little more tech in their blood will hear "Debian... Yeah, that's right, Linux" and I'll save the "Debian GNU/Linux" for people trying to make a point about nomenclature.

My point wasn't that it's super important you call these things by the right name, it's that you were and you were getting it wrong still.</comment></comment></comment></comment>


Ask HN: Anyone from Edinburgh? - <AUTHOR> Will be moving to Edinburgh in the next few months and wanted to get connected to some folks. <comment><USER2> I'm from there and it's an amazing city. Loads of tech meetups etc. Feel free to ping me an email and I'd happily intro you to some people.

I'm in Madrid atm but will be back in Edinburgh one day :)

<comment><AUTHOR> Awesome. Lucky you!

Thanks, I'd love to meet up when we're both in Edinburgh. I'll shoot you an intro email and perhaps we can go from there?

<comment><USER2> Sounds good - will look out for your email :)

<comment><AUTHOR> Sent you a note :)

</comment></comment></comment></comment><comment><USER3> I am.

Lots of us about, mostly work in Banking.

<comment><USER4> Similarly to London, is it possible to get 6-figure salary? (in a finance sector of course)

<comment><USER2> Yes

<comment><USER4> I mean non-manager engineering - sounds good if that's the case.

<comment><USER2> Oh right, sorry! Yeah I imagine it exists but couldn't point at any tangible examples.</comment></comment></comment></comment></comment>


The Reason Stock Buybacks Are a Problem - <AUTHOR> https://www.nakedcapitalism.com/2019/02/real-reason-stock-buybacks-problem.html <comment><USER2> There was a TechCrunch article 2 years ago that lays out a convincing argument that something/someone started siphoning value out of the US financial markets --thus driving up prices for everything--sometime in the last 50 years. It asks "Why so costly in the US?" but doesn't have any definite answers. Link here: [https://techcrunch.com/2017/07/09/why-so- costly/](https://techcrunch.com/2017/07/09/why-so-costly/)

I think TA offers some really good answers, all centering around market deregulation beginning under Reagan in the early 1980s. Suddenly, corporations had a lot more tools at their disposal to siphon off their value towards shareholders and manipulate the market in the process.

... Which leaves me wondering, how long can the current bull market last in the US if it's draining US corporations of their value?

<comment><USER3> Re: "why so costly", the answer as to what phenomenon affects the US and UK but not other western countries. It pretty much has to be neoliberal/Reagan/Thatcherism; in particular, the suppression of wage growth through anti-union measures and excessive privatisation.

Arguments around "drained value" would have to say where the value is being _to_ ; real estate?

</comment></comment><comment><USER4> The instantaneous impact on the share price is just one aspect. The more worrying effects are the priority claim that debt holds over equity, and the future dynamics of cashflow v. interest rates.

      Bond interest payments are fixed and mandatory.
      Dividends are variable and discretionary.

If recession hits and cashflow falls, it becomes more difficult to pay the interest coupon on the bonds. Or if rates rise, it becomes more expensive to roll-over the debt at maturity. Hint - _rates have been rising at a time when 2019 revenue forecasts are falling._

The size of the problem is shown by the proportion of Investment Grade corporate debt that is BBB-rated, just above junk. In a recession, those companies may see reduced cashflow, and hence have their credit rating reduced one notch to junk. Then many regulated investors (e.g. pension funds) may have to sell the bonds, which reduces their price and increases their interest rate, making it yet more expensive for the companies to rollover debt, or increase debt to survive the recession. Hence a negative feedback loop leads to a deeper recession.

Here's good explanation, with a chart showing the ballooning of BBB-rated debt (note the axis is _trillions_ , with a 't'):

[https://www.zerohedge.com/news/2019-02-05/what-blows- first](https://www.zerohedge.com/news/2019-02-05/what-blows-first)

</comment><comment><USER5> I did not find this argument particularly compelling. His analysis of why stock buybacks are worse than paying dividends seems to miss the fact that the buyback has an impact on the share price, so more than just the people who had their stock bought back directly by the company will ultimately pay capital gains tax on because of the buyback. If you account for this, the disparity disappears.</comment>


Modrails outperforms Mongrel - <AUTHOR> http://statsheet.com/blog/passenger-nginx-much-better-than-mongrel-at-least-for-statsheet/

<comment><USER2> It doesn't look like this has _ANYTHING_ to do with Mongrel, Apache, or HTTP at all!

He had ridiculous memory leaks from ActiveRecord/Rails under the older 'stable' version of Ruby he was using with Mongrel. When he switched to Passenger, which uses a patched/forked version of Ruby (the hilariously named "Ruby Enterprise Edition"), his Rails memory leak went away.

<comment><USER3> This is correct. It's REE - mod_rails has almost nothing to do with these results.

REE alone halved our response times and our memory usage across our Rails cluster. We're stll on mongrel/nginx.

</comment></comment><comment><USER4> While it's certainly true, at least in my experience, that Passenger is both easier to set up and demands fewer system resources than a Mongrel cluster, there's a third vital factor: Passenger works just fine with Ruby 1.9, whereas Mongrel doesn't. This, ultimately, was the reason I switched.

Coincidentally, I ran up an article on shifting my server to Ruby 1.9 earlier today. It might be of interest to anyone considering it.

<http://extralogical.net/2009/07/ruby-one-niner/>

<comment><USER5> Ironically mongrel & dependencies only require a handful of lines of patching to work on 1.9 - the fact that no one has bothered for many months now shows just how unpopular mongrel has become.

<comment><USER6> Isn't it being maintained by Evan Weaver (twitter) these days? He made some ridiculous stand against 1.9 ages ago, maybe he refuses to update the gem based on that. No other good explanation I can think of, the changes are trivial.

</comment></comment></comment><comment><USER7> I think Peter Cooper said it well: Mongrel was just a stop gap to better solutions.

It's certainly better than WEBrick, but it's not really The Most Awesome Thing Ever. The reason sysadmins didn't want to tell about Mongrel, might be because it was a pain in the ass to setup and to make sure it didn't went down. It was one of those things you just never wanted to touch again...

<comment><USER8> >It was one of those things you just never wanted to touch again...

Not in my experience, but regardless, for those of use that were there in the beginning (think Rails on FastCGI), Mongrel was one HELL of a nice stop gap.

Thanks Zed.

<comment><USER9> Mongrel was effectively so much better than using FastCGI and it served well for a time. Now passenger is a step in the right direction, easier to setup and monitor.

We had some memory consumption problems also when we decided to migrate and just switching to passenger did little for those. It was really the switch to REE that made the difference. Also the memory was not really from complex database operation, it was for rendering huge erb templates for the Googlebots. In the end there were no reason to always generate those templates and caching solved the problem definitively, but with REE it was already acceptable and we could have let it be for some months too.

<comment><USER8> I haven't personally switched away from Mongrel yet, but the community seems to agree with you and Passenger/REE probably are the "future" (er, current?) best deployment method - which is fine by me.

What bothers me, though, is how for some at least, Mongrel must be completely vilified before Passenger is able to become the next in a long line of Ruby deployments progressions.

Idk, I just don't understand the need for those type of motivations.

<comment><USER10> Or, perhaps, rather than some grand plan to vilify mongrel in order to pave the way for passenger, people are simply expressing their views and opinions.

<comment><USER8> Yeah you may be right, but these almost "religious" deployment transition seem familiar to me, remembering...

FastCGI -> LigHTTP (+others) -> Mongrel -> Passenger, and it seems like we've had a crucifixion at each stage of development.

But idk and it's late.

<comment><USER11> I think at each stage the vitriol has decreased as a function of the maturity of the solutions. FastCGI was desperately bad.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I noticed very similar effects to what are reported here: after moving from Mongrel to Passenger, my memory footprint went WAY down. Leaks went from "holy crap, what am I gonna do??" to "site is working, let's drink beer."

Passenger* is just superb. I kicked Phusion a few bucks, and if you are as pleased as I am then I hope you do too.

* at least on Apache. Passenger on Nginx would crash for me after about a week, so I went back to mongrel_cluster on my non-Apache setup.

<comment><USER13> I wonder if this also involved switching the Ruby binary to the Ruby Enterprise Edition? Or did you move to Passenger and keep the same Ruby binary?

<comment><USER12> Same Ruby binary. Passenger is magic.

</comment></comment></comment><comment><USER14> Is there any technical documentation on mod_rails? I would like to read about the approach it takes, without having to dive into the source code. (I don't have any Ruby experience, and my Apache internals knowledge is probably dated.)

<comment><USER10> See "developer documentation" at <http://modrails.com/development.html>

<comment><USER15> This document is slightly outdated but still relevant for the most part.

</comment></comment></comment><comment><USER16> This is a fairly lame article. There are a lot of good posts comparing the two but this is a waste of time to click on.

</comment><comment><USER17> mod_rails/Phusion Passenger is indeed awesome - getting set up on production was a cinch, and no babysitting has been required at all... it just works.

If you use it, consider turning on global queueing for extra special goodness: [http://blog.phusion.nl/2008/10/29/phusion-passenger-now- with...](http://blog.phusion.nl/2008/10/29/phusion-passenger-now-with-global- queuing/)

Docs: [http://www.modrails.com/documentation/Users%20guide%20latest...](http://www.modrails.com/documentation/Users%20guide%20latest.html#PassengerUseGlobalQueue)

EDIT: (Using with Apache, no experience using nginx)

</comment><comment><USER18> Out performs Mongrel and easier to set up. mod_rack is awesome :)

</comment><comment><USER19> I wonder if this means EngineYard and other Rails hosts will start using/supporting it.

<comment><USER20> We already support passenger and have for some time now. It works very well for most cases but mongrel is still a better choice for some apps that can't run on passenger because of threading use or the need to use amqp etc

<comment><USER6> You probably saw this already, but someone on the rb-amqp list wrote a library enabling use of amqp inside passenger: <http://github.com/danielsdeleo/qusion/>

</comment></comment></comment><comment><USER21> Is the information on this statsheet available on a BSD license?</comment>


A Year of Winners and Losers in Ingenuity - <AUTHOR> http://www.nytimes.com/2010/12/27/arts/design/27iht-design.html?_r=1&src=twr <comment><AUTHOR> Text Only:

[http://viewtext.org/article?url=http%3A%2F%2Fwww.nytimes.com...](http://viewtext.org/article?url=http%3A%2F%2Fwww.nytimes.com%2F2010%2F12%2F27%2Farts%2Fdesign%2F27iht- design.html%3F_r%3D1%26src%3Dtwr)</comment>


FriendFeed: Ex-Googlers Create Social Network Experience Using Feeds - <AUTHOR> http://www.readwriteweb.com/archives/friendfeed.php

<comment><USER2> I've checked facebook about 60% less since I got my FriendFeed account. It really is an awesome site; the UI is like butter. Just wish more of my friends would join.

<http://friendfeed.com/jraines></comment>


What music do you listen to while programming? - <AUTHOR> http://biodegradablegeek.com/2007/12/10/music-to-code-by-what-do-you-listen-to-while-programming/ <comment><USER2> I tend to avoid music with lyrics, while programming. Surprisingly, it distracts me. I also frequently listen the same track for few hours, so I stop "hearing" it and becomes the background.

<comment><USER3> I thought I was the only one who had a problem with lyrics. Parsing language must interfere with the same part of the brain that programming requires.

<comment><USER4> Strangely, even though I'm nearly fluent in English, I can tune out English lyrics effortlessly, but not Dutch ones (my native language).

<comment><USER5> Similarly for me, I can understand spoken english almost perfectly easily but I'm having a hard time understanding even a couple words from an english song even if I try hard. (native language: french)

</comment></comment></comment></comment><comment><USER6> <http://www.thesixtyone.com/james> (click on "listen to radio")

instrumental stuff usually works best, but i like variety.

i've recently become very fond of danger and m83.

<http://www.thesixtyone.com/danger> <http://www.thesixtyone.com/m83>

</comment><comment><USER7> AFX, Aphex Twin, Tool, Boards of Canada, Kyuss, Pink floyd..etc because it makes me think like a computer Beeep...beep...beep!

</comment><comment><USER8> Alex Brandon's Deus Ex OST. Kahvi Collective (all free). Schiller. 120 Days. Yoko Kanno's Ghost in the Shell OSTs. Other minimal or bassy electronic music (James Holden). But when I have to fix some difficult logic, I just put the music away.

<comment><USER9> All of Yoko Kanno's stuff is pretty good. I'm really partial to her songs from Cowboy Bebop.

</comment></comment><comment><USER10> Electronic music with minimal lyrics. It's the only time i listen to that genre - it puts my mind into work-mode.

</comment><comment><USER11> I listen to a song on repeat for a day or two before moving on to a new song. It seems to distract part of my brain so the other part can code. And oddly after 2 days of listening to a song I only know the lyrics to the chorus. Its very strange but works great for me.

</comment><comment><USER12> "Were no strangers to love You know the rules and so do i"

The only song you ever need. Endless loop.

<comment><USER13> Wow! I recognised the lyrics, how scary is that....

</comment></comment><comment><USER14> In really stressful situations, old hardcore or punk (that I know really well so I won't actively listen to it) helps me get things done.

But usually it's just post rock or techno or something else that's kind of boring and instrumental.

</comment><comment><USER15> White noise--ocean waves, rainfall "sounds of nature" stuff. Another post today from science blogs may explain why it works (although I don't have adhd)

</comment><comment><USER16> Just about anything that suits my mood. I do tend towards instrumental music when coding though. Lately it's been lots of Amon Tobin.

</comment><comment><USER17> SomaFM and DI.FM, in particular "Groove Salad" on SomaFM.

</comment><comment><USER18> I'm weird, I have a tendency to sing along to the song I'm listening to while I'm working. It gets me through the non-thinking parts of my day.

I listen to a lot of different types of music. In order of popularity, probably reggae, folk rock, bluegrass, punk and then various other miscellaneous odds and ends. I tend to prefer songs with lyrics that are either clever or witty, or both. A particular favourite of mine at the moment is "The Battle" by Lady Sovereign et al. Lyrics like "Eating MCs like Ready Brek" and "I kill you little kids like morning after pill" never fail to make me smile.

Also, allow me to apologise in advance for the trauma caused by placing the image of a middle class white British guy singing reggae in your mind.

</comment><comment><USER19> I like classical while programming. Check out Otto's Baroque Musick: [http://www.shoutcast.com/directory/index.phtml?sgenre=Classi...](http://www.shoutcast.com/directory/index.phtml?sgenre=Classical)

</comment><comment><USER20> I don't get distracted by music at all.

If I want to get focused quickly, I listen to some particularly horrible electronica (Winnipeg Is A Frozen Shithole by Venetian Snares is a good example). If it's three in the morning, I listen to some minimal electronica (Vladislav Delay, B. Fleischmann both good).

Otherwise, it's whatever I'm enjoying at the moment (recently: brutal hardcore like Circle Takes The Square, weird indie like Frog Eyes and Sunset Rubdown).

Finally, long albums are good because of the longer gaps between ends of songs and ends of records.

</comment><comment><USER21> Lately it's been Crass into Cro-Mags (age of quarrel), dag nasty and damage control. The power of the alphabet. But when I am fleshing out entirely new stuff I need to listen to something that just blows my mind away so I don't even try to drum along to it etc. For me buddy rich stuff from the 70s does the trick. INSANELY complex/fast and super polished in a way that most jazz isn't which is normally a turn off but some how it works with his stuff.

</comment><comment><USER22> I like stuff with driving beats that keep me focused on what's in front of me.

Talking Heads is really great hacking music. "Born Under Punches" is a really good example of a song that you can hack to.

I listen to an insane variety of music while hacking. Some highlights of the past month or so: Bob Dylan, Ruby Suns, Evangelicals, Paul Simon, Anton Webern, The Dodos, Xiu Xiu, The Velvet Teen. A pretty good variety of classic rock, indie rock, experimental and classical.

</comment><comment><USER23> If I'm really in the zone, I'll listen to punk or hardcore like AFI or Saetia and not notice. Other times, I pretty much stick to cello or violin music.

Mostly, silence.

</comment><comment><USER24> livesets.us

Armin Van Buren - A state of trance Above and Beyond - trance around the world Tiesto - club life David Guetta and plenty more. I love electronic music.

<comment><USER25> I also go for <http://etn.fm> sometimes.

I find trance great, because it typically has no lyrics, or even if it does then they are very simple so they just become sounds that are part of song itself.

Once in a while though when I'm at some crossroads and need to truly concentrate on something for 3 minutes I just mute everything around me for total silence.

</comment></comment><comment><USER26> Complex music doesn't distract me, although I also avoid anything with lyrics. I listen to a decent blend of orchestral, chamber, and solo music. Bach is my favorite composer, but I like all polyphonic Baroque for when I need to concentrate.

If I'm in real trouble and really need to focus, I break out Philip Glass. His early stuff, like Music in Twelve Parts, is mesmerizing, really helps concentrate.

</comment><comment><USER27> Wow. The title is almost exactly the same as this much older AskYC question.

<http://news.ycombinator.com/item?id=99936>

My answer is pretty much the same as before: Anything my brain doesn't try to process. I'm still listening to Nujabes - Modal Soul, actually.

<comment><AUTHOR> Oops, sorry. I didn't see an easy way to check for duplicate entries.

</comment></comment><comment><USER28> Daft Punk

</comment><comment><USER29> This question has been asked so many times here, I think it's better to have this sticky.

</comment><comment><USER30> Silence. I am easily distracted.

</comment><comment><USER31> I would say mostly political punk and KMFDM. Listening to music with someone spewing their personal views which most of the time I share, helps anger me and get me going... ;)

</comment><comment><USER32> Anyone else beatbox while they work? I really like rhythm for some reason.

</comment><comment><USER33> Chamber music works great for me. I especially like Mozart's sonatas.

</comment><comment><USER34> None. Listening to music just distracts me.

</comment><comment><USER35> The only music I listen to is music from my brain. May sound crazy but its true. Any music distracts me.

</comment><comment><USER36> Post-rock, because I find it kind of boring and I get distracted by music that I like too much.

</comment><comment><USER21> oh and: <http://en.wikipedia.org/wiki/La_Monte_Young>

</comment><comment><USER37> A lot of hard rock. It compliments the liquor

</comment><comment><USER38> www.limbikfreq.com (Limbik Frequencies)

Lots of experimental electronic music and glitch. Seems perfect for the kind of programming I do...

</comment><comment><USER39> For a long time I was powered by radiohead.

</comment><comment><USER40> lately, the field and clinic

<comment><USER23> Clinic is good, simple rhythm for detailed work. Good call.

</comment></comment><comment><USER41> John Hartford!

</comment><comment><USER42> somafm.com ftw!</comment>


Electric Potential Pong (html5/processing.js) - <AUTHOR> http://www.dllu.net/pong

<comment><USER2> Looks like the author is taking advantage of the recently exposed voting forgery:

      <iframe width="1" height="1" scrolling="no" frameborder="0" src="http://news.ycombinator.com/vote?for=3742984&dir=up&whence=newest"></iframe>

<comment><AUTHOR> But I didn't expect it to work! According to the comment at <http://news.ycombinator.com/item?id=3742893>

"Just loading the vote URL directly or in an img/iframe wont work because votes that don't have a HN referrer don't get counted."

edit: the author of that comment has edited it to remove the part about img/iframe. It DOES work in an iframe in this case.

As of 146 points I have removed the code from the webpage and sincerely apologise for any confusion caused. Nonetheless, I hope that the bug gets fixed soon so that others won't exploit it to promote more malicious sites.

<comment><USER3> Ah, right. That makes it ok.

<comment><USER4> no it doesn't, he didn't even obfuscate it in all the JS he had to be loading for that game already. I demand higher quality trickery!!

</comment></comment></comment></comment><comment><USER5> Game design tip: careful to design your electric field so that the ball doesn't get stuck in the middle.

<comment><AUTHOR> Good point. I've tested and all the levels are beatable eventually, although some are quite long and difficult. The ball gains some speed with each hit, so eventually it will have the kinetic energy to overcome the potential and behave like classical Pong. If I create a more polished version of this, I will likely design the potentials manually; here I was rather lazy in making this proof-of-concept demo so I generated all the levels randomly.

</comment></comment><comment><USER6> The opponent board randomly disappeared on level 6 and didn't come back on the next levels. I then easily got to level 9 or 10, where the ball wants to curve to the lower right immediately, and the ball keeps travelling right through my board resulting in instant losses.

</comment><comment><USER7> This reminds me of Plasma Pong: <http://plasmapong.com/> (se website is down)

</comment><comment><USER8> I feel like the performance of these HTML5 games still isn't quite good enough for them to "take over" just yet.

<comment><USER9> Looking at chrome's task manager, after just loading the page it's memory use grows from 60MB to 260MB before falling back to 60MB, repeating every 4-5 seconds. That seems a bit wasteful.

</comment></comment><comment><USER3> What does this have to do with electricity? I guess "Potential Pong" doesn't sound as good.

<comment><AUTHOR> The ball is charged and resides in an [electric potential](<http://en.wikipedia.org/wiki/Electric_potential>).

<comment><USER3> The inverse square force is extremely common. Plus, I doubt you use the permittivity of free space constant and so on, rather just the inverse square property.

<comment><AUTHOR> You're absolutely right. Gravity is a force similar to the Coulomb force in this regard. If I were to swap the electric potential for, say, a hilly landscape where the ball is free to roll, then the ball would behave in an identical manner where its acceleration is proportional to the gradient of the height (i.e. it tends to roll downhill); just as how in the electric potential it's proportional to the gradient of potential.

Nonetheless, I like electric potentials. The idea for this game came from my earlier attempt Electric Potential Golf (www.dllu.net/em), which was in turn inspired by Electric Field Hockey (<http://phet.colorado.edu/en/simulation/electric-hockey>).</comment></comment></comment></comment>


Mining my way to grad school: an experiment in collaborative mining - <AUTHOR> https://allmine.io <comment><USER2> The links don't work on mobile. Is it just another JS miner?

<comment><AUTHOR> Sorry, do the links below the miner not work?

Yes, it is another miner, but the idea was to flip the idea on its head. Instead of being a site that annoyingly is also using your CPU cycles without your permission, this site is just a miner and that's all. Similar to the Million Dollar Homepage from the 2000s.

<comment><USER3> The Million Dollar Homepage offered something for the people who bought into it. You're not giving people a sense of ownership of the work they've done for you beyond a leaderboard that's pseudo-anonymous. Let them leave a message or something so they can fight for top posting.

<comment><AUTHOR> Hmm, interesting idea. The only thing I'd be worried about is moderating those messages to be "appropriate". I'll think about this more. Thanks for the idea.

</comment></comment></comment></comment><comment><USER4> You want people to mine for you for... nothing in return?

<comment><AUTHOR> See the comment above, and on my website. Yes- this is an experiment akin to and inspired by The Million Dollar Homepage. I don't know if it will work, but it's an idea.</comment></comment>


Lucky 0.17 released. Multi db support, polymorphic associations, and lots more - <AUTHOR> https://luckyframework.org/blog/lucky-0_17-release <comment><AUTHOR> I'm Paul, the creator of Lucky.

If you have any questions or feedback let me know. Always happy to help.

If you want to chat about Lucky feel free to hop on [https://gitter.im/luckyframework/Lobby](https://gitter.im/luckyframework/Lobby)</comment>


GDPR: Smart Practices - <AUTHOR> https://kruschecompany.com/blog/post/gdpr-smart-practices <comment><USER2> There's basically nothing in this article, and whatever there is, is confusing.

For example: they keep referring to "sensitive data", by which they probably mean Article 9 data [1], ie: data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, etc.

That's only a _subset_ of GDPR data, and in my personal experience, rather the exception than the norm. The norm doesn't seem to be discussed at all.

The UK's ICO Guide [2] is a much better guide.

[1] [https://gdpr-info.eu/art-9-gdpr/](https://gdpr-info.eu/art-9-gdpr/)

[2] [https://ico.org.uk/for-organisations/guide-to-the-general- da...](https://ico.org.uk/for-organisations/guide-to-the-general-data- protection-regulation-gdpr/)

<comment><USER3> Yep, pretty awful. OP works for them : [https://news.ycombinator.com/submitted?id=_Tanya_](https://news.ycombinator.com/submitted?id=_Tanya_)

<comment><USER4> That's totally fine under HN guidelines.

</comment></comment></comment><comment><USER5> The article begins with the following:

        "The new rules were developed in response to a dramatic
        increase in cyber attacks and are aimed at combating such
        attacks through the cooperation of state and commercial
        enterprises and organizations."

No, the rules are there to protect user's personal data. Not just from attacks by external actors, but also from abuse by the companies who manage the data.

</comment><comment><USER6> > Meanwhile, if GDPR were in effect, Uber would be subjected to a hefty fine. > If to be precise, up to EUR 20 million or 4% of annual turnover.

Is this true? I mean does GDPR punishes for breaches or does it punishes for not following GDPR rules? I mean you can get hacked regardless of obeying GDPR or not.

Alright, they could have been fined for not reporting breach - yeah.

<comment><USER7> Primarily the fines are for not following GDPR rules I believe. The fines are well explained in the article below [https://www.i-scoop.eu/gdpr/gdpr-fines- guidelines-applicatio...](https://www.i-scoop.eu/gdpr/gdpr-fines-guidelines- application-penalties/)

</comment></comment><comment><USER8> The title should be "GDPR: Not-so-smart Practices by someone who doesn't understand GDPR"</comment>


Nic Brisbourne responds to PG on seed funding - <AUTHOR> http://www.theequitykicker.com/2010/08/13/more-on-seed-level-funding-a-response-to-paul-graham/ <comment><AUTHOR> Duplicate of my comment on the blog:

How much are Twitter/Facebook/Spotify spending on customer acquisition? Is that really what they raised money for?</comment>


Hackitat – A film about political hacking, world wide - <AUTHOR> http://hackitat.com/

<comment><USER2> Can't wait to see it when it's finally completed. Perhaps it will fill in the holes in the hacktivist narrative that We Are Legion left open?

</comment><comment><USER3> The movie looks really interesting. I cannot figure out when it is expected to be completed. Does anyone know?

<comment><USER4> I thought I saw a Kickstarter page for this a month or two ago but I can't find it now.

I assume that it making the front page means they met their funding goal? When I first saw the Kickstarter page they didn't seem very close, but good for them! I'm excited to see the film.

<comment><USER5> indiegogo page: [http://www.indiegogo.com/hackitat-a-film-about-political- hac...](http://www.indiegogo.com/hackitat-a-film-about-political-hacking- world-wide)

Looks like they were going for $80,000. Almost made it to $30,000.

Looking forward to seeing the end result. I can't get enough of documentaries on subjects like this that are produced by people that actually have half a clue.

<comment><USER6> As a chilean was kind of a surprise to see chimbalab listed as political hacking. While I agree that control technology for your own es a political act, there were collectives at the same time doing work on social and political spaces. Free internet, radio or even tv in 'poblaciones' (excluded poor places of the city), huge media projects that involved 90% of public communications from local activists, and even a open, communitary and free access hacklab. So i'm really forward too see what they have to say.</comment></comment></comment></comment>


Stop Gatekeeping Email - <AUTHOR> https://stop-gatekeeping.email/ <comment><USER2> A work of art. Good refutation and enjoyable to read.

</comment><comment><USER3> Great parody, but factual inaccuracies and the snarky undertones ruin the point.

<comment><USER4> Frankly it's not even a great parody. Sound more like

> 2019

> Still using plaintext

directly from /g/. As you noted it's at times inaccurate, uselessly snarky and it distorts logic to prove a point, like saying that since something is a standard it should be blindly accepted and you're a moron for not accepting that some clients can't send plain-text email (which is IMHO a problem with the client, not those asking for plain-text email).

The point about 72-characters wide email, on the contrary, is spot-on. I mean, I would hope that a client can wrap text correctly, regardless of the actual line width. Alas, many terminal emulator still don't do this, which may be considered "UNIX philosophy" (that is, if you need your text wrapped, pipe it through a wrapper first) but to me it's just annoying.

</comment></comment><comment><USER5> Related link [1] and discussion [2]

[1]: [https://useplaintext.email/](https://useplaintext.email/) [2]: [https://news.ycombinator.com/item?id=20513987](https://news.ycombinator.com/item?id=20513987)

</comment><comment><USER6> An article called 'Stop Gatekeeping Email' has a header that reads 'USING NORMAL E-MAIL LIKE A NORMAL PERSON'.

I'm sure the irony is not lost on the author, in fairness.</comment>