Do You Really Need a JavaScript Framework? - <AUTHOR> https://www.bugmuncher.com/blog/do-you-really-need-a-javascript-framework/#.Wagv52fpHFc.hackernews <comment><USER2> TL;DR OP chose Ember for a small project, found himself [1] "fighting with Ember a lot", and felt that it would have been easier/quicker to build just a Rails CRUD app in the first place.

This is a standard challenge with any framework, but the issue is especially acute in Javascript-land.

Many JS libraries and frameworks exist to cover missing libraries and functions that would be "batteries included" in other languages. As core JS has evolved (along with CSS), the value of those frameworks decreases, but their legacy is deeply present in Github, StackOverflow discussions, and other libraries.

JQuery is one example: a minuscule wrapper around document.querySelectorAll() plus ES6 arrow functions gets you 75% of the way there, without having to understand how/where JQuery is being "clever" in various event handling corner cases.

Bootstrap is another: flexbox is not perfect, but it replaces a lot of CSS cruft and JS hackery.

Moral: above and beyond the usual tradeoffs for framework decisions, make sure the framework/library is still as relevant _today_ as it was N years ago. Don't just go with inertia.

[1] The author's name is "Matt".

<comment><USER3> > Don't just go with inertia.

Well. Inertia is powerful: A new project I start in jQuery today? Next to 100% chance I can pick up a dev who has seen jQuery, even in three or four years. Worldwide.

A new project I start in AngularJS or whatever is the current fad? Good luck if the framework hasn't done yet another BC break or hasn't vanished into oblivion by then.

<comment><USER4> At this point, I think React seems popular and stable enough that there's not much of a point in going with jQuery for the sake of stability/popularity. And there's still a huge pool of people with AngularJS 1.x experience, too. What's more important, in my opinion, is what tools are going to be easiest for you and/or your current team to get stuff done.

</comment></comment></comment><comment><USER5> Reducing complexity in general, especially for new and small projects, is very good advice.

For the past several years I've started new personal projects with PostgreSQL+Python+[Flask|Django] on the backend and Bootstrap+Knockout on the frontend. I recently tried to start a new project with React instead, and while the actual act of development on a working React-based codebase is fairly nice, getting it to that state apparently requires a load of dependencies that I simply wasn't prepared for.

I retreated back to using Bootstrap alone for the prototype and found it much easier to work with than I remember. I'm sure part of that is that I've gained a ton of experience since I last used jQuery without a UX framework like Knockout, Ember, or React - but part of it also seems to be that browsers have come a _long_ way since then.

In fact, I'm considering eschewing all front-end dependencies for my next prototype - ES6 has far better support in modern browsers than I recall, as do the more recent CSS capabilities like flexbox.

I figure that at best I'll have a lightweight, clean project that works well enough for a prototype; at worst I'll learn a lot about where modern web standards are.

<comment><USER6> >In fact, I'm considering eschewing all front-end dependencies for my next prototype - ES6 has far better support in modern browsers than I recall, as do the more recent CSS capabilities like flexbox.

I think this is a good idea for personal projects and solo developers. But I've found that as soon as you bring other people on board, you end up spending more time explaining design decisions and dealing with unforeseen complexities related to scale than building features. It's really tempting to go without a framework for sake of simplicity, but you tend to hit a brick wall in productivity until eventually just reinventing the wheel and rolling your own "framework" which can end up an undocumented bespoke nightmare if you aren't _extremely_ careful. I wouldn't equate reducing dependencies with reducing complexity. Good abstractions are what programming is all about.

<comment><USER7> You get that with Javascript frameworks anyway.

React - Component Design, Folder Structure, CSS Implementation, Data structuring, Testing Frameworks, Linting Frameworks, GraphQL vs Traditional REST vs GRPC...

It doesn't solve all of your problems like you think it would. You still have onboarding, and you'll always need onboarding.

<comment><USER8> And since JS frameworks tend to be moving so fast, you'll _always_ need onboarding... even with current devs.

</comment></comment></comment></comment><comment><USER9> Does the author have any experience with anything but Ember? How interactive are their interfaces? How does the person responsible for UX feel about only using server-side rendering? Did he/she just do a crappy frontend implementation and is now falling back to a fixed mindset rationalization?

<comment><AUTHOR> I feel like I answered most of these questions on the post, but anyway:

1 - I've tried a number of frameworks, although ember is the only one I've used extensively. As I said, the issue was mostly with the thick client / thin backend api set up rather than specific ember stuff, with the exception of ember being overly opinionated.

2 - not interactive enough to require a js framework

3 - BugMuncher is just me, so I'm also the UX guy and I think server side rendering is awesome

4 - no (in my own humble opinion)

<comment><USER10> Just wanted to ask about 3:

Why is server-side rendering awesome?

I've only found that:

1\. It consumes a lot of server CPU that's of limited capacity

2\. It's often slower than rendering on the client (Since the client usually isn't under load)

3\. You loose interactivity in the browser because you have to reload the whole DOM on every new page

<comment><USER11> He said he was using Rails. Rails has the ability not to do #3. Google "Turbolinks".

<comment><USER10> Since I've never used Rails, I've never heard of it before.

Have to say, that's quite impressive :)

</comment></comment></comment></comment></comment><comment><USER12> Sounds a bit like crying to me. You built something using a framework and it didn't workout, "so what", rebuild it again. What's next, another blog post about why Rails wasn't right either because of scaling issues? There is no write once and live forever model. Build what you need today, learn, and if you have to rewrite it 10 times then do it.

Frameworks save people time. Not every framework is perfect or maybe 90% of the functionality is never used, but alot of good stuff that solves problems. Maybe the lack of research on your part before you chose something like ember is the real root cause, or maybe the lack of building a proof of concept to determine if ember was the right choice before yapping about your own failure with a framework that you really don't know.

</comment><comment><USER13> > I used quite an early beta of Ember to build BugMuncehr's new feedback > interface.

> I wanted to add a full REST API to BugMuncher, even though no-one had asked > for it.

> I committed to using Ember before I knew enough about it.

> I didn't keep it simple, I was stupid.

> Web apps often look complicated from the outsite, but underneath most of > what they do is simply Create Read Update Delete, and you really don't need > a fancy JavaScript framework to do that.

So, to summarize, you failed at your first usage of a JavaScript framework due to your own bad decisions. Therefore, all the benefits SPA structure can offer the multitude of other projects is meaningless as, "...most of what they do is simply Create Read Update Delete." Honestly, you've just swapped the bandwagon effect for confirmation bias as you fell back to Rails.

<comment><AUTHOR> I never said "all the benefits SPA structure can offer the multitude of other projects" were meaningless, in fact I specifically said there's a time and place for them. My point was most web apps, particularly an SaaS control panel, may be better served with a simple CRUD app

<comment><USER13> > I never said "all the benefits SPA structure can offer the multitude of > other projects" were meaningless, in fact I specifically said there's a time > and place for them.

No, you said:

> There's a time and a place for JavaScript frameworks, and whatever it is > you're building probably isn't it.

Do tell us when a SPA structure is appropriate... Then, explain how that sentiment is any less "arrogant" than Ember.

</comment></comment></comment><comment> aaron-lebo As soon as you are doing more than simple HTML forms, a framework is useful. There are some things that HTML does very well, but you hit the limits on interactive UIs fairly quickly, managing state with plain HTML and HTTP is a pain.

Also, it's possible Ember is bloated. The nice thing about Mithril and some other frameworks is it takes so little to have routing, reusable, components, etc. We're talking 20-30 lines. At that point you are hurting yourself if you have a UI of any complexity and you aren't using a modern approach.

</comment><comment><USER14> I am surprised at the number of people who think they can do everything without a framework and that everything would just be better if they weren't weighed down by the horrible affliction of using one. Frameworks provide real value and while not required for many small applications they can be a huge advantage in large enterprise applications.

For example if you are using Ember you gain the advantage of a client-side ORM called Ember Data which handles caching and cache invalidation for your API data. Did you handle that in your non-framework application? If you did, how long did it take you to implement? How well tested is it? How many developers besides yourself have reviewed it? How much documentation did you write and how long does it take to bring new developers up to speed on it? If it breaks, who will fix it?

Multiply that by ten or twenty depending on the framework and you start to see what the benefits are.

</comment><comment><USER4> Here's a relevant post DHH made just a couple days ago: [https://m.signalvnoise.com/hybrid-development-is-how-we- give...](https://m.signalvnoise.com/hybrid-development-is-how-we-give-our- teams-of-three-superpowers-2021a84437d)

</comment><comment><USER15> Absolutely not. I've literally never thought while actually coding in 20 years that something would be easier with a framework, not once.

However, almost every day, I think things would be easy without the framework constraints of projects I've inherited.

Often I subvert them because I don't have time for the ceremony and formalities and instead I have actual work to do.

And 100% of the time, without exception, the result is faster, simpler, and more maintainable without the thousands of lines of framework code and the FactoryFactoryProviders tagging along.

Making things as fancy as possible isn't a virtue. It's grossly inept and deeply negligent. They are the antithesis of engineering. the prime objective is to remove complexity and have direct functionality.

<comment> aaron-lebo I don't see avoiding frameworks is superior to using a microframework like Sinatra. The point of a good framework is it abstracts things that you have to do repeatedly.

You can't really operate without a framework in some domains, if you aren't using an existing one, it's because you've written your own.

<comment><USER15> at some point it's a debate on definition. To me, a "framework" as a strawman (and unfortunately, usually in reality) has the following features

* hoses the stack trace and makes stepping through code useless and futile

* introduces nearly indistinguishable vague abstract ideas that have very real differences in code that are not well-documented

* changes core api and underlying functionality every few months and breaks backwards compatibility

* makes code action-at-a-distance spaghetti where one task is strewn around multiple files in different directories through some mystical dance of indirection

* is an order of magnitude slower while claiming to be zippy, lightweight, and fast

* constrains and restricts how you can use the language and express your ideas

* rewrites or suppresses core diagnostic, logging, and debugging features built into the language with their own variation (usually called something like EasyLog or SplendidDebug or some nonsense)...

* shoehorns your problem into a very specific and narrow domain

* introduces new configuration files and changes their formats at nearly every version

* does things very naively (such as busy-polling a file to look for changes, pegging a cpu core, instead of using inotify(2))

* has marketing like a new iPhone so everyone is onboard with the hot-newness of it all

* will be dead and abandoned in about 18 months.

It's essentially people who don't know what they're doing trusting other people who don't know what they're doing all surrounded by mountains of hubris

</comment></comment></comment><comment><USER16> > So what's wrong with JavaSript Frameworks?

> Having separate codebases for the API, control panel and feedback interface > seemed like a good idea, but in reality it just meant more software with > more dependencies to keep updated, more tests to run, and a much more > complicated deployment process.

Huh? What am I missing here? He made the mistake of creating separate code bases blames it on using a Javascript framework? He could have kept in in the same code base just like using Javascript without a framework.

He then complains about Ember and that's all the explanation we get for why Javascript frameworks are bad. That paragraph didn't even remotely answer the question.

> Even if I was a seasoned pro with Ember, it's still a case of two frameworks > vs one, two codebases vs one, two test suites, two deployments processes, > you get the idea.

He makes the same argument again but even worse. Why do you need 2 codebases and 2 deployment processes? You don't. I still don't get how this has anything to do with Javascript frameworks. Sure, you need 2 test suites, but you also do without a Javascript framework.

I do agree that more code bases and deployment processes is more complicated, but has absolutely nothing to do with Javascript frameworks.

</comment><comment><USER17> Yeah I feel guilty and also not hired full time, currently using plain LAMP and freelance, but I can develop with it. In particular with WordPress, I'm able to open plugins read the code and change/add to them. Speed of development too. But yeah... Starting to learn Angular will decide which PHP Framework... Throw Go in there too. Damn... Gotta catch up.

Edit: I don't personally use WordPress but saying the stack is LAMP/LEMP so I can work with it. It's just a matter of dealing with the random unclosed PHP tags and figuring out the interconnected classes. It's good for learning how to structure code I still have to use classes myself but assume I need a reason to use object oriented like a video game.

Same with implementing personal GIT server and CI/CD design.

One thing, I imemented defuse/php-encryption recently with memcache was watching the server's htop and see the php-fpm pool requests appear in the processes neat.

So far using Angular CLI, the real time updating is sweet, also the event bindings loops on what appear to be HTML... Yeah gotta spend more time on it this Angular 4 in 60 minutes was a good intro but gotta use it.

<comment><USER4> For what it's worth, I found React to be much easier to grok than any of the current competition (even Vue)

<comment><USER17> I was slightly confused at first I thought rxjs was React nevermind haha.

Thanks for the insight. I don't know it may be bad I'd like to get hired and everytime I check indeed I keep seeing Angular. so I should learn it but not arguing with faster dev, secure, best practices...

Was thinking too what's the difference with being hired somewhere versus getting your own clients... I don't know. Good to be single

Also I don't have a car to get to the jobs so... I'm thinking I'd rather have the "burn rate" and work online/learn more in the mean time. Do my 2 days restaurant work.

Edit: sorry rambling, I love this freedom, work, sleep whenever. I don't have a sleep pattern and sometimes can't sleep at all. Then I can crawl into a dark spot and sleep almost an entire day. Still surreal getting paid from the internet.

<comment><USER4> If you do keep seeing Angular, it's likely the old AngularJS 1.x stuff. At least, that's how things are where I'm at.

<comment><USER17> I couldn't tell the difference. Offhand it seems nuts like when you create a project and it builds all the folders. I am under the impression to deploy you just move the folders over... Something said somewhere "they're just static files" unless you're using postgresql or something as well. Yeah... Man I'm behind.

Thanks

</comment></comment></comment></comment></comment><comment><USER18> Frameworks always mention `routing`. Its not very hard to write some javaScript that sends url A to function A, etc.

</comment><comment><USER19> Most likely will get bashed for it, but.. I absolutely love Angular 1. Productivity is through the roof for me. (caveat, I build small dashboards/automation/tooling frontends). And no fancy build process, sometimes I just work off 2 files (1 HTML, 1 JS)

<comment><USER20> I am working on a product with multiple engineers and we adopted Reactiflux + SPA + Node + a bunch of fancy tools.

While I love that stack, it took me a while to realize that for most of my side projects, building alone a prototype with all those things is killing my productivity. A messy Rails api with angular1 or even Rails + ERB are way quicker.

Letting go best/latest practices and go for the the non-fancy (and sometimes a bit dirty) way is harder than it seems.

</comment></comment><comment><USER21> I just built a small client project in vanilla JavaScript + jQuery.

It was beautiful.

</comment><comment><USER22> I looked at a lot of them at todomvc.com and decided I didn't want or need a framework. Instead I chose to use Apache web server, CouchDB, PouchDB, jQuery, and Bootstrap.

I chose those tools after boiling my brain over which of the JS Frameworks there was "best" and really couldn't come to a conclusion.

After a few beers one night it occurred to me that maybe I should look for what was "easiest for me" instead and that changed how I looked at it entirely.

</comment><comment><USER23> Good thought but I am not sure if OP's examples illustrate his thought well.

Same thought, another example: I like React + its ecosystem quite a lot but often, no, actually most of the times, I realize that I don't need React because the project I am just building is more or less kind of a landing page with some simple UI.

Then, I rather use Pug (former Jade) + Stylus + Node. Super simple, proven and you can go quite far.

</comment><comment><USER24> To answer the question directly, no you do not.

However, please do enumerate all the wheels you'll be reinventing if you choose not to.

If you _do_ choose a framework, please make sure it covers most of the requirements of your project. If it doesn't, or you're not sure, then maybe you don't understand something so ask for help.

</comment><comment><USER25> There are server-side libraries like Unpoly ([https://unpoly.com/](https://unpoly.com/)) that give you most of the benefits of heavyweight JavaScript frameworks, but without the complexity and code duplication.

</comment><comment><USER26> Do you really need a backend framework?

I'm doing some projects using only React/React Native and static edn files to load the data and it has been a great experience.

<comment><USER5> > Do you really need a backend framework?

Actually, probably not. It's trivially easy to create a simple Python web application using only Werkzeug, or even using WSGI directly.

<comment><USER26> Or generating all static versions of the content you want to serve.

</comment></comment></comment><comment><USER27> This question doesn't have a yes/no answer...</comment>


How to present like Steve Jobs  - <AUTHOR> http://www.tuaw.com/2008/08/08/how-to-present-like-steve-jobs/ <comment><USER2> This links to a blog with a link to an article. The article itself is reasonably interesting:

[http://www.businessweek.com/smallbiz/content/jan2008/sb20080...](http://www.businessweek.com/smallbiz/content/jan2008/sb20080125_269732.htm)</comment>


Adobe to buy Omniture for $1.8 billion - <AUTHOR> http://www.omniture.com/press/777

<comment><USER2> This strikes me as a poor fit, way too expensive, and betting on the future of the Internet playing out in ways that are bad for open standards and thus bad for consumers. Betting on bad outcomes for consumers is a dangerous business.

Every major player _except_ Adobe wants to see changes to how video and rich content are delivered on the web, and some of those changes (the standards- based ones like HTML video) tend to align with what consumers want (more widespread availability of video and rich content on their phones, netbooks, other operating systems, etc.)...and this acquisition is betting that Flash and Adobe content delivery mechanisms will become _more_ important to the web ecosystem in the future. $1.8 billion is an awful lot to spend on something that seems very likely to decline in importance going forward.

Of course, I could be misunderstanding Omniture's value and how diverse their products are. Their website is a bit vague and confusing. Then again, I don't have an MBA, so I might just be missing something.

<comment><USER3> _betting on the future of the Internet playing out in ways that are bad for open standards_

I understand why you think _adobe_ is betting against open standards and against consumers, but why do you think that _this move_ is doing that?

BTW, I am definitely not an expert on this matter, but it seems to me that people can get pretty dogmatic about standards. Adobe managed to get more options in to most people's browsers in a way that works. Even standards might benefit from a little competition.

 _way too expensive_

Can you elaborate? Stock is at a relative low. Omniture's revenue is about 1/6 of sale price (they are not profitable, but they are growing).

 _This strikes me as a poor fit_

I don't know a huge amount about this company, but judging by their income statement, they seem like a services company at least as much as a product development one.

      -                     31-Dec-08       31-Dec-07            31-Dec-06
      Revenue               295,613         143,127              79,749
      Cost of Revenue       125,940         53,364               31,826
      Research Development  36,966          17,257               8,732
      Selling General & Admin175,851  	85,828               47,334

The interesting thing is that Adobe has bought a company that looks like it is primarily a consulting/customisation/sales company.

<comment><USER2> _I understand why you think adobe is betting against open standards and against consumers, but why do you think that this move is doing that?_

I'm just wild-ass guessing, as usual.

My impression is that Omniture's unique strength is in Flash video analytics, in particular. But I may be wrong about that. I don't know much about them, actually.

The graphic Adobe provided led me to believe that they view this as fitting analytics into Adobe's existing content workflow, which includes Flash/Flex/Air/whatever, and not a lot of standards-based approaches to the web (they work with standards, too, but it always seems an after-thought and an also-ran technology). So, if they envision this as a way to further lock companies into the Adobe web deployment silo, which is what it seems like to me, then I think it's a bad move...because it's betting against open standards and consumer freedoms winning in the end, and I always consider that a suckers bet.

 _Can you elaborate? Stock is at a relative low. Omniture's revenue is about 1/6 of sale price (they are not profitable, but they are growing)._

They're a service business, as you noted, and a service business that isn't profitable (but growing) seems like the old, "We're losing money on every sale, but we'll make it up in volume!", philosophy. If growth doesn't result in increased efficiency, as it rarely does to a significant degree, in a service-based business, it seems like growth isn't a useful metric.

I wouldn't think this would be a good fit for Adobe _because_ their value to the market is product-based, and this gives them a (currently money-losing) service-focused business to manage.

But, as I said, I have no idea what I'm talking about. I just choked a bit on the 1.8 billion number for a company that I can't imagine being worth that much (and it is entirely plausible that I'm showing a lack of imagination).

<comment><USER3> I actually don't know what to make of acquisitions when it's two public companies.

That $1.8b is more or less a market price. Think the market is over inflated? What difference does that make if you're own assets are valued by this mechanism also?

<comment><USER2> Yeah, the market is dumb sometimes.

Regardless, my primary concern, if I were at the helm at Adobe, would be trying to figure out how to make this seeming odd couple work out right. I don't see how it can possibly add $1.8 billion to the value of Adobe, but maybe I'm short-sighted.

<comment><USER3> Well, assuming that it is worth somewhere around $1.8b (either because of its intrinsic value or because you could sell it for around that), it has already added about that even if they do nothing but just own it.

If they have any sort of plan for really integrating (I think they might have a history of doing this), it probably means they want the mature sales/consulting/customisation part of the business. The technology side, as mentioned elsewhere, is not that interesting.

</comment></comment></comment></comment></comment></comment><comment><USER4> I know Adobe, but I don't know Omniture. This may be a dumb question, but what do they do?

And how does this mesh with Adobe's product line? Based upon initial comments, it looks like this may be the bigger question.

<comment><USER5> Omniture's main product is web analytics software (a hosted solution)

They're trying to move that model into more traditional apps as well. Like tracking flash or AIR apps, they even do some analytics on some connected game consoles.

On the surface its a strange fit.

<comment><USER6> Yeah, no kidding. Plus, adobe doesn't seem to have the money up front- remember, they asked their staff to take unpaid vacation this year-- this seems like a very strange way to say 'screw you' to their investors.

<comment><USER7> 3 weeks unpaid time off, if my recollection is correct. And then they go spend that kind of cash on an acquisition, I doubt it will create a lot of good will inside the company.

<comment><USER8> I know a few companies which have cut benefits to their employees while at the same time acquiring other companies and it makes perfect sense.

1) It's a buyers market because a lot of companies are looking for an out even at reduced valuation. 2) Employees are similarly not going anywhere in a climate like this so you can cut benefits for the time being because everyone is cutting benefits.

Look at the acquisitions as a long term investment whereas the reduced benefits are a band-aid.

<comment><USER9> "makes perfect sense" -- if you don't mind really high turnover when "good times" return AND low productivity for your captive employees.

<comment><USER8> you're assuming that the companies won't reassess when the situation recovers. that's why I specifically said 'band-aid' as in a temporary measure.

and when the benefit reductions are in lieu of lay-offs, morale shouldn't be affected. people should be far-sighted enough to realize that everyone has to scale back.

if the companies don't readjust later then it goes without saying (or so I thought...) that they will lose employees.

the bottom line is that there is good sense in it.

<comment><USER9> "when the benefit reductions are in lieu of lay-offs, morale shouldn't be affected" -- in isolation, i agree. I think good will is easily lost and hard to re-earn, and spending a ton of cache while asking people to cut back is pretty harsh in my book.

"if the companies don't readjust later" .. i don't think people forget so soon. Also, the most effective people still have options in the downturn and are the ones you really can't afford to lose.

Mergers are really hard to get right, and you need buy-in from on high all the way down through the effected organization.

The bottom line is that you need to account for the ill will internally when you are considering making a decision like this. It may very well be the optimal choice for increasing short-term shareholder value, which is a publicly traded company's number 1 priority.

Now, if Adobe also announced that they'd pay doubletime for vacation for employees that took the unpaid time off and stuck it out, that'd be a Good Thing.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> What this acquisition demonstrates is that there is a lot of established vendors who have cash burning a hole in their pocket, but no organic sources of growth. Years of bureaucratic culture - I would have said marketing culture but Apple does marketing well, so it would be a disservice to real marketeers to call Adobe's a marketing culture - has destroyed the technology soul of the company. Result: clueless management goes and overpays, aided and abetted by investment bankers (public) or VCs (private).

This disease abounds in the industry. Sun overpaid for a series of companies over a 7 year period; Intuit has acquired and done nothing with a whole lot of them; the less said about Yahoo the better; and VMWare + SpringSource ($400 million?) ...

I guess there is hope for a lot of start-ups yet ;-)

<comment><USER3> Adobe has a reasonable good record with acquisitions.

<comment><USER11> Yup, the acquisition of Macromedia comes to my mind. They have leveraged that pretty well.

</comment></comment></comment><comment><USER12> Hypothesis: adobe is the content-creation-tools company (and has flash).

Omniture+Adobe leads to: deeply integrated content+analytics, eg the ability to author web or flash content with very fine-grained data capture and analytics.

<comment><USER13> That's a lot money to spend on an analytics platform for Flash.

I can see that it might be big for video analytics (since most web video is Flash/FLV), but ...

Perhaps Adobe is hedging it's bet on Flash being a dominant web platform in the future? ... maybe they have plans for other (HTML5?) web publishing products/services?

<comment><USER12> It is if it's just that.

I was thinking it'd be also like pdf and that other format adobe's been working on for ebooks (basically similar to pdf but better about reflowing text for different screen sizes) would wind up having fine grained analytics platforms built in (obviously in supported readers only) @ the chapter and paragraph levels or whatnot.

That kind of thing.

</comment></comment></comment><comment><USER14> Maybe Adobe will invest a few bucks in making the code/documentation behind Omniture's tracking system less like beholding something from an H.P. Lovecraft novel.

<comment><USER15> Yep, the marketdroids running Adobe are definitely going to invest money in R&D and improving their code. Look at CS4! Oh, right.

Definitely seems like a baffling move from the outside, but to be honest virtually everything Adobe's done in the past few years has been bizarre and counter-productive. Frustrating, because skunkworks projects like Lightroom (sorry, Adobe Photoshop Lightroom) show that the engineering heart of the company beats on. It's just got arteries clogged with bullshit, nonsense and Flash.

<comment><USER16> I agree with everything, except that I think Flash is also a great product. FutureSplash Animator (oh, those were the days) was a revolutionary product that blew the crap out of the only other web multimedia solution at the time (which was Shockwave). It was vector based (truly revolutionary in 1996!), small, fast even on computers of the time. Even after the acquisition by Macromedia, the introduction of simple video streaming to Flash completely changed the economics and hence the popularity of online video, which produced YouTube, Hulu, and other game-changer online companies.

Since the second acquisition (by Adobe), Flash has been buried under the mountain of bullshit you've mentioned, but Flash was and is a great product, as evidenced by its ubiquity -- 98% of desktops in the world have Flash installed, more than have Microsoft Windows. Pretty amazing stuff.

<comment><USER15> There are a lot of great products in the Adobe stable -- Photoshop defined an industry, InDesign has redefined one, PDF revolutionised a lot of things (storming barricades put up by Postscript, which is also an Adobe product). The problem is that Adobe's dreadful stewardship means they all go to bloatware shit in the end.

Flash may have been a great product, but it certainly isn't anymore. And its ubiquity simply shows the popularity of things people have done with it -- video being the big driver -- and doesn't prove that it is "great", any more than the number of Windows seats prove its greatness.

The Flash runtime on the Mac is so poor that even their Flash PR-blogger suggests you get a flashblocker (there are also rumours that ClickToFlash was originally an inside job -- thanks for taking pity on us!) to deal with it. All the while he protests that Adobe doesn't need to do anything to improve it to deal with the challenges of HTML 5, because only "minority" browser vendors care about that, and IE will always be king. He'd better hope so.

</comment></comment></comment></comment><comment><USER17> Hm, $1.8 billion. That's roughly 2.5 million copies of Photoshop CS4.

<comment><USER18> That's not even that much... (2.5 million I mean).

</comment></comment><comment><USER19> It is good to see the M&A activity picking up. Zappos, Mint, now Omniture. The fact that companies can get enough cash to make acquisitions is a good sign the worst is behind us.

</comment><comment><USER20> I don't know too much about Omniture. But I recently met the chief of online marketing of Lenovo and after much prodding about how big companies manage their marketing, he told me they all use Omniture.

</comment><comment><USER21> I definitely didn't see this one coming.

</comment><comment><USER11> I think Adobe has bought Omniture's sales fleet, not its technology. Omniture sales team has significant reach across all big publishers on the web. Almost every big player knows or has used Omniture's testing, targeting or analytics solutions. Adobe may well utilize that reach to cross-sell its proprietary technology.

</comment><comment><USER22> This buyout doesn't make a ton of sense. Hopefully adobe is buying it to make the flash integration better since ad tracking is so important and omniture never worked great with flash.

</comment><comment><USER23> To me, this is Adobe's play at being everything that it takes to build websites. Start with the tools and popular platforms and move right into the measurement and optimization.

</comment><comment><USER20> I really respect Adobe for its acquisition acumen.</comment>


Is It Time to Rewrite the Operating System in Rust? - <AUTHOR> https://www.infoq.com/presentations/os-rust <comment><USER2> Short answer: "don't be silly, too many hard things in the Linux Kernel get correct in Rust"

What they should look into is trying to build eBPF and XDP in Rust. Then you get that compiled language speed and safety in the kernel.

A few quotes:

"I view OpenBMC as on its knees with tears streaming down its face begging for someone to please rewrite me in Rust, because if we're going to have a BMC that's going to hang out a socket over the internet, God forbid, or even over the network, I want that thing to be in Rust."

"That the beauty of Rust is its ability to interoperate, cooperate, with native systems or C-based systems; allow for vistas to open up."</comment>


Definition of Success - <AUTHOR> http://www.immadsnewworld.com/2009/09/definition-of-success.html

<comment><USER2> I use a simple metric:

 _How will my autobiography read?_

If I'm improving the quality of my autobiography every day, then I'm probably doing something right. If I'd be too embarrassed to write down some aspect of my life, or if it would have too tenuous a connection to the rest of the story, then I probably need to change course.

This metric also makes it clear that success is in how you live your life rather than where you end up. Your life's final destination is only going to fill one page. The journey of your life needs to fill the book.

<comment><AUTHOR> I like that one too.

edit: though some thing in an autobiography might not be things that make you happy but might increase its interest for the reader.

<comment><USER2> I take happiness, and the pursuit thereof, as a constant. Happiness is something that you find within your circumstances -- it comes from within yourself. When we talk about _success_ we are referring to a sort of deeper satisfaction with your life. We're talking about mission and purpose, about an interesting life and a life well-lived. The idea of a good autobiography encapsulates exactly those things.

</comment></comment></comment><comment><USER3> This are differences in definition.

For some, success is a destination. For others, it is a path.

(Also, as an aside: is it just me, or do us nerd types spend more than half our communication bandwidth arguing over terms and who is right?)

<comment><USER4> > is it just me, or do us nerd types spend more than half our communication > bandwidth arguing over terms and who is right?

This is a Good Thing. The alternative is _not_ to argue over terms and consequently to waste time just talking past each other. (See: politics)

</comment></comment><comment><USER5> I am just a bit more cynical. What is personal success?

I will consider myself successful with the knowledge that if I die to-morrow, there will be some people crying at my funeral and these will not be my creditors.

<comment><AUTHOR> If that is your definition of success than aren't you already successful?

What about the degree of success? Are you more successful if the most people possible are crying with the greatest passion?

Shouldn't success give you a more enjoyable life while you are still alive?

<comment><USER5> Yes, I consider myself successful. As a corollary to what I have said correlating success with people is a better metric than correlating with money. The article blurbed something about exercise and a strong body. Well are you going to be successful at 70 based on this?

Putting people first in your life will give you a more enjoyable life, would help you get through during your life's failures and no-one will say I am glad this motherfckr kicked the bucket.

> Are you more successful...

As soon as you put the more or less words before successful you lost the game. You measuring success against materialistic targets. Anyway if that's your cup of tea is ok by me!

<comment><AUTHOR> > correlating success with people is a better metric than correlating with > money

Sure, I agree. I did that

> The article blurbed something about exercise and a strong body

You mis-understood or I did not communicate properly my sentance I said "Exercise myself to the highest potential". I meant exercise in the sense or work to my fullest potential. "blurbed" seems like a bit of an unnecessarily argumentative phrase.

> As soon as you put the more or less words before successful you lost the > game

Hmm, I think you view a lack of success is a negative thing, where as I view degrees of success as a way of something to achieve. If you just think you are success and have nothing to achieve then that is fine. It personally drives me. None of my metrics were particularly materialistic

Any way this is just my opinion, I am not trying to impose it on you

</comment></comment></comment></comment><comment><USER6> Success = achieving/exceeding set goals.

<comment><USER7> Does this imply that success without goals is impossible?

<comment><USER6> In that case, what would you measure success against?

<comment><USER7> Your peers. I always thought that had a huge effect on your happiness and perception of your status.

<comment><USER6> In this case your "set goal" is to match/surpass your peers.

</comment></comment></comment></comment></comment><comment><USER8> Personal success for me is being happy with myself.

</comment><comment><USER9> My definitions:

business: success = maximization of long term owners equity

personal: success = sum(gifts to others) (This has nothing to do with money or things.)</comment>


Nextcloud Box a private cloud to run Ubuntu snaps - <AUTHOR> https://insights.ubuntu.com/2016/09/16/nextcloud-box-a-private-cloud-and-iot-solution-for-home-users/ <comment><USER2> I don't like these types of boxes because many of the people that get it think they can set it and forget it. When security updates fail in the background (or they know nothing about them in the first place), it gets 0wned.</comment>


Marketing Is Like Acting. It Works Best When Hidden - <AUTHOR> https://medium.com/p/marketing-is-like-acting-it-works-best-when-hidden-c7d128142d2f <comment><AUTHOR> Quick summary:

I committed the ultimate marketing sin. I created content for contents' sake. Worse still, I counted it as a win.

For one client, my content was producing over 130,000 views a month (170,000 on a good month). Did it bring in sales? Sure. Did it bring in enough sales to justify the expense? I was hoping nobody asked me.

Something changed when I started telling stories. Clients didn't start saying, "Wow, love the narrative, Tom" or "Gee, great use of subtext." But they did say, "Loved your piece," and "Great work. Sales want you on every project."

"We are, as a species, addicted to story. Even when the body goes to sleep, the mind stays up all night, telling itself stories." — Jonathan Gottschall, The Storytelling Animal

Grammar and technical analysis don't make a great writer. Harvard's Steven Pinker may write clear prose with impeccable grammar.But it's Homer, Hemingway and Harper Lee who are our greatest writers. Because in the deepest core of their being, they understand the universal truth that holds in every form of content from literature to business writing.The story matters most.

<comment><USER2> Forget marketing and just make a great product.</comment></comment>


Erlang and Akka - <AUTHOR> http://erlang.org/pipermail/erlang-questions/2014-August/080717.html

<comment><USER2> Applies in any language. If the non trivial problem is well defined and you solve it, using a distributed computing pattern, e.g. lots of c++ process communicating over a specific transport (say zeromq) using a unified object description (say protobuf) then you get pretty close to this exact same promise. That's essentially how most erlang solutions feel to me at least.

Am i missing something?

<comment><AUTHOR> You are not, very good observation. I am doing the same with Python. Except in Erlang you can have a lot more processes and distribution & serialization is built it + many other diagnostic and debugging tools.

The point about function idempotent and minimization of state made by Ulf Wiger is also important I think. Being able to test a function will all the inputs and then say, well it works and this part is done. While if it is a method attached to a large object you might not be able to easily do that without lots of mocks. This of course applies to any language too not just Erlang.

<comment><USER2> Yes, i see your point. I did read the Armstong book many years ago and played with erlang and was blown over by its feature set.

This definitely bled into some of my current work along with the zeromq book by Pieter Hintjens. This led me to my current work where i fully reimplemented a couple of existing commercial solutions my client had purchased for $millions in licensing fees and simply boiled it down in to a series of steps which were then implemented in single threaded processes (except for one!) in python communicating as above. With almost no magic the throughput and timliness of the data increased 10 fold. Then these processes were individually rewritten in c++ & one particular one in java and the throughput increased massively again.

My point being this whole divide and conquer thing is totally legit :)

</comment></comment></comment><comment><USER3> Does Akka solve the periodic GC pause of the JVM in some magical way? If not then to me it seems like a tough sell. Maybe I have 100K Akka actors with active client connections, now suddenly there's a GC Pause of a few seconds. I seriously wonder if will just result in a trainwreck of the JVM crashing. I've seen the JVM crash enough times to know its not by any means bulletproof.

</comment><comment><USER4> "...until the requirements change..." \- nothing to do with Erlang per se. Let's move on.

<comment><AUTHOR> It has to do with Erlang. Because the original discussion point to 2 things in Erlang that make it easier -- immutability of data structures and the functional aspect. Testing a function that idempotent means that when it is tested it will be solid the only work you'd have to do is if requirement changes. In OO programming having large objects with mutable state + threads, it is very hard to reason how a particular (failure) state was arrived it. So besides requirements change another thing that changes is the state in the objects (in an unpredictable and untraceable). You end up with engineers saying things like "Yeah I see this bad data in this property, but how the hell did it get this, I don't know".

<comment><USER4> Ok, maybe the problem is that I am already avoiding the large objects, mutable state and threads in my mainstream OOP language code. I am also applying the idempotence where applicable.</comment></comment></comment>


BitTorrent usage increases in Europe, following the blockade of The Pirate Bay - <AUTHOR> http://www.extremetech.com/extreme/132328-bittorrent-usage-increases-in-europe-following-the-blockade-of-the-pirate-bay

<comment><USER2> When you spend millions advertising a service, its usage increases. What a surprise.

<comment><USER3> Just from looking at the graph, it seems like there is almost no change and the increase is purely incidental.

In other words, users, who torrent, will torrent even without pirate bay; users, who don't torrent, won't really start to.

<comment><USER4> _will torrent even without pirate bay_

Or they'll just use any free proxy/VPN. TPB nowadays just serves magnet hashes, even the slowest, more restricted link is enough. The rest goes through DHT.

</comment></comment></comment><comment><USER5> In my experience, most of the people who are serious about torrenting don't use The Pirate Bay anyway and have long since moved to members only trackers (like Demonoid etc).

<comment><USER6> I personally have had really bad luck with private, members only tracker sites. If I don't get on the torrent within minutes of posting, I can't reach the desired 100% seeding goal. On the other hand, this is ridiculously easy to do with public tracker sites (such as TPB).

<comment><USER7> There is huge variability in private trackers, some are awful (Demono's adds have become unbearable), some are pretty good, like karagarga, which has lots of films I simply could not find anywhere else, legally or otherwise, and others are awesome, like what.cd.

</comment></comment></comment><comment><USER8> I'm quite convinced that the raise in BitTorrent usage here is due to the shut down of Megavideo and nothing to do with the Pirate Bay.

</comment><comment><USER9> What's the purpose of torrent again? Is that the thing people use to steal copyrighted works or are millions of people using it to exchange wedding videos? Torrents are the reason movies and music is so expensive relative to their actual production and distribution costs.

<comment><USER10> The purpose of BitTorrent is peer-to-peer file sharing. Period. While it is all too often used for distributing works illegally, its primary purpose is not that. Consider reading the Wikipedia page[1] for some examples of effective and legitimate uses of the protocol.

[1] <http://en.wikipedia.org/wiki/BitTorrent#Adoption></comment></comment>


Manned Maneuvering Unit - happy-go-lucky https://en.wikipedia.org/wiki/Manned_Maneuvering_Unit <comment><AUTHOR> I worked at Martin Marietta, Space Launch Vehicles division, from 1986 to 1990. A couple of engineers from the MMU program came to work with us on Commercial Titan. They would occasionally take a few folks to the lobby of the main office in Waterton Canyon, where an MMU mural hung. The spelled out name of the vehicle was misspelled - it lacked a crucial 'v', making it a "Manned Manuering Unit".</comment>


Can we stop calling it currying? - <AUTHOR> I recently learned what the heck "currying" means. I'm sure I'm not the only one who struggled to grasp what this term means, since its name does not come from an intuitive notion of the concept, but rather it is named after Haskell Curry who first explored this approach.
A curried function allows an incomplete argument list, in which case it returns a new function that is still awaiting the missing arguments. This allows you to compose (combine) functions into new, reusable functions. A powerful tool for programmers, and yet unfortunately we give it a name that often reminds us of curry the food and nothing else.
Can we stop calling it "currying" then and instead call it something meaningful? How about Argument-Deferred Functional Composition, or my preferred shorthand: argument deferral.
Obviously, the name "currying" and "curried function" is widespread, so it would be appropriate to say argument deferral (i.e., currying) or argument-deferred function (i.e., curried function).
Am I right to have a pet peeve about this, or should stop programming and go into marketing? <comment><USER2> Why call them 'arguments' when nobody is arguing?

Currying is the name of the thing. Adding another Enterprise Edition Operational Process Development Pattern like "argument deferral" isn't any better. I mean "Dependency Injection" isn't any easier for beginners to grasp, even though that is what it is.

Besides, it isn't argument deferral. That could easily be confused with evaluation order or things like lazy/normal/strict evaluation.

<comment><AUTHOR> From the perspective of a non-functional language, it is argument deferral because you're composing your sequence of functions first, which can then be used by later adding inputs for evaluation.

Were you thinking of partial application (not the same as currying)? I would agree that this is not argument deferral, rather it's more like argument presetting.

<comment><USER3> "Argument deferral" of the type you describe (like partial application, for that matter) is something currying can be used to achieve, but is not what currying is.

So, even if it was proposed when "currying" wasn't well established as the name for currying, it wouldn't be a particularly good choice.

<comment><AUTHOR> I agree, I've revisited my position. Argument deferral and partial application (my term: argument presetting) is something that currying can achieve, but it's not what currying is.

</comment></comment></comment></comment><comment><USER4> "Call 'it' something 'meaningful'"?? "Currying" is meaningful...

Perhaps you just aren't comfortable with the idea that its meaning wasn't formed via some sort of compounding pattern you thought would be more inherently meaningful(?), or maybe you feel the need for natural language to be as precise as your programs?

There are lots of different ways that new words come into a language, and one of them is "verbificiation" of a noun (sometimes even a proper one). In this case, Haskell Curry was "verbified", and so now we have "currying". I don't care to speculate as to why "currying" was favored over "some-compounding-of- words-that-you-think-precisely-conveys-the-exact-meaning", but I assure you the first person to use "currying", did it because they thought in that moment that that was the best way to meaningfully convey the idea they were talking about, and the others around that person (implicitly) agreed by using it too. If you really think you can do better, start calling it something else; if it's any good, it'll catch on.

</comment><comment><USER5> I've read any number of peeves against certain forms of language use, and don't agree that that necessarily pigeonholes someone into marketing.

Lisp, for example, uses 'car' and 'cdr' because of the hardware registers of the IBM 704. Some prefer 'first' and 'rest', but compact composed versions like '(cadr x)' for (car (cdr x)) don't exist for those English variants.

"to curry" as a verb has advantages over your preferred term of "argument deferral", if only because I can write:

      def curry(f, *curry_args):
          def curried(*args):
              return f(curry_args + args)
          curried.__name__ = "curried_" + f.__name
          return curried

using a one word function name instead of "argument_deferral". (I've also seen 'xapply' in Python code, as in [http://bytecodehacks.sourceforge.net/bch- docs/bch/module-byt...](http://bytecodehacks.sourceforge.net/bch- docs/bch/module-bytecodehacks.xapply.html) ).

It also has the inverse 'uncurry', mentioned in [https://downloads.haskell.org/~ghc/6.12.2/docs/html/librarie...](https://downloads.haskell.org/~ghc/6.12.2/docs/html/libraries/base-18.104.22.168/Data- Tuple.html#v%3Auncurry) .

Your version would be "undefer the argument deferred function", I believe, vs. "uncurry the curried function". Not only is it longer, but I see a possible ambiguity: "undefer" might mean to actually call it.

In general though, there is a lot of specialized vocabulary. "A trampoline is a loop that iteratively invokes thunk-returning functions". "I used an AVL tree in the hidden Markov model." I don't see how the big problem is the inability to understand the concept from lexical decomposition of the term.

<comment><USER6> 'To curry' also already was a verb, and as a bonus, that verb has the connotation of 'adding something'. To curry a function, you add a value for its first argument. That helped it become popular. I don't think this would have survived if it would have been called 'to Knuth', 'to Kernighan', or 'to Jensen' (in general, names for stuff one adds in moderation to something larger to improve it give good names for small things one adds to something larger: 'salt' in cryptography and 'syntactic sugar' are other examples)

 _" Some prefer 'first' and 'rest', but compact composed versions like '(cadr x)' for (car (cdr x)) don't exist for those English variants."_

It may be lack in my mastery of English, but AFAIK, 'cadr' didn't exist, either, but that didn't stop it from becoming the standard way to describe the second item in a list.

If they had used first and rest, we likely would have frest and frrest for cadr and caadr, and I wouldn't rule out 'rfirst' either; it is not as if that is harder to pronounce than 'cdar'.

<comment><AUTHOR> Your description refers to "partial application", which is different from currying. I think that many people are comfortable with "currying" only because they think it's the same as partial application. The fact that this is incorrect is good reason to revisit the term.

</comment></comment></comment><comment><USER7> Another name for currying is "partial application". See [http://en.m.wikipedia.org/wiki/Partial_application](http://en.m.wikipedia.org/wiki/Partial_application)

<comment><USER8> This a common misconception. Partial application is like taking f(x, y) = x + y and turning it into f(y) = 1 + y by supplying x = 1. Currying is like taking the same function and turning it into (f(x))(y) = x + y. Expressing f as a higher-order single argument function in this way gives us the advantages of partial application using normal total application.

A good example is the derivative function from calculus, which could be specified in at least two obvious ways. A simple, but ugly solution is to have it take a function and a point as arguments and return the value of the derivative at that point.

Alternatively, it could take a function and return its derivative as a function, which could then be evaluated at many different points.

This is the difference between e.g.

(Float -> Float, Float) -> Float, and (Float -> Float) -> (Float -> Float).

Taking this idea to its logical conclusion and applying it to any multiple argument function gives you currying.

</comment></comment><comment><USER9> You're right, it should be called Schönfinkeling [http://en.wikipedia.org/wiki/Moses_Sch%C3%B6nfinkel](http://en.wikipedia.org/wiki/Moses_Sch%C3%B6nfinkel)

</comment><comment><USER10> To answer your question, I don't think it matters what it's called, just that you learn what it means (just like any word).

As an aside, what you're describing isn't strictly currying. The key insight of currying is that a function of multiple arguments can be decomposed in to a series of function applications where each function takes only one argument - this is related to but not the same as partial application.

<comment><AUTHOR> Thanks for this clarification. The fact that these are widely confounded is evidence that many people are comfortable with the term "currying" only because they think it's the same as "partial application", so they appreciate the connotation that you're "adding spice".

So in this case, not only CAN these people stop calling it "currying", but in fact they should, because it's the wrong word.

In my other comment I'm suggesting calling currying "sequencing", and partial application "presetting".

</comment></comment><comment><USER11> Sometimes you do not want an understandable name for a thing... instead a merely memorable one is far better.

Currying is actually an incredibly specific and universal thing. It's the act of noting that a function space

        (a, b) -> c

is the same as a "higher-order function space"

        a -> (b -> c)

in a very particular way. It's _worth it_ to give this thing it's own name because it's a highly important and unique transformation.

"Curring" and partial application as it exists which take this notion further, such as those which transform (a, b, c) -> d to (a -> b -> c -> d) or (a, b, c) -> d to ((a, c) -> b -> d) are generalizations of the core concept and perhaps don't honestly deserve the name (if you're a stickler).

Merely calling currying and uncurrying by some operational name de-emphasizes these operations. It's like calling a "home run" a "quadruple" in baseball. Sure, it makes sense, but it's really just missing something.

<comment><AUTHOR> This makes sense. But would you say that there could be easier shorthand descriptors to supplement the terms? Or perhaps terms that are used to describe the utility of currying, but don't actually replace the specific (and useful) term?

<comment><USER11> I think it's fair to say that pithy ways of explaining the point and mechanism of currying are important. The terms you've been exploring here are definitely in that bucket.

</comment></comment></comment><comment><USER12> the name isn't the difficult part, so changing it will not make it easier for people to grok.

</comment><comment><USER13> I don't recall currying -- either the name or the concept -- being a particular stumbling-block for beginners trying to learn functional programming.

There isn't really a problem that needs solving here.

<comment><USER7> Another name for this technique is "partial application".

<comment><USER14> No it is not. For an explanation see [http://www.uncarved.com/blog/not_currying.mrk](http://www.uncarved.com/blog/not_currying.mrk)

</comment></comment></comment><comment><USER15> Can "we" stop using the term because "I" don't like it?

</comment><comment><AUTHOR> Thanks everyone for the comments. It is interesting to see how widely "currying" is conflated with "partial application". I have to say, I still find the name to be a stumbling block. Perhaps this discussion can help to reverse that trend.

I have also learned a good deal more from these comments and further research. It seems my idea of "currying" was not entirely complete. Per the comment herein: "Currying turns polyadic function into a sequence of unary functions". Practically speaking, this means a curried function is a single-input function that will return a function which is still awaiting an argument, so that other functions can be added to the "currying chain".

I would call this "function sequencing". This term could be equally intuitive for functional languages (ML / Haskell) and non-functional languages alike. However, I think that non-functional language users will still appreciate an explanation that references "argument deferral", since this is one of the practical benefits, and is also the key part of the "functional" context- switch needed to understand the concept (i.e., you can compose functions without providing the arguments/inputs).

Is there an equivalent to "uncurrying"? (un-what-ing??) This verbiage sounds like we're trying to unpluck a chicken. On Wikipedia (the world's collective brain dump), we understand uncurrying to be "the dual transformation to currying, and can be seen as a form of defunctionalization." Crystal. I'll losely interpret this as flattening the unary (single-input) function sequence into one polyadic (multi-input) function. So can we refer to this as "function bundling"?

To summarize, I'm submitting "sequencing" and "bundling" as the two simple verbs that better describe "currying" and "uncurrying".

<comment><USER3> > To summarize, I'm submitting "sequencing" and "bundling" as the two simple > verbs that better describe "currying" and "uncurrying".

"Currying" and "uncurrying" are widely understood by programmers, and "sequencing" and "bundling" are often used in programming for other things, so your idea reduces clarity in favor of some aesthetic preference to avoid turning proper names into verbs when creating new technical terms.

So, I think we're better off just sticking with currying and uncurrying.

<comment><AUTHOR> Good thoughts. I'm interested to see if there are other opinions.

</comment></comment></comment><comment><USER16> A little surprised by the resistance to your suggestion. Apparently I too am doomed to retire into marketing after 30 years of programming.

</comment><comment><USER17> Completely agree. It is atypical in any progamming language to have names of functions/operators that do not bear some relation with the nature of the function/operation.

While your suggestion suffers from a lack of concision, the point remains: A single word replacement that approximates the nature of what "currying" does, would be helpful.

<comment><AUTHOR> See my longer comment. I'm suggesting "sequencing" and the opposite, "bundling".

</comment></comment><comment><USER18> That's why Clojure calls it "partial" to indicate you're doing partial application [http://conj.io/store/v0/org.clojure/clojure/1.7.0-alpha4/clj...](http://conj.io/store/v0/org.clojure/clojure/1.7.0-alpha4/clj/clojure.core/partial/)

<comment><AUTHOR> Again, your description refers to "partial application", which is different from currying. I think that many people are comfortable with "currying" only because they think it's the same as partial application. The fact that this is incorrect is good reason to revisit the term.

<comment><USER3> > I think that many people are comfortable with "currying" only because they > think it's the same as partial application.

If currying was the same as partial application, I'd say we don't need the name "currying" and can just use "partial application". So I guess you could say that I am comfortable with currying only because I _don 't_ think it is the same as partial application.

<comment><AUTHOR> Good point. It's a bit of a wonder why so many people think of them as equivalent (perhaps they thought currying was a convenient shorthand for partial application). I'm comfortable with a simple campaign to clarify the difference, and I think my suggested terms would be helpful to accomplish that (so rather than replacements, simply informal descriptions of the term).

</comment></comment></comment></comment><comment><USER19> Schönfinkelisation is my preferred alternative.</comment>


Show HN: Hotkeys for Multi-Column Page-Up/down for Tweetdeck on Firefox Quantum - <AUTHOR> https://www.producthunt.com/posts/walkback-for-tweetdeck-on-firefox-quantum <comment><AUTHOR> Originally wrote this simple extension for Chrome three years ago. Firefox Quantum handles resource intensive apps like Tweetdeck better than Chrome now, so I improved it, and then ported it to over.

Walkback makes Tweetdeck better by 1.) adding hotkeys 2.) letting you hide the sidebar, freeing up more space for tweets.

Hotkeys let you page-up/page-down all the columns at once, making it much easier to hunt for tweets.</comment>


Ask HN: How's WFH Going? - <AUTHOR> Are you enjoying the long duration of working from home? <comment><USER2> I've been working from home for years now, so not noticing much of a change.

My biggest change is going grocery shopping, which has gotten a lot harder..

Also it's very "interesting" to see how so many people on Linkedin and the likes making these massive statements of "how to work from home" and trying to profit off "tools and discoveries" they've made to help you wfh more easily.

I mean, it's not that hard. Just wfh. done.

</comment><comment><USER3> I've been working from home for the past 5 years so it feels the same for me. What is hard to adjust to is having my 7 year old daughter home during school hours. I have to split my time between helping her with schoolwork and doing my own work.

<comment><USER2> Time to train your daughter to help you too!</comment></comment>


The State of CSS 2019 Survey Results - <AUTHOR> https://2019.stateofcss.com/ <comment><USER2> The data visualizations of for example: [https://2019.stateofcss.com/features/typography/](https://2019.stateofcss.com/features/typography/)

Are not...great. Pretty but hard to read.

</comment><comment><USER3> Who designed this? It's awful to use.

</comment><comment><USER4> Took me 10 clicks to figure out the links to results were in the mobile hamburger menu, and not found anywhere on the actual page.

Poor mobile design.</comment>


Humans Show Empathy for Human-Shaped Robot Hands - <AUTHOR> http://motherboard.vice.com/read/researchers-threatened-a-robot-with-a-knife-to-see-if-humans-cared <comment><USER2> People se faces in clouds. So it would be likely that we show empathy for something that reminds us of a living thing.

I am always reminded that children put a lot of emotion into their teddy bears and power rangers. When we grow older we kind of loos that naivety because we know rationally that a teddy bear is not a living thing. But it's only skin deep and you put us in unfamiliar territory and we start attaching intent and emotion to seemingly alive things.

It's not that robot hands need to be specifically real it's just that we are naturally wired to have empathy for "life".

This is a vice article so I can forgive it's superficial interpretation of empathy. However it's important to realize that empathy is not just about feeling others pain but about feeling their anger, joy and jealousy.

Somehow along the way empathy became synonymous with people who care about other people and can feel their pain. But its so much more.

</comment><comment><USER3> The show Community has a good bit about this when a character names a pencil then breaks it. [https://www.youtube.com/watch?v=z906aLyP5fg](https://www.youtube.com/watch?v=z906aLyP5fg)

</comment><comment><USER4> Humans show empathy for all kinds of things: animate, inanimate, and even purely imaginary.</comment>


Ask HN: I want to make a webapp. Where do I start? - <AUTHOR>

I have coded up a lot of desktop applications and I am good at programming in Java and Smalltalk. Now, how do I get started with webapps?
Are there articles/blogs that compare web frameworks (RoR, Django)? Any starter kits for Javascript, CSS etc? How do I get a high-level overview of how things fit in?
I realize those are too many questions in one post :) I am just hoping to tap the HN resource lib and that might be helpful for others too. So, if you have anything at all that you think might be helpful to someone just starting, please do post it across <comment><USER2> If you want to first learn the fundamentals, PHP/MySQL is a good place to start.

If you want to just jump in and make something frameworks such as Django and Rails make a nice level of abstraction above the database and even above the raw HTML.

If you're looking for a recommendation, I love Django.

<comment><USER3> My brother was a hacker in the late 90s, early 00s. He has a massive online hockey pool that he created somewhere around 98 or 99, all wrote in php.

He wants to revamp the site, which he hasn't fundamentally changed in 5 years or more, and asked me what to suggest. 'python manage.py inspectdb', the built in admin, and clean separation between code and style converted him to Django.

<comment><USER4> What's he re-vamping and why?

Look and feel? No need to switch from PHP. Performance? A framework might help, but it might not. Maintenance time? Could be looking ground up here.

Again, if this is a redesign for the sake of redesigning, it doesn't really matter what you use. If there is a specific goal though, changing frameworks/languages should only be done if it provides a way to reach the goal.

<comment><USER3> He is rewriting the site. Why? Because he wants to add a bunch of new features that would take longer to hack into the old system then to rewrite an entire new system. He is open to learning some new things, hence the language switch.

He isn't switching for the sake of redesigning, I don't know how you got that impression.

Maintenance time is a key factor here - he rarely looks at the code, so PHP- spaghetti (we are talking '99 PHP, pre-OO and basically impossible to not create spaghetti) is getting unbearable.

<comment><USER4> Make sure you read this first: <http://www.kith.org/journals/jed/2007/10/27/10686.html>

</comment></comment></comment></comment></comment><comment><USER5> As you are good a Smalltalk, I think you should take a look to <http://www.seaside.st> a framework for developing webapps in Smalltalk.

To get a good overview read the HTTP RFC. IMO, JavaScript and CSS should be the last thing to learn.

</comment><comment><USER6> ASP.NET: Soup to Nuts <http://www.benkotips.com/Default.aspx?tabid=798>

You won't regret it!

<comment><USER7> lol good call, I didn't even think about that and its how I make my living. C# is java in .net clothing at the end of the day. .net apps scale pretty well too.

<comment><USER8> C# 3.0 has closures, expression trees, LINQ, and other features that make it much more expressive than Java in my mind.

If you think in terms of map, fold, and filter, you'll be right at home in C#/VB.NET (they're just called Select/Aggregate/Where instead to be familiar to people whose background is SQL and not functional programming). Java, on the other hand, is agonizing to me.

</comment></comment></comment><comment><USER9> If your Java experience is with GUI programming, you should be right at home with Google Web Toolkit. You don't need to worry about complicated web-related tasks such as handling asynchronous calls, that is all abstracted for you. You can layout your pages like you would a Swing or SWT desktop app and that should get you started.: <http://code.google.com/webtoolkit/>

GWT is a higher level of abstraction than most other frameworks, which some like and some do not. The top-most layer is actually not coupled to anything specific related to javascript, DOM, or HTML in general. DOM manipulation and javascript are treated much like in-line native assembly code in a traditional high-level language. You can develop an entire web application like GMail without ever seeing anything below this high level abstraction. This may make it sound weak or limited, but its actually very powerful b/c you can focus on building rich functionality rather than debugging erratic cross-browser quirks.

<comment><USER10> I'm working on a new commerce app for a well known large company, with GWT on the front end. In the past I've worked with most of the well known Java frameworks - spring, struts, JSF... It's a different way of thinking, but it has been pretty enjoyable to learn so far.

</comment></comment><comment><USER11> If you're good in Smalltalk, check out the Seaside framework <http://www.seaside.st/>

<comment><USER12> Agreed. If you already know Smalltalk, then Seaside is the best possible framework to get started with. You will be at home, and it probably won't feel too different than what you are already doing.

</comment></comment><comment><USER13> I posted this before, but I can't find the link in YC...

If time is critical, then I figure you'll want screencasts for the language/framework you need to use.

I don't know of any that exist for any other language/framework, but Ruby on Rails has really excellent ones at:

<http://peepcode.com> \- not free but no one else compresses an entire Rails book in 5 hours of video

<http://railscasts.com> \- 5 to 15 min useful segments related to ruby on rails

Once you feel a little more comfortable after viewing the videos, the Pragmatic Programmer Series and Oreilly books are a good place to continue.

Almost forgot - you can test out all you learned at (YC startup) <http://heroku.com> (nothing to install on your computer - easy to start)

</comment><comment><USER14> For Javascript: Ruby is kind of similar to Smalltalk, and Javascript can be pretty Ruby-like if you use the Prototype/Scriptaculous frameworks.

For CSS: I've never used Blueprint.css, but it looks pretty awesome.

</comment><comment><USER15> I don't think I'd want to starting out by learning to code relatively complicated things to a framework. If you learn a framework you won't be so much exposed to the real technologies - HTTP, HTML, CSS, Javascript. I think I'd start by reading the RFCs for those. Then write some web pages by hand with HTML and then try to write a program to do what you just did by hand. Also study the source of any other web apps you can find - open source software is great for learning.

</comment><comment><USER16> You could probably dive into Rails and get something working. Diving in and doing something is a lot better than trying to pick a framework. You can get started with anything, really, including the languages you know. Smalltalk has 'seaside', Java has a million frameworks. You would probably not have much trouble with Ruby or Python either.

</comment><comment><USER17> Yeah its a slow transition. Dont waste too much time trying to "decide" between a language. I just plunged into python (sorry all RoR fans out there, nothing personal)...

django is a great framework for beginners.. start with sqlite for a quick db to use with django then get to postgres as soon as you can.

</comment><comment><USER18> For Java I would say Spring is the current standard, although I admit the web part of spring is a bit confusing at first (in reality it is quite simple, though). Don't use Struts, please.

Maybe Seam would be interesting, too - created by the Hibernate guys, it is supposed to be inspired by Rails.

<comment><USER19> My day-job project is being done in Seam... it does seem quite rails-inspired, and comes with a lot of free scaffolding and tight integration with Hibernate. We are using jBPM, too, which also gives a lot of free scaffolding.

<comment><USER20> Yes, I've used seam for several projects and found it to be an amazing framework that lends itself to rapid development and web apps that can take a Slashdotting+Digging on the same day.

Plus is has great integrations with Ajax4JSF and RichFaces which makes adding a nice Ajax front end very very easy, even if you don't know much JS, like me.

</comment></comment></comment><comment><USER21> You may as well start with JSP at a free web host like <http://www.myjavaserver.com/> or <http://www.eatj.com/> to play around.

<comment><USER22> Are there anything like this for python (w/wo django)?

<comment><USER23> Not free, but <http://webfaction.com> is a shared hosting provider I've used in the past that has a one-click setup for Django, Rails, etc. Plus they offer PostgreSQL (which not a lot of shared providers do). I don't use them anymore, but I think it's something like $10/month for the cheapest plan. It's great to learn on.

But as far as what to learn, I'd highly recommend Python and a web framework such as Django or Pylons.

</comment></comment></comment><comment><USER24> PHP! Zend Framework FTW! <http://framework.zend.com> and add a little jQuery into it. <http://jquery.com>

</comment><comment><USER7> isn't web objects smalltalk based?

Maybe your first port of call could be jsp

<comment><USER25> WebObjects used to be available in both Java and Objective-C, which _is_ influenced by Smalltalk (it also used to be $50,000... and now it's free with OS X). However, Apple killed off the Objective-C API around the time Java was first being hyped.

Tis a shame.</comment></comment>


Wikipedia links to HN - <AUTHOR> https://en.wikipedia.org/w/index.php?title=Special%3ALinkSearch&target=news.ycombinator.com <comment><USER2> Some of these make perfect sense:

[https://en.wikipedia.org/wiki/CoffeeScript](https://en.wikipedia.org/wiki/CoffeeScript) links to [https://news.ycombinator.com/item?id=2037801](https://news.ycombinator.com/item?id=2037801) with the sentence "On December 24, 2010, Ashkenas announced the release of stable 1.0.0 to Hacker News, the site where the project was announced for the first time."

"80legs has been criticised by numerous site owners for its technology effectively acting as a Distributed Denial of Service attack and not obeying robots.txt." [http://news.ycombinator.com/item?id=1056960](http://news.ycombinator.com/item?id=1056960) (which makes sense because the discussion includes site owners)

Others are questionable:

"While ZumoDrive encrypts transport of all content with 256-bit SSL, and stores that content encrypted on Amazon S3 servers, that content is still accessible to ZumoDrive administrators" It would seem that the direct link [http://www.daemonology.net/blog/2010-03-11-zumodrive- rolls-a...](http://www.daemonology.net/blog/2010-03-11-zumodrive-rolls-a-hard- six.html) is far more relevant than the comments [https://news.ycombinator.com/item?id=1183308](https://news.ycombinator.com/item?id=1183308) (and many of the comments actually are opposed to the claim)

<comment><USER3> Keep in mind that HN comments are actually a fairly decent set of secondary sources: the discussion of expert-level commentators is _exactly_ what Wikipedia wants to link to, rather than basing things off the first-hand claims.

<comment><USER4> Except that the quality of HN comments varies widely: not all commenters on HN are experts in the subjects they're writing about (and the people voting up a comment aren't necessarily experts either). A general reader following a link here from Wikipedia is not likely to be able to tell the difference between an expert and a non-expert. Thus, HN would make a much worse secondary source than something like an industry publication that has an editor and fact checkers (rare as these seem to be in our field today).

<comment><USER5> I, for example, comment regularly on HN and I know next to nothing.

<comment><USER6> I can report the same.

</comment></comment></comment></comment></comment><comment><USER7> Among them an article on Taskwarrior[1]. We are now an officially recognized authoritative source on procrastination. I don't think anyone could question that.

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

<comment><USER8> I've been looking for something like this for a very long time. Anyone know of something like this with a GUI?

<comment><USER9> Not sure it qualifies as _" something like this"_, but for Linux/GTK, GTG [1] comes to mind.

[http://gtgnome.net/](http://gtgnome.net/)

</comment></comment></comment><comment><USER10> And there's one to news.ycombinator.net [https://en.wikipedia.org/w/index.php?title=Special%3ALinkSea...](https://en.wikipedia.org/w/index.php?title=Special%3ALinkSearch&target=news.ycombinator.net)

</comment><comment><USER11> Hacker News would not qualify as a reliable source on Wikipedia as it is an aggregator of user-submitted content without much oversight.

<comment><USER12> No, but many of these may be used in much the same way as why Wikipedia links to tons of Twitter pages even though it's 'an aggregator of user-submitted content without much oversight' \- the users themselves confer the the reliability. I wouldn't be surprised at all to see a pg comment used as a source in the Paul Graham article.

<comment><USER11> But that's a primary source. Generally, use of primary sources on Wikipedia should be limited because primary sources are easily subject to abuse. For instance, even something as simple as a quote from X that "Y is great" can be problematic. Is that what X really thinks? Is there a quote from somewhere where X says "Y is not great?" Was X really in a position to evaluate Y? Wikipedia articles should generally be based on reliable secondary and tertiary sources.

[[https://en.wikipedia.org/wiki/Wikipedia:PRIMARY#Primary.2C_s...](https://en.wikipedia.org/wiki/Wikipedia:PRIMARY#Primary.2C_secondary_and_tertiary_sources)]

<comment><USER13> From your link: "Wikipedia articles should be based on reliable, published secondary sources and, to a lesser extent, on tertiary sources and primary sources."

That suggests that Wikipedia treats primary sources on par with tertiary.

</comment></comment></comment></comment><comment><USER14> Someone should make an automated dmoz-like directory of wikipedia external links with thumbnails.

</comment><comment><USER15> They should go to source links... Unless they're comments or text posts.

</comment><comment><USER16> Top one on that list is "toilet paper orientation archive 1" lol.

<comment><USER17> ...which is a talk page, without an actual article. And it's a very long discussion/argument.

I'm not sure a better example of wikipedia could be found.

<comment><USER18> The 'toilet paper orientation' article is still there, with over 100 notes/references.

</comment></comment></comment><comment><USER19> Wikipedia is overrated as a resource. It is, like many crowd-sourced things, a social determination of importance and not an actual assessment.

However, as you'd expect, it's great for pop culture.

<comment><USER20> Out of curiosity: what's an actual assessment of importance, as opposed to a social determination of importance?</comment></comment>


Headphone Brands Ranked from Worst to First - <AUTHOR> http://time.com/74886/best-headphones/ <comment><USER3> They should really list headphones by models instead of brands. Pretty much every brand there has both entry level headphones and top of the line headphones.

Still to this day, I recommend Sennheiser HD 25-II's. These things are indestructible. Plus they sound pretty good as well. When you watch any sporting event on TV or any big DJ, the majority of the time they will be using these bad boys.

I've had mine for well over 4 years now, not really looked after them very well, but they are still going strong. Every part is replaceable too.

Best of all, they are still cheaper than a pair of Beats by Dre.

<comment><USER4> > When you watch any sporting event on TV or any big DJ, the majority of the > time they will be using these bad boys.

As a professional DJ I concur. I have played on some of the loudest soundsystems in the world and the performance from them is stunning for the price. I also use them for music production and the flat response at all EQ levels is what is needed to know what you're hearing is true.

I've been through probably about 4 pairs in the past 15 years, but that's mainly due to the abuse they get from gigs, for home use they'd be pretty much indestructible.

The HD25SPs are pretty decent too if you want a cheaper option, but it's definitely worth paying that bit extra for the HD25s.

</comment></comment><comment><USER5> The main thing I got out of this survey is that is possible to design an objective-sounding survey that will favor any brand that you choose.

The "Smart Rating" he uses factors in various critical review sites at various arbitrary weightings (eg., TechCrunch at 13.9%) and various specs at various arbitrary weightings (eg., cable length at 0.7%).

If I wanted to cheat and create a survey that favored brand X, I could choose and tweak parameters until X came out on top. For example, I know that brand X always has nice long cables, so I'll give cable length a higher smart score. I know that Wired has reviewed some of the crappy models of brand X, and hated them, so I'll drop Wired from my formula. PC Mag however has reviewed the best model that brand X makes, and loved it, so I'll add PC Mag to the mix. Etc.

I'm not saying the author rigged anything. I'm sure it's his earnest effort to create a meaningful measure for headphones. It's just that the formula looks objective and authoritative, but another formula would've given you any result you desire.

<comment><USER6> Agreed. The methodology was pretty weak.

The best thing about the article was it got Hacker News readers talking about headphones! Now I know I'm getting real scoop from users who likely are using the phones in a similar way to myself.

</comment></comment><comment><USER7> So, a list about supposedly the best headphones doesn't list any Beyerdynamics? mhh, sounds legit.

<comment><USER8> The list seems mostly focused on brands that lots of people have heard of before. I've heard of every brand on their list before, but I've never heard of Beyerdynamics.

<comment><USER9> Or rather it's a consumer-oriented list. BDs aren't much of a consumer brand (though they do have a consumer line) and don't market as such. Most of their stuff is marketed for industry, so this makes them a bit "underground."

Further, most of their line is designed for industry or hardcore audiophiles: a lot of it is high-impedance (200 Ohm+), which means you need a real amplifier to drive them (otherwise they'll be pretty quiet), making them not a great portable solution. For comparison, consumer-type stuff is typically standardized 8/16/32 Ohms.

Even further still, their headphones are designed for accuracy, which consumers don't always want either (... subconsciously). For consumers, listener-enjoyment is more important: accenting bass or adding color (distortions) can make music more pleasurable to listen to, etc.

That said, I own a pair of BD DT-990 Pros, and they're the most excellent pair of headphones I've ever owned.

</comment></comment></comment><comment><USER10> I only use in-ear earphones, and my go-to earphone shootout lists are these:

[http://www.inearmatters.net/2009/01/list_01.html](http://www.inearmatters.net/2009/01/list_01.html)

[http://www.head-fi.org/t/478568/multi-iem-review-314-iems- co...](http://www.head-fi.org/t/478568/multi-iem-review-314-iems-compared- olasonic-flat-4-nami-added-04-13-14-p-894)

I agree with the conclusions in general, but it always makes sense to judge headphones by model than brand. My fav earphone is Sony MH1C. It used to be available in eBay for $30 and was the best you could buy the sub $100 category.

</comment><comment><USER11> Let me toss in my favorite headphone model: the PSB M4U2. This is a $400 pair of closed-back 'phones with a built-in amp and active noise cancellation. Don't buy these for the ANC -- buy them for the sound: clear and smooth, with clean highs, good imaging, and extended but not overemphasized bass. Very musical. There's a less expensive M4U1 model with no amp or ANC; these might be a better deal.

I was hoping the ANC would be useful in the office; it is, a little, but not hugely. Mostly it filters out low-frequency noise from the ventilation system, which didn't bother me anyway; it doesn't do so well with voices. But, it's pretty easy to mask voices with music.

Another recommendation you probably haven't heard: the German Maestro GMP 8.300D. I spotted a pair of these on eBay for $80, took a chance on them, and was pleasantly surprised. From 1kHz up they're stunning, with even better imaging than the PSBs, but they have a hump in the midbass response that annoys me a little.

<comment><USER12> I have the M4U1 model after owning Sennheiser Momentum for six months - <USER2> are obviously better in side-by-side tests and they have larger ear cups that I can wear all day with comfort in a noisy office. Definitely my closed- headphone favourite. Too bad they aren't pretty stitched leather like the Sennehisers!

I don't believe ANC is worth the $100 - as you say, same headphones minus ANC.

</comment></comment><comment><USER13> Here's my favorite headphone model: the Bose QC20. The noise cancelation is unreal – when friends try them on for the first time the consistent reaction has to be to smile and laugh. The earbud that just rests in your ear instead of drilling into the center of your head only makes the experience better.

No I'm not a shill I'm just in love with these headphones.

<comment><USER12> Canalphones beat active noise cancellation (ANC) every time. ANC doesn't attenuate all frequencies as evenly as passive protection does and it sounds very strange to me. To rub salt into the wound, passives don't need batteries and they pack into a tiny pouch that takes almost no space in carry-on bags.

<comment><USER13> Oh it's no salt in the wound, I know the advantages to passive. The canal plugs are just far too uncomfortable for me. I'm happy to have found something that I find to be equally great.

</comment></comment></comment><comment><USER14> When looking at headphones, I HIGHLY suggest figuring out what you want to use them for. I use several sites, but HeadRoom ([http://www.headphone.com](http://www.headphone.com)) is probably my favorite because they do some nice graphs of the frequency response for most sets.

I just picked a Sennheiser HD558 to complement my older HD555 I just cleaned up (replaced the cushions, cleaned the drivers, did the HD595 removal of foam mod). I've had that HD555 for over 8 years now, and I would highly recommend those or the newer HD558s easily.

I'm a huge fan of Sennheisers for open-ear headphones, but for environments where I need closed, I've got a Shure SRH440 that is pretty awesome. For travel, I've got the Sennheiser PX 200-II, which replaced an older pair of AKGs that didn't feel so good over the ear. The folding AKGs did have better sound though.

</comment><comment><USER15> While indicative of overall lineup, rating by brand is suboptimal in regards to picking actual headphones for use. For example Koss, while being rated bad has some pretty good performing headphones.

Anyways, here is more substantial headphone buying resource: [http://www.head- fi.org/a/headphone-buying-guide](http://www.head-fi.org/a/headphone-buying- guide)

</comment><comment><USER16> Can anybody suggest overear headphones for people who wear glasses? Most of the ones I've tried press my glasses into my temple and cause pain after a short while.

</comment><comment><USER17> This turned out to be a bit more credible than I expected, though I'm surprised to see Shure rated higher than Grado.

Moepstar is right, Beyerdynamics should absolutely be on the list, and given the success of the TMA-1 Aiaiai should be as well. Also, Audio Technica may have produced some cheap crap in the past, but they should be at least one category higher based merely on the strength of the ATH-50.

<comment><USER18> I'm surprised Grado is at this high position at all - their production quality is absolutely abysmal, they came apart in a year - unlike Sennheiser (using for few years), Audiotechica (using for few years) and Technics/Panasonic (these I use for 15 years!). As for the cost - for same money there is always better alternative than Grados.

<comment><USER19> They may come apart in a year, but they're so simple and so fixable, I prefer them exactly the way they are... and they sound better, which is really why I'm buying headphones.

</comment></comment></comment><comment><USER20> Any recommendations from the HN community? I'd like to get a new set and I don't really trust Time's research.

<comment><USER21> It's really more helpful if you give a budget, but I think you'll find very few people who wouldn't recommend the ATH-M50. From what I've owned, nothing hits the price:performance ratio as sweetly, and it is great-sounding no matter what genre I throw at it.

They are closed-back, so the soundscape is limited, but still great. I wear them on planes and they passively cancel noise well.

[http://www.amazon.com/Audio-Technica-ATH-M50-Professional- Mo...](http://www.amazon.com/Audio-Technica-ATH-M50-Professional-Monitor- Headphones/dp/B000ULAP4U)

<comment><USER22> I've got these as well, great sound for the price.

</comment></comment></comment><comment><USER23> It's weird to have the professional Grado PS100 at 165$ in the listing[0], but none of the Sony pro series like the mdr-v6 priced below, nor the mdr-cd900st priced above.

[0] [http://head-phones.findthebest.com](http://head-phones.findthebest.com)

</comment><comment><USER24> You can't rank a brand when it comes to headphones especially when the market is segmented between cheap shit, pro consumer and studio.

Universally though if its a pretty colour or a TV advert its going to be shit.

</comment><comment><USER25> I'm shocked to see Plantronics at the bottom of the list; I've found them to be quite excellent, and they seem well regarded in terms of features and reliability.

</comment><comment><USER26> On a similar theme, can anyone recommend a good Skype headset that also function as noise cancelling headphones?

</comment><comment><USER27> Best headphones ever: Stax</comment>


Ask HN: What is the best way to find a job in Bay Area? - <AUTHOR>

I am an iOS Developer in Los Angeles. I am thinking of moving to Bay Area if I get a job there. What is the best approach to finding a job there ? What is the "entry-level" place to live ?
Unfortunately I don't have a large social network to rely on and sites like Dice.com are infested with Cybercoders and other job farms.
Any advice / help is appreciated. <comment><USER2> If you don't have a large professional (not social) network, then you must start building one.

Have you tried

[http://careers.stackoverflow.com/jobs](http://careers.stackoverflow.com/jobs) ??

That's how I found my dream job! and I'm hunted by in-house recruiters all the time, so I'd say that's a good place to start.

When I registered, it required an invitation, if it stills requires one, shoot me an email (see my profile) and I'll happily send one your way.

<comment><AUTHOR> Hey there is no email in your profile, but yeah please send me the invite. Thank you!

<comment><USER3> Here is a link to sign up for Stack Overflow Careers: [http://bit.ly/14P2rbs](http://bit.ly/14P2rbs)

<comment><AUTHOR> Awesome! thank you.

</comment></comment></comment></comment><comment><USER4> My friend used Crashpad to find a nice roomie and place in downtown SF, he loves it as he was able to expand his network immediately ([http://www.gocrashpad.com/](http://www.gocrashpad.com/)). You should first figure out where your job will be as commute options vary like bus, train, cycling or car. For jobs try Whitetruffle (www.whitetruffle.com), lots of iOS dev jobs in SF/Bay and NY. It directly introduces you to the hiring source if you are a match for the job. Good luck!

<comment><AUTHOR> Thank you!

</comment></comment><comment><USER5> I am running an iOS hiring event on Thursday, would love it if you joined: [http://iosdcsf.eventbrite.com](http://iosdcsf.eventbrite.com)

If you can't make this one, no problem, there will be more. Good luck!

<comment><AUTHOR> Thanks. the company list seems pretty small, may be next time :)

<comment><USER5> I really want to keep this event small and personal, this isn't a generic hiring event. Nevertheless, you are in LA, so that's completely understandable.</comment></comment></comment>


FlapBot – Bot for FlapMMO.com - <AUTHOR> https://github.com/zachhuff386/flapbot

<comment><USER2> I got to level 64 and there are no more pipes. Hilarious and very timely done, good job!

</comment><comment><USER3> Lag caused it to not get beyond pipe 3 the first two times; got to around pipe 25 before it failed again.

<comment><AUTHOR> You can disable the bars to reduce lag

      var drawBars = false;

</comment></comment><comment><USER4> I went to pipe 25 and there were no more pipes afterward. Great and job and great use of getImageData().

</comment><comment><USER5> very nice!</comment>


America tampers with the Chomsky trade at its peril - <AUTHOR> https://www.ft.com/content/00347008-88af-11e7-afd2-74b8ecd34d3b <comment><USER2> Non-paywalled: [http://archive.is/OvgMw](http://archive.is/OvgMw)</comment>


AI-powered autocompletion software is Gmail's Smart Compose for coders - <AUTHOR> https://www.theverge.com/2019/7/24/20708542/coding-autocompleter-deep-tabnine-ai-deep-learning-smart-compose <comment><USER2> Recent discussion, linking to the actual service: [https://news.ycombinator.com/item?id=20442606](https://news.ycombinator.com/item?id=20442606)</comment>