HTML.js – Befriend the DOM - <AUTHOR> http://nbubna.github.io/HTML/

<comment><USER2>
        If multiple elements of the same tag exist, a proper
        array of elements is returned otherwise an Element is
        returned.

STAHP. Please don't make the type of the return value dependent on runtime state. This is exactly why jQuery created its own array-like wrapper (which subclasses Array, fwiw).

<comment><USER3> In cases where the return value type is actually unknowable, you can reliably use each() on the results. The whole point here is to use the DOM, not a wrapper. I'm open to pull requests if you have a way to have consistent interface and return types without a wrapper.

<comment><USER2> I'm not sure what you mean by "cases where the return value type is actually unknowable". Does that mean you only return an Element when it's something for which there can be only one on the page (like document.body)?

As far as APIs go, one way would just be to return a list always. The DOM, afaik, returns a special NodeList thing that isn't even an array. ( [https://developer.mozilla.org/en- US/docs/Web/API/NodeList?re...](https://developer.mozilla.org/en- US/docs/Web/API/NodeList?redirectlocale=en-US&redirectslug=DOM%2FNodeList) ). What's the actual issue with using wrappers?

<comment><USER3> Wrappers actually have their share of subtle problems, we've just gotten used to the jQuery way of coping. Hmm, i sense another blog post coming... :)

At root, the issue is that without widely available Proxy implementations (wildcard property intercept), wrappers must duplicate the entire underlying (and widely varying) API of the wrapped elements. You could do this by slavishly copying the DOM or by creating an entirely separate API (like jQuery).

Back when the DOM was a mess (3-4 years ago), the wrapper was the only sane approach (witness jQuery crushing Prototype). I'd argue things have changed: [https://github.com/nbubna/mind-hacking/blob/gh- pages/extendi...](https://github.com/nbubna/mind-hacking/blob/gh- pages/extending-the-dom.md)

Returning a list for all operations is returning a wrapper, not the path i'm on. I would never argue that variable return types is ideal, but i currently prefer its problems to the problem introduced by using a wrapper API. :)

<comment><USER4> What you say is entirely orthogonal to the issue at hand. The question isn't whether you want to proxy dom properties - the question is what you return from a search query that conceptually may return several results, one result, or no results.

That state - that return value - does not behave like a DOM node. It doesn't quack like one. Sure, you can somehow create a mapping between the various scenarios - 0 results to null (or undefined?), 1 result to the result itself, and several to an array, but that just means that working with the result becomes harder.

As an API consumer of HTML.js as-is, I've got a few choices

\- I can be hyperverbose and check all the time what the return value was (shudder)

\- I can use a special-purpose api that happens to work in all cases. This is ok, but adds complexity, and since it's not enforced, I'm going to makes mistakes that will bite me confusingly at inopportune moments.

\- I can make assumptions about the dom... this element must _always_ be unique, right? and this selector always matches something, right? This coding style is hell to debug, especially without liberal asserts nor even the implicit asserts that a static type checker would make. This is the syntax the examples use, must be a great idea...

Let me put it this way: you're basically writing a query DSL, but you've chosen to make the syntax depend on the runtime state of the DOM. e.g. finding a link inside a div inside a section is written differently depending on whether there are several divs, or just one.

<comment><USER3> I gave a solution (each()). You say it adds complexity. But adding it to what? The DOM gives you NodeList for querySelectorAll and an Element for querySelector. Is choosing between those at runtime and working with the results simpler than each()? No. Is one of those enforced? No. Fewer mistakes will be made with HTML.js than the straight-up DOM. I've reduced (and somewhat shifted) the complexity, not added it.

You say my dismissal of wrappers is entirely orthogonal because you are only comparing HTML.js to jQuery on jQuery's terms. jQuery made the choice to have syntax independent of the runtime state of the DOM. That's great, very useful!! I use jQuery all the time, it's not going away anytime soon. But with that benefit comes the cost of having to maintain a wrapper API, to learn a separate API with its own orthogonal set of drawbacks to using the DOM directly.

Web dev is changing. Single-focus libraries, web components, shadow DOM, all of these do not look fondly on wrapper APIs. Wrappers are essentially foreign tongues, not the native DOM they are designed to consume. HTML.js is designed for that world, where you are working with small, tightly controlled sections of native DOM.

If your page is the wild west with complex selectors and lots of interacting runtime changes, by all means, use a wrapper API like jQuery. But stop measuring every DOM helper with that stick. Sheesh.

<comment><USER5> You're completely missing/ignoring his point, and arguing about topics that are entirely unrelated/orthogonal.

You shouldn't return separate types of objects from a function based on the current state of the DOM, because the resulting code will be confusing, fragile, and hell to debug. To take the Clojure guys' language, such code is "complex". Don't make APIs like that: it's an anti-pattern. Either always return an array, or always return some kind of wrapper, or use separate methods for different return types, or use exceptions, or whatever mechanism you want, but pay close attention to cases where the typical API usage will lead to fragile code, and try to prioritize avoiding those.

<comment><USER3> And you missed mine. I made a willful-and-fully-knowledgable choice to conflate nodes and lists. I understood then and still understand that it shifts complexity from the call to the return value. How is explaining motives for that decision "entirely unrelated"?

I also, knowing that complexity was shifted to the return value, created an each() function that _solves_ that problem entirely. It allows (even encourages) you to handle the result exactly like a proxy/wrapper. Again, how is that not related?

Yes, i am doing something unconventional, something that failed for others in the past. In fact, i'm doing several things like that. I'm also extending the DOM, not even using prototypes, but manually! Now, why don't ya'll explain to me all the conventional wisdom about those things too. I've gone against it, therefore i must be ignorant, right?

<comment><USER4> I don't mind going against conventional wisdom; and I think HTML.js's let's see what we can get away with is kind of neat - but conflating nodes and node- lists isn't avoiding a proxy, it's just making the api harder to use.

You mention .each, but the fact that you don't use it yourself in the primary HTML.js example should be telling you something: HTML.js does not encourage it's use. It's a cop-out; an escape valve that forces you into a less-than ideal syntax.

If you want to look at this through the lens of breaking with conventional wisdom you should be looking at why that convention arose in the first place.

Extending the DOM? You've got a good argument that the original reasoning no longer applies there! Conflating nodes and node-lists? What's different now that makes this a good idea?

Personally, if anything, I think the conflation is a _worse_ idea now than it was a long time ago. Back when JS was "just" a small snippet in an otherwise static site making assumptions on the DOM of that site made some sense if it simplified your JS. Nowadays, the DOM is more and more an API for building an app, and less a static representation of a document. It's far from static, and depending unnecessarily on structural details of the DOM just means you need a more complicated (slower, more error-prone) mental model while programming.

It's not impossible - it's just making things hard for yourself. But what for? Where's the commensurate gain?

<comment><USER3> You're wrong about each(). I do use it in the demo twice. Writing each() was _the main_ challenge and goal in my development process; the most enjoyable part of it. Look at the code itself and how much of core.js is devoted to giving each() it's power and flexibility. each() also powers the alter.js (as it should all extensions). Calling it a cop out is flat out ignorant. What you also don't know is that i've writing javascript since it's beginning. I am no stranger to the DOM nor its history. I've been building apps with web technology full time for 12 years. Your "you don't know what your doing" posturing is again, founded in ignorance of me and my code. There is no choice in this library that i made in ignorance of the tradeoffs nor of the conventions i am challenging. Accept that, please.

And i am most certainly NOT making things hard on myself. I forked Voyeur and rewrote it because the concept was so close to what i needed to make things much easier for working with the DOM. I needed a tight library that let me avoid branching code (unwieldy if/else) into either querySelector (node returned) and querySelectorAll (list returned). I wanted something that made it easy to traverse the short and usually quite static structures of my shadow DOMs or web components. The gains are numerous for me (and many others). It baffles me that you think using HTML.js is harder than straight DOM.

Now my lecture... You need to stop seeing the DOM as a large, dynamic structure of myriad, loosely defined nodes. The future of the web (what i'm aiming for) is components: groups of encapsulated structures whose internal relationships are well-defined and whose external relationships are nearly irrelevant. You probably won't understand the value of working close to the DOM with tiny libraries that don't abstract everything away for you until you pull your head out of 2010 design patterns and into 2015 ones.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> If you are making another dom traversal library, you must (imho):

        * Explain why someone should use it over the standard: jQuery
        * Clearly explain the stance toward browser compatibility (not hand-waving & "oh who uses ie8 anyway?")
        * Come up with something better than "It's smaller than jQuery!"

Without these points hit I don't even bother looking at DOM library. :/

<comment><USER7> For _you_ they must answer those questions. For some (like myself) these are enough. I don't need or want to load all of jQuery unless I'm using more than just DOM selectors and manipulation. The projects I'm working on now all target the latest browsers so I don't care about IE 6/7 or backwards compatibility.

Yes, I could write one myself but this way _I_ don't have to maintain the codebase. Nothing is a 'one size fits all' solution but for some this is a good start.

My point being don't dismiss it just because it doesn't fit your needs right now. It's still worth taking a look at.

<comment><USER8> > I don't need or want to load all of jQuery unless I'm using more than just > DOM selectors and manipulation.

Then why not just use Sizzle, which is jQuery's core selector engine without all the extra fluff? Again, the same question applies.

<comment><USER7> Sizzle is one of the engines we are checking out. Is HTML.js better? No idea. Worse? Same answer.

HTML.js is still smaller (a huge factor for me right now) and less 'robust', but that isn't always a bad thing.

<comment><USER4> By the looks of it, HTML.js is worse than plain DOM. Try `HTML.body.div.section.ul` in the example on its homepage, for instance - I'm willing to bet that's not doing what you'd expect.

<comment><USER3> I'm hoping it returns undefined. Dot-traversal on a list goes into the first item, the first item should be empty. I have had some issues with the demo, since it hacks some things for presentation's sake. What did you expect?

</comment></comment></comment></comment></comment></comment><comment><USER3> I appreciate all the attention. Just FYI, i was not ready to start publicizing this, someone randomly found it and started that ball rolling without me. There are a bunch of changes in the pipeline for the near future. (see the github source for what's happening)

</comment><comment> grey-area Download link is currently broken, it should be:

[https://rawgithub.com/nbubna/HTML/master/dist/HTML.min.js.gz](https://rawgithub.com/nbubna/HTML/master/dist/HTML.min.js.gz)

To those asking why you'd use this in place of jquery, the only reasons to use it are that it is smaller, vastly simpler, and yet does the things which many people use jquery for with a neat syntax. One of the main attractions for me is that it seems to get out of the way far more than jquery - elements aren't wrapped, behaviour is as you'd expect from the DOM, so you don't have to learn a new API just to manipulate objects in the way that you do with jquery.

Re speed issues, if you're using this enough or on documents where speed of selection is an issue, you could simply optimise the particular selector and just use the DOM to get a speed bump. I've not often seen a case in real-life where this matters though, does anyone have any examples we could look at?

If you want to use jquery plugins, cater for IE < 9, or use things like jquery animations or UI obviously you wouldn't want to switch.

</comment><comment><USER9> 2 thoughts of the top of my head:

1 - is there no equivalent for .closest()? Traversal from relative paths is kind of a big deal for a jQuery-like tool

2 - what is the type of `HTML.body.div`? HTMLDivElement or Array? If it depends on your markup, then that's a recipe for easy breakage

<comment><USER3> If you don't know, use each() and only() to act on the results. They're always available and don't care if it is an element or array of elements.

<comment><USER9> 2 more thoughts :)

1 - you cannot be sure that return types will not change in the future (e.g. markup changes in maintenance phase), especially in large projects with lots of devs, hence my comment about brittleness.

2 - each() is verbose and encourages procedural style, which can cause redraw performance hits (i.e. someElements.readDOM().writeDOM() redraws much faster than someElements.each(function(el) {el.readDOM().writeDOM()}) since the browser's engine doesn't need to recalculate layout at every iteration

re: closest() - I've seen people do things like

      $("li ul").closest("li").addClass("has-children")

for things like dynamic expandable tree initialization. Granted, it's not a very common use case though.

<comment><USER3> 1) i can reliably assume HTML.find('#foo') is a node, and HTML.find('.foo') must use each(). These things get even easier as web components and shadow DOM become widely available. I'm aiming at the future here, not the past.

2) elements.each('readDom').each('writeDom', 'value')

3) HTML.find('li ul').each('parentNode.classList.add', 'has-children')

</comment></comment></comment></comment><comment><USER10> Reminds me of the regrettable mistake that was E4X. I used it when developing TomTom Home on xulrunner, and its helpful "blurring" of XML and XMLList was no help at all, a misguided attempt to oversimplify something that just ain't that simple. I couldn't believe they designed it that way on purpose. It made JavaScript seem more like PHP.

[http://www.morearty.com/blog/2007/03/13/common-e4x-pitfalls/](http://www.morearty.com/blog/2007/03/13/common-e4x-pitfalls/)

5\. E4X intentionally blurs the distinction between XML and XMLList

When you begin to learn E4X, you learn that there are two main data types, XML and XMLList. That seems simple enough. But then after a while, you start to notice places where it seems like the "wrong" type is being used, or where impossible things are happening.

var mydocument = <root> <rabbit name="Brownster Johansson McGee" /> </root>;

// 'mydocument.rabbit' means to get a list of ALL <rabbit> // nodes, so myPetRabbit must be an XMLList, right? But // I'll call my variable 'myPetRabbit', not 'myPetRabbits', // because I happen to know that I have only one pet // rabbit.

var myPetRabbit:XMLList = mydocument.rabbit;

// What's her name? Hey wait a minute, "her" name? // Why does this next line work? Isn't myPetRabbit an XMLList? // What does it mean to get an attribute of a list??

trace(myPetRabbit.@name);

The reason this works is that E4X intentionally blurs the distinction between XML and XMLList. Any XMLList that contains exactly one element can be treated as if it were an XML. (Furthermore, in this example, even if 'myPetRabbit' held a list of more than one node, myPetRabbit.@name is still a legal expression; it simply returns a list of all "name" attribute nodes of all of those elements.)

In fact, if you search the E4X spec (PDF) for "blur", you will find 15 usages of the phrase "… intentionally blurs the distinction between…."

For example, another place where this blurring is evident is in the behavior of XMLList.toString(). As the Flex docs say:

If the XML object has simple content, toString() returns the string contents of the XML object with the following stripped out: the start tag, attributes, namespace declarations, and end tag.

If the XML object has complex content, toString() returns an XML encoded string representing the entire XML object, including the start tag, attributes, namespace declarations, and end tag.

So if an XMLList contains <node>hello</node>, then toString() will return "hello"; but if the list contains <node>hello</node><node>goodbye</node>, then toString() will return "<node>hello</node><node>goodbye</node>" (not "hellogoodbye"). Presumably this decision was made in an effort to achieve "do what I mean" behavior, where the output would match what developers most often intended; but personally I find it a little confusing. If you really need the full XML version of an XMLList that contains simple content, use toXMLString() instead of toString().

</comment><comment><USER11> Forgive me for my naiveté, but as this library is so small and limited (in focus) and seems to not worry with older browsers, why not use plain old JavaScript?

EDIT: I should add—I am legitimately curious. I've only been learning plain JS for the last few months, and I'm wondering what pitfalls I might uncover.

<comment><USER3> By all means, use the plain old DOM interface! That's kinda the point i'm driving at with this library. We don't really need jQuery anymore (at least not all of it). Small components like HTML.js can still be handy when you want a little sugar to save some typing though. :)

</comment></comment><comment><USER12> Does the DOM Traversal performance issue has been solved from voyeur.js?

(library this is forked from has documented performance hit: [https://github.com/dunxrion/voyeur.js/issues/20](https://github.com/dunxrion/voyeur.js/issues/20))

<comment><USER13> Thanks for including a link to this issue... Without it I would have assumed the was just a needless fork of Voyeur.js

<comment><USER12> Actually, I'm not certain of what are the differences between the two. Maybe OP can explain.

</comment></comment></comment><comment><USER14> At first glance, this does seem a little lighter and more elegant for light projects than jQuery. I do see the chains could get long, but they might well match CSS selector chains I already wrote, so it's type-heavy but not brain- heavy. It's also such a light file that I might prefer it on a one-pager if the interactions are few and simple. That said, any jQuery plugin is lost with this option, so if have to decide against using any/all before I begin and if the possibility exists I'd probably err on the jQuery side.

</comment><comment><USER15> So I guess I'll be the first to ask the obvious question. How is this different or better than jQuery?

<comment><USER16> There is a small FAQ in the bottom.

<comment><USER15> I red the faq... didn't really answer my question... from the examples I saw, there was nothing there that ouldn't be achieved with JQ...which is why I brought it here...thought maybe I was missing something.

<comment><AUTHOR> Well... _everything_ could be achieved with JQ. Usually with 1 line of code. But that library is 2.7k and you're working directly with the DOM elements and not with wrappers. So I guess it could come handy for smaller projects where you wouldn't need the full JQ power and 10 JQ widgets.

</comment></comment></comment></comment><comment><USER17> Did the author ever look at d3? It seems to offer the same thing, with the added benefit of being able to bind data to the dom elements. [http://d3js.org/](http://d3js.org/)

<comment><USER18> This is a very different API from d3's.

<comment><USER17> Not really.

      HTML.find('#empty li').only(function(el, i) {
        return i % 2;
      }).each('className','odd')

      d3.selectAll("#empty li').filter(function(x,i) {
        return i %2;
      }).attr("class", "odd")

</comment></comment></comment><comment><USER16> Should be called DOM(.js) instead.

<comment> martin-adams Maybe, but the notation is in the context of HTML rather than a DOM Model. It would seem weird to have a DOM.js have it's root library referenced as HTML.

DOM.body.div doesn't quite seem as nice to me.

</comment></comment><comment><USER19> Looks like someone rediscovers Prototype.js. jQuery does not extends DOM because it does not work. Library before jQuery choose extending the DOM approach and chaos happens, that's why jQuery got popular.

In the end the author said "DOM extension is no longer to be feared". So what's the argument when you read the linked article? "Just choose non- conflicting name!" Really? That's your suggestion?

</comment><comment><USER20> I'm curious as to why HTML.ify is necessary. Shouldn't HTML itself be a function? If passed a string it then that's HTML.find and if passed a dom node or one of the weird collections of DOM nodes the native APIs provide then it HTML.ify's them.

I like the idea if not so much the execution. It needs a partner for smoothing over event handling.

<comment><USER3> Event handling is in the works, either bundled or separate: [https://github.com/nbubna/HTML/issues/1](https://github.com/nbubna/HTML/issues/1)

HTML _is_ the root element (<html>), so it cannot be a function. HTML.ify() is only needed if you have a different library/interface that hands you an element, not retrieved via find() or dot-traversal.

</comment></comment><comment><USER21> Boo at naming libraries by adding .js to otherwise common names. It risks making library building kind of a domain name-like landgrab.

</comment><comment><USER22> Reminds me of zen-coding: [https://code.google.com/p/zen- coding/](https://code.google.com/p/zen-coding/)

zen-coding is designed for use in a text editor, though, and is a quick way of generating a ton of properly-indented, well-formed HTML.

</comment><comment><USER23> Pretty cool, but please rethink using that example :) It's a little slow and doesn't immediately show off your hard work.

A few (static) independent sections would do a much better job of promoting yourself.

<comment><USER3> Those are below the jump. I've not had time to polish that demo further. The library went viral a bit earlier than i'd hoped. Work is in progress.

</comment></comment><comment><USER24> Neat idea, but you're going to have to refactor many lines of code each time you wrap elements in a new parent element. In other words, this is a ball & chain for your markup.

<comment> grey-area In what way is this different from jquery? You can do this too:

        HTML.find('body section .identity')

which is just like jquery's

        $('body section .identity')

and both depend on the structure of your document, so if the doc changes, the code must change.

<comment><USER25> Which is just like `document.querySelectorAll('body section .identity')` which also works in IE8+, FF, Chrome.

<comment> grey-area I think it passes through to that with the find method, so yes, exactly like that. Whatever you use to query though, if you use CSS selectors, your code will be dependent on the structure of the HTML document. You can't really escape that if you're using the DOM, and I don't see why any of these methods is any different in that regard. So it's the same as jquery in that sense.

</comment></comment></comment></comment><comment><USER26> HTML.find("#element") is longer than $("#element") so I doubt it'll catch on

<comment><USER27>
      var $ = HTML.find.bind(HTML);

Enjoy.

<comment><USER28> Better yet:

      var $ = require('HTML');

</comment></comment></comment><comment><USER29> for a second i thought this came up with direct DOM approach...but i found this is just another Jquery type library with different syntax...In this case, good job but i am happy with Jquery or Zepto..

</comment><comment><USER30> Please stop the demo if I start typing something in the box.

<comment><USER3> Good idea! I'll do that.

<comment><USER31> Also, the flash on the left hand side occurs too quickly. If I pay attention to it, then I can't read the code. If I read the code, I can't look at the flash. Pretty slick though. :)

</comment></comment></comment><comment><USER32> great idea. there is so much in jquery, which we can lose. having thin layers on top of the standards is the way to go. what about events?

<comment><USER3> That is the question: [https://github.com/nbubna/HTML/issues/1](https://github.com/nbubna/HTML/issues/1)

</comment></comment><comment><USER33> yass.js ftw - [http://yass.webo.in/](http://yass.webo.in/)

</comment><comment><USER34> On how much browsers has this stuff been tested ? because that's the point of jQuery , you can trash it all you want jQuery has been battle tested on a large number of browsers and plateforms. Other DOM frameworks not so much, that's why they fail.

<comment><USER32> the very point of this is to lose some the old painful browsers (IE6/7/8) to make code much better. almost all work in cross-browser stuff is IE6-8. think of jQuery mainly as a bugfix for old IE's.

<comment><USER35> That is a really gross exaggeration.

jQuery only lost 10% of its size on full builds when it eliminated IE6-8.

There is still plenty of stuff left to handle. Naive code that only handles common success case is of course going to be small. Even if the modern browsers didn't have bugs and behaved exactly the same, you would still have most of the stuff there.

jQuery features amazing event model with endless corner cases and optimizations* handled, powerful ajax library (Think of stuff like prefilters and transports) and so on.

* For example your typical delegation implementation traverses the propagation path over and over again for each handler, while probably not even checking for simple selectors.</comment></comment></comment>


Show HN: Fitocracy, an RPG for fitness - <AUTHOR> My cofounder and I have been working on a site called Fitocracy (www.fitocracy.com), which is a social game for fitness.  The idea was very much inspired by our experiences growing up as nerds playing video games, later on discovering weightlifting, and drawing the parallel between working out and "leveling yourself up."  XKCD has a pretty well known comic to this effect: http://xkcd.com/189/.  We find that the metaphor of workout out as leveling up in a video game resonates with quite a few people, so Fitocracy is an attempt to bring that to life.
On Fitocracy, tracking your workouts earns you points/levels, unlocks special achievements, and fulfills "quests", which are basically exercise milestones that aim for workout variety and progression.  As you progress in your training, Fitocracy offers more quests, increases the level up requirements, etc.  We also try to make the experience as community focused as possible, so the site actively encourages you to follow others with similar fitness approaches, comment on workouts, etc.
We have been in invite-only beta since mid-February and have become fairly popular on Reddit and SomethingAwful.  I know there are plenty of folks on HN that are interested in fitness so I hope this will be of interest to some of you.
URL: http://www.fitocracy.com
You can sign up using this invite link:  http://ftcy.co/jaBLMa
We're still working through a long list of bugs and features to get out, but do feel free to offer any feedback.  Hope you all enjoy!
You can find me on Fitocracy at: http://www.fitocracy.com/profile/xenowang and my cofounder at http://www.fitocracy.com/profile/dicktalens (seriously, the way our usernames may sound to some is purely coincidental)
-Brian
Interesting side note: We started working on this in October 2010 and I had no real prior experience in front-end design at that point.  I've basically been cutting my teeth in front-end design (design principles, Photoshop mockups, graphic assets, HTML, CSS) on Fitocracy. <comment><USER3> I checked out the achievements, and they are mostly strength-focused and pretty daunting for a beginner but possibly too simple for an experienced lifter. The list of achievements should be categorized and fleshed out, with barbell lifts in one category, bodyweight exercises in another category, running in another, swimming in another, kettlebells in another, etc. More levels should be added, too. Video game achievements typically start really easy (10 kills with a particular weapon, for example) and then ramp up quickly. Level one of barbell squatting should be a single barbell squat with any weight! Remember, you're trying to suck people in! For most folks who are entirely new to weightlifting, just walking over to the equipment and starting to use it is an achievement. Your system should validate that feeling and help pull people gradually over the psychological barriers as well as the physical ones.

1RM (one-rep maxes) achievements are not friendly for beginners, by the way, because beginners find it less daunting to push themselves for reps than for one massive lift. It feels safer, and conventional wisdom seems to be that it actually is safer. Also, keep in mind that female users will have a very different perception of, say, a 0.9x bodyweight bench press. Revamp your achievements, and they will become a lot more addictive, and therefore a lot more useful for keeping people working out and keeping people on your site.

<comment><AUTHOR> Thanks for the feedback, dkarl.

We've had a largely positive response to our achievements system thus far but I agree that they aren't necessarily beginner friendly. We do intend on fleshing out the system more to support achievements for a greater variety of exercises (cardio, bodyweight exercises, etc).

</comment></comment><comment><USER4> Logged in, watched the tour, feel left out in the cold now.

* Lots of quests/suggestions/activities require stuff I don't have. I somehow expected more easily available things (i.e. run/cycle/workouts without the need for gear)

* English's a foreign language to me. I can talk you to insanity if we're discussion nerd stuff, but reading most of the quests is gibberish without Google Translate. Add more graphics so that I don't have to guess that much.

For now this seems to be heavily focused on native English speakers that like dumbbells/weights and have a good understanding of the science of fitness. That is, not me.

Maybe I kind of expected the WoW style easy gratification at first.. ;-)

<comment><AUTHOR> We freely admit that there's a heavy skew toward weightlifting on the site at the moment, but we're focusing on adding more quests/achievements around cardio and other activities quite shortly.

<comment><USER5> How about building the achievements around programs that will actually result in real improvement? Or around programs to achieve certain goals?

Everybody always wants cardio. I think because that is what most people do. But that isn't going to make you fit by any useful definition of the word.

<comment><AUTHOR> We intend to build out functionality to let us offer programs around specific goals. The quest system is a precursor to this, but the idea is to have a fun way of offering structured guidance to the user and move them to specific outcomes.

And believe me, I'm in agreement with you about cardio. It's pretty worthless in many cases :)

</comment></comment></comment></comment><comment><USER6> You should consider adding some more body weight achievements maybe some more exercises. I prefer them to weights--cheaper, always available. <http://www.frixo.com/sites/fitness/> is a site I use for reference, but there are many out there. Maybe some yoga as well? Adding some amazon affiliate links to some equipment might do well. Pullup bars are cheap and awesome.

(I got an internal server error on <http://fitocracy.com/profile_setup_3/> of the setup process)

<comment><AUTHOR> We already have quite a few bodyweight exercises on the site, though the scoring system for them is a little borked and is in need of an overhaul. Yoga is also on the site as well.

Regarding the internal server error, did that occur right after Step 2 or was it when you attempted to finish the sign-up process?

<comment><USER6> It happened on the screen where you hook up facebook & twitter. Account was created fine, though.

</comment></comment></comment><comment><USER7> While your site layout is very nice, it's seems like the theme is a bit distant from the subject matter, which you describe as an RPG for fitness.

I guess I was expecting less <https://banksimple.com/> and more <http://www.rexbox.co.uk/epicwin/>

<comment><AUTHOR> Duly noted. As mentioned, I'm no creative/graphics designer but we're hoping to have somebody with those talents join the team down the line.

</comment></comment><comment><USER4> I wanted to log in with Twitter (don't like FB..), but you wanted to have quite a nice list of permissions. Without even knowing a lot about your app, why should I agree (I didn't)?

Can you explain what you do with the social network accounts?

<comment><AUTHOR> We only use FB and Twitter for easy sign-up/sign-in. We'll be introducing posting to FB wall / tweeting workouts/achievements soon, but that will be totally optional. We'll never post to your social network accounts without your explicit permission.

Email addresses are a concern as well, of course. We won't email you unless you authorize us to do so in your account settings.

<comment><USER4> Add something like that to the signup process then. I doubt that I'm the only one that just didn't dare to hand out Twitter access to ~something unknown~. Especially with the social media abuse we've lately discussed in several posts on this board.

Something like 'We never post something without your consent but might allow you to share your achievement in the future' or a more eloquent version might have relaxed me enough to hit 'yes'..

</comment></comment></comment><comment><USER8> For people who already work out, this is a great tool. For people who need a starting point, this needs some work. Some suggestions that may be helpful:

Allow users to specify their starting point or _class_. How do you want to start exercising? Similar to how players choose classes in MMOs, users could pick a starting point. Srongman, Endurer, Ripped, Swimmer, Biker, Martial Artist, Climber... and the user can choose to start as one of these things and the quests guide the user to achieve that title by focusing on attributes like strength, endurance, tone, lower body workouts, etc.

The reason I think this would help people just starting out is that 1) It helps to have someone tell you what to do. That's why personal trainers are popular. 2) It'll confirm whatever bias/propensity a user has. Some people love to ride bikes and the prospect of riding 100 miles is less daunting than the goal of working up to running 10 miles. Likewise a person who is into cardio will be less inclined to try doing heavy weight training.

Very cool project. Good luck!

</comment><comment><USER9> I joined in February, but I haven't used Fitocracy yet.

My feedback on why it hasn't grabbed me yet:

1) Design - as Goronmon pointed out above, the design doesn't feel fun or encouraging.

2) Performance - it's laggy right now, although I expect that will improve soon.

3) User Experience - It's hard to figure out how to get started, or to get a clear picture of how it all works. I'd suggest including lists of activities, rather than making people type into a blank box and look for autocompletes.

The activity feed is interesting, but it still feels like a list of data, removed from any context.

4) Perception - Right now, it seems like a place for fitness freaks and gym rats. That might be intentional - but I'd much rather use a site populated by out of shape geeks working to get fit.

If Fitocracy can make exercise game-like and enjoyable, it will win. The hardest part is getting started each day (getting up to run, going to the gym instead of the pub after work) - that's where Fitocracy can make a difference.

Good luck, guys - I hope this becomes something great!

<comment><AUTHOR> Hey Jayson,

Thanks for the thoughtful feedback. Responses below:

1) Design is certainly something I'd like to work on improving. As noted in the OP, I handle the design for Fitocracy which is a bit funny, since I was pretty much a total beginner at this process 6 months ago. We'd like to eventually have a full-time designer on board.

2) If you think it's bad now, it used to be 10x worse a month ago. I'm not even exaggerating here. That being said, better site performance is absolutely something we're working on as well.

3) UX is also a top priority that we want to hit hard on ASAP. We know there are quite a few shortcomings right now but we hope to make the experience more cohesive and simple over time.

4) You're right that the core users skew more toward people who are already quite active in working out. We've found that they're a pretty key demographic at the moment, but we do hope to make the experience more enticing and useful for absolute fitness noobs down the line.

Thanks again, Brian

</comment></comment><comment><AUTHOR> Clickable invite link: <http://ftcy.co/jaBLMa>

</comment><comment><USER10> How about hitting up the Daily Burn API for workouts as well? I use Daily Burn to track my calories and workouts as it collates them for me nicely and it would suck to have to enter everything twice. I know a lot of people who are already on workout tracking/fitness sites wouldn't move (to much hassle and history) but you could produce a nice add-on to their data.

<comment><USER11> FatSecret would be nice too <http://platform.fatsecret.com/api/>

</comment></comment><comment><USER12> Wow, photo required? Ouch. I bet that kills a lot of signups.

Edit: And then it stretched it sideways so I look even fatter. Nice.

<comment><AUTHOR> A photo isn't required for signup. You can just use the generic silhouette image for your profile image.

Image resize/distortion is something we will fix in a future update.

<comment><USER13> You may want to have an explicit note saying it isn't required. People may think it is required because uploading a photo has its own step. Having a note will make the UX feel a bit more friendly.

</comment></comment></comment><comment><USER14> Your sign up process uses a few things from here <http://news.ycombinator.com/item?id=2517296> that I really liked. I love being able to see a password I've typed in only once.

</comment><comment><USER15> You should check out my buddies blog, his community would align well with yours, <http://nerdfitness.com/>

Maybe send him a message and start working something out?

<comment><USER16> I second this. Steve at Nerdfitness.com runs a great blog and community, you should definitely attempt to connect with him.

</comment></comment><comment><USER17> Awesome, always a fan of the gamification of activities, especially if they will result in a net benefit for the participant.

Would love to talk shop about what you guys made this with, have an email I can reach out with?

Thanks!

<comment><AUTHOR> Hey Jon,

You can email me at brian [at] fitocracy <dot> com.

<comment><USER18> As a co founder of a Gamification Platform startup, I'd love to chat about your experience creating the achievement system itself. Mind if I shoot you an email?

<comment><AUTHOR> By all means :)

</comment></comment></comment></comment><comment><USER19> Looks rather neat, and it's a good idea. I think the issue for me would be taking the time to update it. I use Jefit on android whilst working out to replace paper and pen for recording exercises, weights, reps etc. It would be good if you had a mobile client that would let me record my exercises whilst working out that fed into Fitocracy. If you wanted to be more advanced, so you could even make it two way - EG alerts popping up that say "2kg more and you unlock badge XX", "500m more and you get to level YY".

</comment><comment><USER20> Any thought of adding a simple API? We have some iPhone/Android fitness apps that we looking at hooking into a leaderboard or other social system. This might be an excellent match.

</comment><comment><USER21> As someone else mentioned, some of the quests require equipment that I don't have. How about asking the user what type of equipment they have? I wouldn't go too detailed into it, but say something like 'gym membership', 'small home gym', 'treadmill', etc. Once you have that information, you could scope the quests based on that.

Another thing that would be useful would be some videos or instructions on some of the exercises. Showing correct form and/or how to use certain equipment would be great.

</comment><comment><USER22> This is a cool site -- great start! I would like to make a couple of suggestions:

1\. don't just focus on exercise, include an "eat healthy" component too (maybe based on both calories and general healthy food attributes)

2\. Find a way for user goals. Maybe a "self directed quest" is required for any given level, be it lose X pounds, or reach Y bench weight.

3\. Find a way to keep stats for people and show them graphs of improvement (or otherwise), not just levels, but attributes :)

Keep up the good work.

<comment><AUTHOR> Thanks for the thoughts!

1\. We're focusing on exercise for now as we want to make sure it's executed well. Long term we definitely envision including nutrition as well.

2\. Some form of this is planned.

3\. See: #2 :)

-Brian

</comment></comment><comment><USER23> I've recently been wanting to get back in shape so this is perfect timing. My morning workout instantly got me up to Level 4 - great motivation.

One comment - I'm using a netbook (1024x800 resolution) and some of the boxes, like "great, you just earned X points" are too tall for my browser window, but they move when I scroll - I can't see a button to make the box go away, so I have to click on "play."

<comment><AUTHOR> Hey, thanks for the feedback on netbook resolution. I clearly overlooked that when designing the flow on the workout tracker page. I'll try to get that fixed asap.

<comment><USER23> One more thing - it seems when I open the "quests" box, then close it, it won't open again without reloading the page.

<comment><AUTHOR> I don't seem to be getting this issue on Chrome / OS X. What are you running on?

<comment><USER23> Chromium beta, Ubuntu 11.04

</comment></comment></comment></comment></comment><comment><USER24> Nice website and interesting concept that gets to the motivation issues that prevent most fitness regimes from being successful.

</comment><comment><USER25> Hey I've been using fitocracy for a few weeks now (same username) and I'm wondering if theres any plan to add extra functionality for groups?

I believe (could be wrong) that there isnt actually a point to groups other than seeing each others updates. Are there any plans for group leaders to create their own quests for members or anything like that?

<comment><AUTHOR> Yes, we do plan on further fleshing out the groups feature soon. One idea we're bouncing around is having a PvP style challenge system between groups, or I suppose more appropriately, GvG :)

</comment></comment><comment><USER26> Would love to check it out. Got an internal server error on fitocracy.com/setup after redirect from twitter authorization.

<comment><AUTHOR> Hm, could've sworn that bug was fixed. We've found that trying a second time usually gets around the issue. Can you try doing so?

<comment><USER27> Same thing happened, but it still connected. I just had to refresh creating my profile.

</comment></comment></comment><comment><USER28> It would be nice to know, in advance, what it takes to score points.

I just logged the run I did yesterday, and was rather surprised that it took me to level 4 instantly, not far off level 5.

It would be nice if I could now go and choose an activity that would bring me up to the next level.

</comment><comment><USER29> i didn't see it on the front page but does it interface with any existing data tracking sites like fitbit or strava?

you may want to look at <http://earndit.com/> to see how they automatically pull fitness data.

</comment><comment><USER30> See also: <http://healthmonth.com/>

</comment><comment><USER31> Front page is broken for me by default font size on FF4 on Kubuntu 11.04 - <http://imgur.com/9neX6> \- zooming font down fixes it. It's literally just the button moving that breaks things.

Just FYI.

</comment><comment><USER32> For some reason I can't create the account, but I love the idea - <USER2> levelling up. That's what makes most good training programmes (like CrossFit, which I'm into) successful + peer pressure, which I'm sure you'll provide. Just hope I'll be able to use it one day :)

Marcin \-- Did you see <http://linkfindr.com> ?

</comment><comment><USER33> If you could make a few more invites available I'd gladly join!

<comment><AUTHOR> I just reloaded the code with 350 more invites.

</comment></comment><comment><USER34> Love it.

</comment><comment><USER35> You should link us to your profiles, I'd like to see what you lift =D

<comment><AUTHOR> <http://www.fitocracy.com/profile/xenowang>

<comment><USER36> Do you happen to be following wendlers 5-3-1 routine?

<comment><AUTHOR> I am indeed! I'm enjoying it quite a bit so far.

<comment><USER37> 5-3-1 is awesome. I made some great gains on my DL. 525 1RM weighing 195 :D

Doing Huge in a Hurry now to put on a bit of size and cut down before a vacation to Mexico.</comment></comment></comment></comment></comment>


Ask HN: In light of the recent Dropbox events, which cloud storage service? - <AUTHOR> In light of the events with Dropbox recently (Mac application issues, password dumps from 2012), what is the best cloud storage service?
I am looking for something that has full end-to-end encryption, high storage limits, and I don't want to use Google Drive, OneDrive, iCloud Drive or Dropbox.
I have heard of many different services that people have switched to, but what are the pros and cons of each. How much storage can you get? What are the pricing tiers? <comment><USER2> FWIW, I recently analyzed most of the options out there. I'm in the process of finishing my switch from Dropbox, mainly due to their lack of transparency. Here's the summary before my writeup is published:

\- my needs aren't that great (all my music is stored at Amazon, photos & videos at Google photos) \- I have a local NAS for local backups \- 99% of my files don't need encryption, I'll use BoxCryptor for encrypted directories \- I'll keep Dropbox and the free 2G of space for apps that only sync via this service \- must work with Linux, NOT via webbrowser \- selective sync

I evaluated: iCloud, Tresorit, Spider Oak, Sync.com, SyncThing, Google Drive, Box.com, and pcloud.

I'm probably going with Google Drive due to cost (24/y 100G, I only use ~20G right now), Linux support, and ubiquity.

Tesorit is probably the best solution, but it's also ridiculously expensive: $30/m for 1TB when pretty much everyone else is $10/m for 1TB.

pcloud was a close second place, and this is probably your best choice, but you have to pay extra for the pcloud crypto extension (15/m 2T). From what I can tell, you tell it what to sync instead of working out of a directory which seemed wrong, but I may look closer before finalizing my switch.

</comment><comment><USER3> Not a cloud solution, but I've been using Resilio Sync[0] (previously Bittorrent Sync) to sync files between machines.

It uses the Bittorrent protocol to send files between machines. Your files aren't stored in the cloud (although you could set up a remote linux server and have everything sync to it).

I paid for an individual license and after a bit of pain initially getting some large folders syncing correctly I really like it. Their interface is great and there are OSX, Linux and Windows builds. You can add new machines very easily and like I mentioned above, if you want off-site backup you can just set up another machine remotely

[0] - [https://www.resilio.com/](https://www.resilio.com/)

<comment><USER4> syncthing is another way of doing this, which apparently has some benefits over Bittorrent sync (such as being free and open source, and something else I read about, not sure what). You could check it out at any rate.</comment></comment>


GitHub is "Experiencing problems" :( - <AUTHOR> https://status.github.com/

<comment><USER2> Scheduled maintenance? <https://status.github.com>

"13:16 UTCAs per our scheduled window, we are starting brief database maintenance. GitHub will be in maintenance mode for approximately 10 minutes."

<comment><USER3> Still in maintenance. It already exceeded 10 minutes

<comment><USER2> yep now:

"13:36 UTC We're continuing database maintenance and remain in maintenance mode. We'll update as we return to normal operation."

I need push ma code. ^^

</comment></comment></comment><comment><USER4> But git is distributed so this shouldn't be a problem right?</comment>


Target hit by nationwide payment outage - <AUTHOR> https://www.reuters.com/article/us-target-outages/target-hit-by-nationwide-payment-outage-idUSKCN1TG0M7 <comment><USER2> [https://news.ycombinator.com/item?id=20191731](https://news.ycombinator.com/item?id=20191731)

</comment><comment><AUTHOR> An update: it looks like all stores are back online. This is the official message from corporate:

"Target's registers are fully back online and guests are able to purchase their merchandise again in all stores. The temporary outage earlier today was the result of an internal technology issue that lasted for approximately two hours. Our technology team worked quickly to identify and fix the issue, and we apologize for the inconvenience and frustration this caused for our guests. After an initial but thorough review, we can confirm that this was not a data breach or security-related issue, and no guest information was compromised at any time. We appreciate all of our store team members who worked quickly to assist guests and thank everyone involved for their patience."

[https://corporate.target.com/press/releases/2019/06/target-a...](https://corporate.target.com/press/releases/2019/06/target- addresses-register-outage-all-stores- back-o?ref=tgt_soc_yklv8&afid=TW_BR&cpng=Other_Other_pub_GET)

</comment><comment><USER3> "Hey guys, I think I just broke Production..."

<comment><USER4> Push it out on a Saturday, nobody will notice.

</comment></comment><comment><USER5> I wonder what the single point of failure was to take out every store nationwide of a 45 billion dollar company.

<comment><USER6> Cloud. Hackers greatest dream to take down a single provider or target and it all fails.

<comment><USER7> No, "Cloud" is just some service provider. The responsibility is at Target. They designed this "single point of failure".

</comment></comment></comment><comment><USER8> >The greatest challenge teams faced with developing software for the stores was figuring out how to effectively build a continuous delivery pipeline to 1,800 deployment targets that was safe and expedient.[1]

[1] [https://tech.target.com/infrastructure/2018/06/20/enter- unim...](https://tech.target.com/infrastructure/2018/06/20/enter- unimatrix.html)

</comment><comment><USER9> not sure what the root cause was, but i'm sure it wasn't dns! xD

</comment><comment><USER10> Target is down. I repeat, target is down.</comment>


Genetic Programmers Are the Next Startup Millionaires – MIT Technology Review - <AUTHOR> https://www.technologyreview.com/s/609726/genetic-programmers-are-the-next-startup-millionaires/?utm_source=twitter.com&utm_medium=social&utm_content=2017-12-07&utm_campaign=Technology+Review <comment><USER2> Bit silly but doesn't work in incognito mode, any way to get around it?

<comment><USER3> On google chrome, you can prepend "cache:" at the url and then click at "text only version" before it gets blocked.</comment></comment>


Ask HN: Got let go from firm whose idea can be made better - <AUTHOR>

A friend was hired by this firm and was let go after a month. From what he explained to me, the company is doing it wrong; they have an idea but their idea can be made better, would it be bad to improve their idea? <comment><USER2> Not sure if your friend will be able to work on the same idea depending on the contract he signed, if he signed one and if the contract has a clause in it prohibiting it(most do).

On the other end the idea isn't worth that much, the implementation makes the difference. If he thinks he can do it better then by all means.

</comment><comment><USER3> Usually, that is called "business".

</comment><comment><USER4> Reminds me of the social network.</comment>


Dropbox inventor determined to build the next Apple or Google - <AUTHOR> http://www.latimes.com/business/la-fi-dropbox-20120115,0,6720306,full.story <comment><USER2> I don't see much long-term growth for Dropbox in its current state. Right now, they're a stopgap feature. They've been successful so far because they fill a niche, but the niche that they fill is temporary. Old computing is having your files on your computer and accessing them with local applications. New computing is having your files in the cloud and accessing them from applications in the cloud. In a fully cloud-hosted architecture, there is no need for dropbox. Dropbox is a halfway point in getting us into the cloud, and as more and more apps move into the cloud they will become more and more unnecessary.

<comment><USER3> I disagree, I see dropbox files as MY FILES. I don't like when they are obscured behind some application. I don't see those as MY FILES, I like to see my files in my folders and it's nice and I have a sense of ownership. Dropbox is just an extension of my own personal home filesystem. But it's EVERYWHERE. And that my friends, is what makes all the difference. Like Drew said, he wants a filesystem for the internet. I think this is lost on lots of "the cloud" proponents, who are focused just on applications.

<comment><USER4>
       I see dropbox files as MY FILES. I don't like when
       they are obscured behind some application

The important thing is that it's YOU (and me), not the average computer user. Apple and Google are successful because they fill average users' needs with simple, intuitive and easy to use products; not by presenting them with an scary concept like 'file system'.

I hate it when I'm on my iPad and have to do all sorts of stupid tricks to move files between applications. It's just stupid. But I'm sure Apple will fix most of the nightmare in iOS 6. But I must side with Steve Jobs when he said "When you try and teach someone to use a Mac, everything is fine, until you show them the file system." Average computer users have _extremely_ cluttered and unorganized folders and desktops. Dropbox does not help that.

I think Apple's strategy will work better for them (in the long term) than that of Dropbox's... "A lot of us have been working for 10 years to get rid of the file system so the user doesn't have to learn about it." (Jobs, WWDC 2011)

And this is my favorite quote about Dropbox:

       "Dropbox... It's a feature, not a company"! (Steve Jobs)

<comment><USER5> "scary concept like 'file system'." I find that somewhat ironic considering it was meant to be intuitive and relate to the real world concept of Document,Files and Folders. But when the real world connection begins to be broken I can see how it becomes scary.

<comment><USER6> The problem is that in the real world managing documents, files and folders is a full time job for some people.

If documents, files and folders were intuitive and efficient, you wouldn't have relatively huge administrative staffs at medical clinics, real estate offices, banks, law offices, government institutions, schools, et cetera.

</comment></comment></comment></comment></comment><comment><USER7> While Dropbox is a great service (I can't imagine life without it!), it's a bit delusional to think it could be the next Google or Apple. As Steve Jobs himself said about Dropbox, it's a feature, not a company.

<comment><USER3> Technically, search is a feature too. Google seems to be doing alright. I think that was just Steve being steve, and saying whatever would scare the piss outta Dropbox to get them to sell. If it's such a bad Idea, why did jobs want to buy it?

<comment><USER8> > Technically, search is a feature too. Google seems to be doing alright.

That's because they were able to monetize search enormously through ads. How precisely does Dropbox plan to monetize storage to the same extent?

> If it's such a bad Idea, why did jobs want to buy it?

Strawman. Nobody is saying Dropbox is a _bad idea_. They are saying it is likely not an idea capable of being an "Apple or Google." Edit: also, a Hacker News reader should be well aware of talent acquisitions.

</comment></comment></comment><comment><USER9> "Drew Houston, 28, chief executive and co-founder of Dropbox, last fall pocketed $250 million from seven of Silicon Valley's top venture capital firms."

Well, that's quite the accusation.

<comment><USER10> That's likely worded incorrectly – Dropbox's latest round was that amount but it's unimaginable that Drew took all that money off the table.

</comment></comment><comment><USER11> "Dropbox engineers even hacked their way into Apple's file system to make the Dropbox icon appear on users' menu bars, a bold feat that blew away Apple's cloud team and caught the attention of none other than Jobs."

I have never made an application which does it, but I know of plenty that do (e.g. Evernote). Is it really that difficult?

<comment><USER12> No. Not at all. And it has nothing to do with "hacking Apple's file system". There's an API for it.

<comment><USER13> Is the API available for all versions of OS X? If not, when the API first appear?

</comment></comment></comment><comment><USER14> My problem with Dropbox's prospects to become a multi-billion dollar enterprise, in a nutshell:

I use Dropbox on multiple Macs and across multiple iOS devices, for a not- insignificant variety of use cases. I have never paid Dropbox a dollar.

<comment><USER15> > My problem with Dropbox's prospects to become a multi-billion dollar > enterprise, in a nutshell:

> I use Dropbox on multiple Macs and across multiple iOS devices, for a not- > insignificant variety of use cases. I have never paid Dropbox a dollar.

Have you ever paid Google a dollar?

<comment><USER8> > Have you ever paid Google a dollar?

Are you suggesting that Dropbox is going to hit multi-billions through advertising? To successfully complete your analogy, you need to fill in the gap between "hosting files for free for most of their customers" and multiple billions of dollars.

<comment><USER15> I am not suggesting exactly that, no. But it is possible to make large amounts of money without being paid by the people using your service, if there is a ridiculously large amount of those people. Google is the best example, that part is true.

To be more concrete, there are at least two possible ways for something like Dropbox to make money without users paying Dropbox directly:

* Data mine the files hosted for users. Even anonymized data like this can be very valuable for third parties. Edit: or for other separate services inside your own company.

* Ads that become an integral part of the Dropbox service, preferably targeted using data mining from the previous point.

Are these good ideas? I don't know.

</comment></comment></comment></comment><comment><USER16> Dropbox needs to pull an "Amazon" and pivot like they did with AWS, and Apple did with the iPod. Storage is not going to take them there. Growth is limited and someone can easily come along and replace them. They need a secondary source of income.

</comment><comment><USER17> The way the Dropbox execs have been talking themselves up in the press over the last few months just makes me think that they're angling to raise the price on an acquisition.

Dropbox is a great product, but feature development has stagnated, and the only two expansion options I see are:

* compete with Amazon in a much more user-centric way. * compete with Apple iCloud in a much more open way.

</comment><comment><USER18> I'm late to the thread, but I'd like to share how I use dropbox and share some of my issues.

I have been a long time user, and recently I joined a company which is 100% virtual. We are all consultants who work from our homes - but travel regularly to client sites.

While we are working from our homes - we collaborate and work on the docs needed for our client visits.

Everyone has their own account, and quickly a couple gigs would fill up, due to what i feel is poor logic on dropbox's part, and it is getting to be a bigger and bigger issue.

The issue is that we have ~10 people all sharing project folders. But with the free account, this means we get a lot of duplicated consumption.

If 3 people have 2GB space, and they each share .5GB with eachother, then that .5GB is taking up .5GB from everyones account.

This sucks.

Personally, I have a paid 50GB account, and I created a shared public folder. Everyone on my team joined the public folder - which is always 50GB to ME - but to them it consumes THEIR space - and soon their syncing stops because the folder I made is larger than their box.

This is retarded, I think that if they visit MY folder, this should not count against THEIR storage - especially when I am paying for it.

I do undestand the complexities of this - but then the problem is that the cost to fix this issue is that everyone needs to upgrade their account.

I have looked at the team offering, but then that is too expensive.

I think what is best - is to have one corporate DB account, and have everyone login with that userID - and pay for the upgraded space for that one account.

With this said, based on the current design of dropbox and the fact that it is simply a feature - there is no way this company will be the next Apple, let alone google. Unless Drew is referring to emulating their culture, or maybe brand recognition. certainly he cant be talking about product diversity....

Anyway - I love dropbox, and am happy to pay for it, but as it currently stands, is a half-feature.

I dont even know what kind of use-case model for teams such as mine they are looking at. Perhaps I should send them an email.

</comment><comment><USER19> Was a huge fan of Dropbox until I went out on a limb to convince my boss to move from internal servers to a team account.

The customer service was not just bad, but noticeably absent, and the product is overpriced and relatively shallow at an enterprise level.

Still pay for a personal 50gb account, but canceled the team account...well we will as soon as they actually return my call.

<comment> d-roo > The customer service was not just bad, but noticeably absent...

I couldn't agree more -- I also pay for a 50 gig plan. About a week ago, I had to rebuild one of my machines and somehow my new Dropbox folder (which of course was empty) synced out to the cloud and to the rest of my machines. Suddenly my backup consolidation was completely wiped out. I submitted a support ticket and even now, nearly a week later, it is still unassigned. So, I spent a day undeleting 3500+ files through their web interface. Although quite limited, I will say I was thankful that functionality was there.

After being so impressed with Dropbox, their lack of customer support has been a huge disappointment.

</comment></comment><comment><USER20> I know it would be relatively small but can anyone wager a guess as to how much each of the 2gb freemium packages costs Dropbox? At 50 million users it has to add up--I've always wondered about Dropbox's conversion rate (free to pay) but it must be relatively high to support the current monetary system.

<comment><USER8> Keep in mind that they use S3, so they pay for what they use, not what they have committed to their free users. But if they were, then for 50 million free users:

2gb * 50,000,000 = 100PB. That would qualify them for S3's over 5PB pricing of $0.055 per GB-month. So that's $66 million per year just for storage.

But again... they're probably actually using far, far less than 100PB on their free customers.

<http://aws.amazon.com/s3/pricing/>

<comment><USER21> Dropbox also uses deduplication thus reducing those figures

</comment></comment></comment><comment><USER22> >He'd strap on headphones to block out everything but the endorphin rush as he cranked code late into the night on a new service that instantly syncs all of your files on all of your devices.

 _sigh_ Thought we were done with the hacker cliches?

</comment><comment><USER23> I can see dropbox turning into a service that stores and connects you to your whole "environment" so you can access it from any device.

<comment><USER24> I remember reading an article a few years ago by (I think) a novelist who envisioned that in the future we'd store our entire computing system online and just switch between devices, always having access to our environment and files. Whether you're on a smart phone, your home computer, or at a terminal in the library, etc.

I don't believe dropbox is going to do that, but it is an interesting idea.

<comment><USER25> Isn't that what a web application is? Or I suppose taken to even more of an extreme what OnLive is?

<comment><USER24> No. Everything is synced (apps, settings) and there is still native-run code.

</comment></comment></comment></comment><comment><AUTHOR> I don't really see Dropbox becoming anywhere near as big as Apple or Google. Already a $4B valuation seems like an exaggeration to me.

</comment><comment><USER26> He does realize he essentially already won the startup lottery at a relatively young age, right? Good luck...

<comment><USER14> Exactly. "I refused to sell to you" != "I am positioned to eat you or become you."

</comment></comment><comment><USER27> > "I'm a Windows guy anyway," Houston said with a smile.

Really? Drew runs Windows?

<comment><USER28> Guess he's building the next Google which is the next Microsoft anyway.

</comment></comment><comment><USER29> Yeah, me too.</comment>


Open Offices Are a Capitalist Dead End - <AUTHOR> https://www.nytimes.com/2019/09/25/opinion/wework-adam-neumann.html <comment><USER2> I'm pretty sick of having had all the best intentions over these past ten years yet walking into a bunch of shitshow situations centered around bullshit agile antipatterns

Is anyone else sick of living hand to mouth in the land of plenty?

<comment><USER3> I think that's why we're seeing increasing popularity of Stoicism and blogs like Mr. Money Mustache. Do we really need all this junk? How is it, that nothing is left over from such huge amounts of prosperity that is just falling in our laps. Why do we have to keep buying more and more junk?

[https://www.mrmoneymustache.com/](https://www.mrmoneymustache.com/)

</comment></comment><comment><USER4> Nothing new here, but he does pull together lots of references to the claimed benefits and failed goals of open office spaces.</comment>


Hypertext-driven URLs - <AUTHOR> http://blog.ianbicking.org/2008/10/24/hypertext-driven-urls/ <comment><USER2> from the post:

"You start with a container, in our example /articles/. Do GET /articles/ to get a JSON document listing the URLs of all the articles. These URLs are relative to the container URL. You'll get a response like ['./1′, './2′, './3′] (actually ['1′, '2′, '3′] would be fine too). Do GET {article-url} to get the article representation."

The original post that started this interesting conversation did mention that summary data could be included along with the individual item URLs. If that summary data is complete to a point where action can be taken without further queries, then I'm totally on-board.

If not, then imagine the impact on your service if every data aggregation api query performed by your database resulted in dozens of follow-on queries as people traverse result lists and ask to get each item individually.</comment>


Email clients needs to evolved, what do you think? - <AUTHOR>

Hi, I'm a freelance developer and I have a few clients who email me sometimes dozens of times a day. So each day I wake up and have to parse through my emails to find which are the most importants, which contains PSDs files or mockups that I'll need to check and send feedback, etc.
All of this is very frustrating with only a little panel to see my email list. This whole "view" is flawed IMO.
I believe email clients should have something more of a "file browser" view with medium/large icons (enough to content from/title/date/etc) and easy way to put emails to different folders. So you can have a peek at the whole inbox at once and quickly eliminate non important emails.
Also I think email clients are in great need of a very good filter system with easy access. Gmail filters are amazing but I'm having a lot of trouble using Gmail on a daily basis I just don't know why. I think filters should be more easily reachable. So I'd make a "Contains pictures" filter, a "Contains text document" filter and a "VIP" filter for very specific person that I know sends me email only on a very important basis.
All in all, I don't have a clue about how it should look. Every last attempts at email clients I saw were in my opinion disastrous. There's still a few projects ongoing but I still doubt any of these will change this fundamental problem.
It's not about the protocol, emails are fine I don't want another Google Wave I just need a better way to manage these messages. Sparrow is nice, I use it daily even if it's not in development anymore but it's not enough powerful, it has a lot of wasted potential (since development stopped).
One last thing: I tried several other email clients with power features but all of them have crippled UIs and almost no development updates anymore.
So let's discuss, what do you think? How do you manage these tons of emails? What do you use? Any suggestion for me about how I handle them and what I should use?
Thanks and have a nice day! <comment><USER2> Email clients are stuck in the 90s. The way they look and organized hasn't changed in 20 years. You need to throw out all you think an email client should be and make your own. That is my sincerest suggestion. If you do not believe me go look for yourself. Outlook,Yahoo Mail,Gmail,etc all look the same as the did 20 years ago. I use Thunderbird but I hate how it looks and works. Which is why I asked one of the people at Mozilla if I could contribute. No response yet though.

<comment><AUTHOR> Amen. I 100% agree with you on all points. I'm not against emails, but against the software we used to manage them.

If it wasn't for so much trouble and different case scenarios I would definitively work on an Email client. I'm sure we're not the only one who are looking for something new and better.

Thanks for replying.</comment></comment>


Ask HN: Will Web 3.0 be a reality? - <AUTHOR> Thoughts on whether Web 3.0 will become a reality? Or will it remain restricted to communities who truly care about these things?
Why or why not?
Web 3.0 - Decentalization of services, Etherium, IPFS, Status.im. <comment><USER2> It'll happen, when someone finds the right way to market it to the masses. That's always been the challenge for decentralised services and cryptocurrency, they're neat technology ideas with reasons for their hardcore fans to use them, but they lack obvious use cases for the general public, or at least said use cases haven't been communicated properly.

When someone figures out how to sell the general public on these ideas though (and the walled gardens end up stuck against an idea they can't replicate due to their structure), then these things will become huge.

</comment><comment><USER3> Yes, it will become a reality. The walled gardens will lose. Programmable economic incentives (ETH, etc) are an incredibly powerful concept we're just beginning to explore the implications of. Decentralized currency and web infrastructure is a must for freedom of speech and liberty, in my opinion. I think it's too powerful a concept to keep contained. I think even China's great firewall will crack under the coming progress.

<comment><USER4> While I do agree with you in spirit, I think it will just leave society more polarized by people self segregating into groups they believe and trust. Kind of like the divide and conquer thing. Hopefully you are right. I just have a lack of confidence that the superpowers (I.e. countries and mega corporations) would let that happen.

</comment></comment><comment><USER5> I hope not, it will probably be all about blockchain this and that.

[https://i.giphy.com/media/qmfpjpAT2fJRK/giphy.mp4](https://i.giphy.com/media/qmfpjpAT2fJRK/giphy.mp4)

</comment><comment><USER6> Web Assembly and the death of Javascript except as a compilation target

<comment><USER7> "death of Javascript except as a compilation target"

It has kind of already happened. Except Javascript is the compilation source as well (ES6->ES5) - but that'll change hopefully.

Once we get WebAssembly + Electron then we have a true build once run anywhere dream, like Java could never have imagined.

</comment></comment><comment><USER8> It will be a virtual reality.

<comment><USER9> Read, ready player one, this is where we are heading.

You think people are glued to their phones now.

Wait till they can wake up and put on their VR gear to go to work, school, concerts, visit other countries, lands, planets.

<comment><USER10> I don't know of any vr/ar system that can be worn comfortably for hours like couch potato gaming can occupy a body.</comment></comment></comment>


A short history of tap - <AUTHOR> https://www.spectator.co.uk/2018/05/from-buck-dancing-to-happy-feet-a-short-history-of-tap/ <comment><USER2> I was wholeheartedly expecting an article on the history of the Test Anything Protocol (TAP[1]).

Mildly interesting all the same.

If you are looking for a history of the protocol, it's also mildly interesting.[2]

[1]: [https://testanything.org/](https://testanything.org/) [2]: [https://testanything.org/history.html](https://testanything.org/history.html)

</comment><comment><USER3> The difference between a viewer and an aficionado: I only called it "tap dance", and didn't realize that the real purveyors called it just "tap".</comment>


Why toddlers love garbage trucks - <AUTHOR> http://www.cognitionandculture.net/Nicolas-Blog/the-evolutionary-and-cognitive-basis-of-the-cultural-success-of-garbage-trucks-among-western-toddlers.html <comment><USER2> The 10th most popular book at the Seattle Public Library is "I Stink!" by Jim and Kate Mcmullan. It's about garbage trucks in NYC and targets children ages 4-8.</comment>


Sadly, user interfaces haven't radically changed since 1960s - <AUTHOR> https://archive.org/details/ucberkeley_webcast_dC4YGxzoAXk <comment><USER2> Why is that sad? Go with what works.

The QWERTY keyboard has been around for 150 years. Whatever its failings, there's no denying that it works pretty well so there's no big problem sticking with it:

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

<comment><AUTHOR> I am wondering if it's really possible they got it all right the first time around.. It's fascinating there was no major breakthrough in 60 years.

Your analogy is fair, but you can counter with "why invent bike, if horse works pretty well, so just stick with it". I am missing some "bike moment" in the history of UI.</comment></comment>


Senator introduces a bill to legalize marijuana and it's called S.420 - <AUTHOR> https://www.theverge.com/2019/2/8/18217226/s-420-marijuana-bill-senate-legalization-weed <comment><USER2> It's fake news to make any specific claims about a bill that is a placeholder with _no actual contents yet_ (as of February 10).

[https://www.congress.gov/bill/116th-congress/senate- bill/420...](https://www.congress.gov/bill/116th-congress/senate- bill/420/text?q=%7B"search"%3A%5B"420"%5D%7D&r=7&s=1)

In any case, removing cannabis from the Federal revenue code would _not_ make cannabis "legal nationwide"; state laws against cannabis, where applicable, remain in effect.

<comment><AUTHOR> I think referring to everything as "fake news" is silly, quite frankly. Here's a press release from the U.S. Senate's Committee on Finance announcing the same: [https://www.finance.senate.gov/ranking-members-news/wyden- in...](https://www.finance.senate.gov/ranking-members-news/wyden- introduces-s-420-to-legalize-cannabis)

Is that fake news, too?

</comment></comment><comment><USER3> Talk is cheap, most bills don't become law.

</comment><comment><USER4> I believe I proposed the same thing when I was 13.

<comment><USER5> Don't be flippant. Marijuana criminalization and the war on drugs causes a vast amount of harm to the entire country, including millions of lives ruined or cut short. Just recently a completely innocent couple were gunned down in their own home by the police executing a no knock raid based on completely bogus (or at best horribly mistaken) evidence.

<comment><USER4> > Don't be flippant.

Naming the bill S.420 is unserious.

> Marijuana criminalization and the war on drugs causes a vast amount of harm > to the entire country, including millions of lives ruined or cut short.

Which drugs --prescription and otherwise-- do you think should be freely available and unregulated?

> Just recently a completely innocent couple were gunned down in their own > home by the police executing a no knock raid based on completely bogus (or > at best horribly mistaken) evidence.

Bad policing doesn't justify bad policy. Could you please cite the specific case you're referencing?</comment></comment></comment>


Apple blocking ads that follow users around web is 'sabotage', says industry - <AUTHOR> https://www.theguardian.com/technology/2017/sep/18/apple-stopping-ads-follow-you-around-internet-sabotage-advertising-industry-ios-11-and-macos-high-sierra-safari-internet <comment><USER2> I don't mind ads generally, people have to get paid and products have to get promoted (not really, but it's how the world turns). Tracking is something that I can happily say goodbye to and feel better about using the web knowing it is gone. If only this would come to desktop and not just mobile.

Browsers should make it much easier to manage cookies and privacy than they currently do. Even just getting the average user, including lazy old me, to go into settings and look through a long list of cryptically named gibberish in order to remove everything to do with facebook every time my SO has used the family PC is a chore. So much so in fact that I keep a PC from which my SO is banned. It's my Linux island.

<comment><USER3> It's not just mobile, Apple is actually blocking tracking in the desktop version of Safari.

</comment></comment><comment><USER4> All these complaints from the ad industry feel like an endorsement for Safari

<comment><USER5> One would think they would know better, right?

<comment><USER6> Warped reality. They actually think ads are "helping" people, so the idea that no one wants ads doesn't cross their minds.

</comment></comment></comment><comment><USER7> As much as I dislike Apple, this particular thing earns them my respect.

</comment><comment><USER8> Discussion on AdWeek article of the same topic 5 days ago (159 comments):

[https://news.ycombinator.com/item?id=15250463](https://news.ycombinator.com/item?id=15250463)</comment>


From non-technical to hired developer in 5 months - <AUTHOR> https://medium.com/@oslokommuneper/from-non-technical-to-hired-in-5-months-d010f601b1bc#.vmdu61z9p <comment><USER2> "Coding had actually been my hobby the last couple of years..."

And that's almost certainly why it's worked out well. Someone who is interested in coding enough to actually learn it in their spare time, even if it's only enough to understand the concepts, is immediately ahead of someone who joins a bootcamp because there are "$$$ Companies looking for developers now! $$$" adverts around. To be a developer you have to have a desire to write software; otherwise you're very likely to get bored and give up because, frankly, quite a lot of software development is dull. That's why developers like to automate as many things as possible - to get move the boring stuff out of the way so we can do more of the fun things.

I'd rather hire someone fresh out of a course who writes code in their spare time before I'd hire someone experienced who was only interested in the pay check at the end of the month. Being interested in making things counts for _so much_ in development.

<comment><USER3> That's not what the statistics say.

The top coding bootcamps like Hack Reactor have 99% placement rates for their graduates within 6 months with average salary of 100k.

And if you don't get a job, hack reactor charges you NOTHING. That is how confident they are in their students.

<comment><USER4> Hahaha - average salary of 100k? Um, evidence please?

<comment><USER5> Actually, 105k but it's not that hard to believe in the bay area.

[http://www.hackreactor.com/](http://www.hackreactor.com/)

<comment><USER4> Even if Hack Reactor is an exception to the rule paying 105k for someone with 3 months experience is genuine insanity.

Looks as though they keep a pretty high bar for their students and that will lead to an overall more talented grad than your everyday bootcamp but its still crazy.

For that price you could hire 3 excellent remote workers.

I've looked at the alumni they have on their site - most seem to be hired by startups (ie. companies that likely have more money than sense). Coupled with the knowledge that its BA then maybe we're a little closer to an explanation.

Still utter insanity.

<comment><USER6> I have ~4 years of experience and I make 60k, and feel like I'm worth closer to 35-40.

Wonder where this industry will be when the bubble pops.

</comment></comment></comment></comment></comment></comment><comment><USER7> Sure, as talent and willingness to learn is enough to hire someone. It will take about a year until you write "ok" code though.

<comment><USER8> You are very optimistic or very fast-learner. I remember classmates during my master's writing shitty code even after 5 years of CS studies (and I'm not the best ninja-coder there is).

<comment><USER9> I've noticed better learning in industry vs class. My guess is because of a smaller set of things to learn (best practices of employer) and 8-10 hours a day of repetition

<comment><AUTHOR> Yeah, I'm learning just as much as a hired front end developer as I did at my bootcamp. More narrow focus, which gets you deeper into the subjects.

</comment></comment></comment></comment><comment><USER10> I'm reminded of when I passed my driving test. I didn't really learn to become a driver for a good few years after that (arguably I'm not a good driver even now).

</comment><comment><USER11> Congrats on your accomplishments; ignore the haters on here.

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER12> The wonderful world of IT.

</comment><comment><USER6> Gratulerer, dude.

<comment><AUTHOR> Takk!</comment></comment>


The Pricing Trilogy - <AUTHOR> http://sachagreif.com/the-pricing-trilogy/ <comment><USER2> The idea that charging high prices is somehow "unethical" is completely ridiculous. If you don't like the product, don't buy it. Value based pricing rules the world, guys. Nothing, repeat, nothing, you buy in daily life is priced completely on its material costs. Giving an Ebook author flak about it is just silly.

<comment><USER3> Agreed, and this book is "only" $29!! Buyers should just consider what kind of economic benefit the book will bring them, and make a decision to buy or pass.

By the way, the most expensive ebook I've seen was a $1999 ebook by one of the best high stakes online poker players in the world. Some people complained about the price, but it sold like hotcakes. (and this was back in 2009 iirc!)

<comment><USER4> If it was the book by Tri that's selling for about 60$ now and he has basically been outed as someone who vastly oversold his own skills.

But yeah there are some examples of guys I'd consider more reputable selling audio/e-books for 500$-2k (I have payed these amounts and didn't regret it). I think that's easier to pull off in poker where the link between information and the value of said information is pretty direct. Additionally those books sold at a time where many players had a base philosophy of "poker money is not real money" because after all it's just stuff to keep track of the score. Paying directly from your poker account probably doesn't sting as much as paying from the same allotment of money that you have set aside to pay other bills (speculation on my part)

The "poker coaching industry" is an interesting area of research in asymetric information though.

</comment></comment></comment><comment><USER5> As I posted in the other thread, the key difference between the old ebook sales page and the new one (for both Sacha and Nathan) is the fact they no longer focused on selling an ebook. They are basically selling a "course" with videos, resources, etc in addition to the book.

This combined package and the new sales pitch basically results in a new product. One that provides a much better value-justification to the user for the high price.

This is about product repositioning as much as it is about changing pricing.

<http://en.wikipedia.org/wiki/Positioning_(marketing)>

</comment><comment><USER6> Someone writing about plugging products while plugging their product referencing someone writing about plugging products while plugging their product.

We have come full circle.

</comment><comment><USER7> I bought Sacha's new book, and it's magnificent! Based on how I value my time, I spent more money reading the first chapter or two, and given that I'm going to be starting a Meteor project soon, the quick ramp-up I got from his book is easily worth thousands of dollars. Not to mention the opportunity cost benefit of using Meteor vs something slower to develop with.

$39 is expensive if your time is cheap and your results aren't worth much. It's also expensive if you expect a lousy book, but Discover Meteor is outstanding so far.

</comment><comment><USER8> I agree that there is nothing "unfair" about charging exorbitant sums. People fail to acknowledge that price is not a representation of innate value (such a thing does not exist), but is rather a manifestation of what the market is willing to tolerate. If everyone is willing to pay $100,000 for the book, it is worth $100,000. There is nothing that makes a product intrinsically "worth it."

That said, I think that "reasonable" prices are probably those that offer lucrative revenue while still permitting a large portion of prospective users to buy the book. This is where the $39 model ceases to be optimal. Although it might increase revenues, it will ultimately preclude many purchases, and limit the ability of the book to proliferate. This is because most people, despite their interest in the book, simply cannot afford such an inordinate expenditure. This is certainly what occurred with me. Despite the fact that I was quite excited about the book and am optimistic about Meteor as a framework, there is simply no way I can front the money for such an expensive product.

I suppose that if revenues are the only thing that one desires, this is probably the preferable model (and there is certainly nothing unethical about it), but more accessible pricing is better if you want to reach a large audience.

<comment><USER9> For many technologists, $39 is a very small amount of money relative to many things they could compare it to. (For example, the implicit cost of learning the new JavaScript hotness.) The audience of professional developers who can spend $39 is quite large. For example, if you're ever at a developer event, look for the folks with the hardware with the fruit on it; they're universally capable of paying $39. The fruit company does not appear to be hurting for market share.

<comment><USER10> Boy, that fruit reference really threw me off but now I am laughing my ass off. If you were not in to software, you could have definitely made a career in stand ups.

</comment></comment></comment><comment><USER11> Good grief. What's with all the fucking ebooks?

<comment><USER12> Sex is a popular subject, I guess.

<comment><USER11> Touche.

</comment></comment></comment><comment><USER13> I'm curious, are the persons featured in interviews paid a percentage of sales?

</comment><comment><USER14> Some of these ideas are dubious. Indeed — pricing higher sometimes leads to greater sales.</comment>


Apple won't force developers to let users opt out of tracking until next year - <AUTHOR> https://techcrunch.com/2020/09/03/apple-delay-ios-14-privacy-ad-tracking/ <comment><USER2> What a bummer! As an iOS user, I was eagerly looking forward to this feature, wanting to tell others about it and how the upgrade to iOS 14 would be worth it just to clearly expose apps that want to track users.

I already have ad tracking limited in my settings (Settings->Privacy->Limit Ad Tracking), but that was something I had to explicitly turn on, and there's no notice on which apps use the ID for advertising.

</comment><comment><USER3> That's a hard to parse title. How about:

"Apple won't require apps to let users opt out of tracking until next year"

Apple doesn't force what developers do, only what gets permitted into the app store.

</comment><comment><AUTHOR> most conversation seems to be here - [https://news.ycombinator.com/item?id=24366731](https://news.ycombinator.com/item?id=24366731)</comment>