Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Organize Your Closet Like a Computer Organizes Memory (wired.com)
106 points by danso on April 21, 2016 | hide | past | favorite | 60 comments


I followed this advice. Now I have two closets and I have laid them out identically.

They are a mile apart, so if I'm inside one and want to get something from the other, it takes forever.

There's no way to quickly discover if my wife has added clean clothes to the closet I'm not in. She only tells me at dinnertime.

My closet manufacturer sold me the pair of closets for just a little more than twice what a single one cost, but a four-closet setup was ten times the price and a three-closet variant was not available. They told me there was an eight-closet setup too, but nobody really knew how to use it effectively.

Each closet has a cubbyhole which is always open and super accessible. It is large enough for one single sock. I complained about this and was offered to replace all my socks with more expensive ones that take half the space but barely cover my ankles.

The next larger compartment is big enough for one whole outfit, but not in the wintertime. Sometimes at night if I have nothing to do I will fill it with the outfit I want to wear the next day. By the next morning there's a decent chance I'll have changed my mind, but that's OK, it only cost me a few calories.

There's a larger door I can open which has a few outfits in it. I use this pretty often, but the damper on the door is super-stiff and it takes quite a while to pry it open. And if one of my siblings also wants to use it, I have to wait. Ten years ago I lived by myself, but now the house is pretty crowded and we don't have space for more closets.

Finally there's a huge area in the back that I can walk into and get anything I want. The distance to get there is about as long as a football field. Once in a while something I stored there gets damaged, but there's just so much stuff that I probably won't notice. I have no idea how they fit this thing in my house; those closet guys are geniuses.


Don't you keep having to take everything out of one closet and then putting them back in, to prevent the coat hangers from breaking and dropping everything onto the floor?


Now that's a reasonably accurate analogy of computer caching systems. I sincerely doubt, however, whether this scale difference is actually optimal in real life. ;)


remember when clothes didn't had to be aligned to the nearest shutter and you needed to retrieve both half and stitch them together for having an usable one?


Disclaimer: I'm the founder.

Hi! We search for fashion trends, evaluate their relative merits, and identify sets of clothing that score highly across several parameters: tight fit, color coordination with the significant other's wardrobe, and maximum display of wealth. We understand that it is critical for everyone to display more wealth than anyone else. So important that no expense should be spared, and no clothing should escape our evaluation, no matter who it belongs to or how private it is. We then share this information with our clients, in order to help them make important decisions in the morning. Let me tell you how we do this.

We start by preparing a big space to work in. This is quite a task in itself; connections must be established with real estate agents, warehouses must be leased, and specialised sorting equipment must be prototyped and then assembled in factories. It is important that all of the warehouses are shaped identically and arranged in a regular grid, with short straight roads directly connecting each block to local hubs, and each bug directly connected with roads that we have exclusive access to. We really want a dedicated highway for our fleet of trucks, but that will have to wait until we can convince our investors of the need to start building our own infrastructure; we just don't have the means to build a highway ourselves, yet. But being fashionable when we ask for big favours has been shown to increase the odds of success.

Much of the clothing that we need to compare, we can purchase in bulk from distributors. Their suppliers might not be happy to know that we are getting early access to one of everything, before it arrives in stores, but they don't need to know about that. Getting this early peek at emerging trends is worth a great deal to us. However, that only shows us what will become available to wear in the coming season, not what people are actually interested in wearing. For that, we need to see what real people are wearing, right now.

Convincing people to let us borrow their clothes isn't easy, even if they weren't going to wear it while we are evaluating it in the first place. They tell us it's creepy, that they have a right to look unique, and that this makes them worry that some day, they will be judged on something they wore a long time ago. It's best for everyone concerned, if the regular people just aren't aware when we borrow their clothes. We have developed some really remarkable systems for making that happen.

We start by grabbing their attention with some well placed stories, crafted to appeal to to people who dress a certain way, or at least, who were dressing a certain way the last time we analysed their wardrobe. These stories, that are seen by many people at the same time, give them something to group together and talk about, at work, over dinner parties, and at the pub. We can get agents into these groups, who can help everyone make friends with each other, and then steer the conversation towards a plan for an awesome party next weekend.

For everyone who accepts party invites, we take down their contact info, and a little other info that we tell them we need in order chauffeur them home when they're wasted, and schedule a job to intercept their wardrobe. Many people do not do their own laundry these days. They used to, but as the laundry-as-a-service industry has grown, people have just gotten lazy and lost that skill. These laundry services operate on razor thin margins, and are always looking for any way to make extra money. Many of them have to offer their services for free, in order to capture clients in markets that are dominated by others. In some areas, competition has driven the price of laundry service all the way to $0, permanently.

These laundry services are only too happy to have us return laundry to their clients, especially if we are the only ones who are actually willing to pay them for anything. This is something that doesn't take them any effort to give to us. But it is important that their clients can't tell that it is us doing it; those clients just don't want to have anything to do with people who have occasionally been caught red handed with clothes they shouldn't have. And that one weekend when someone tricked our drivers into diverting all of the clothes to Romania, that was bad. People were furious. I can't believe there were no legal repercussions from that.

Anyway, once we have clothes streaming in to the warehouses from all over the continent, the really interesting work begins. Dirty clothes and things that aren't really clothes are filtered out on arrival (how does that even happen?) Dangerous things wrapped in clothes are scanned by x-ray, and then handed over to an bomb squad (some people just like to break stuff). Then, thousands of workers make many passes over racks of clothes, each one looking for a particular feature, tagging the clothes that pass their checks. A hierarchy of analysts then passes along each row of racks, collecting statistics about the tags, and leaving a log at the end of the row. More analysts run down the end of each row, summing stats, and finally produce a warehouse report. Finally, the top analyst goes around gathering and combining the stats from all warehouses, and delivers a report to our wardrobe scientists, a day later. At that point, we can return the clothes, pack up the equipment, and release the leases on the warehouses.

These wardrobe scientists are super clever people. They can spot a correlation between the average thickness of clothing decreasing over the spring and the falling price of oil in the Middle East. By looking at the shapes of graphs of relationships in the data, they can even determine that people wearing thinning clothing are actually causing the price of oil to decrease in the Middle East! This is an incredibly valuable insight. It enables us to play the stock markets in ways that people without access to these clothes can't comprehend, until we walk away with a pile of fresh unicorn socks.

This is why it is important to know everything about everyone's clothes, all the time. We demonstrate our knowledge to potential investors, by wearing the clothing of tomorrow, today.

If you have are passionate about laundry on a massive scale, or enjoy wearing the trendiest clothes to parties and shaping the fascinating discussions of random groups of people, come check us out! We offer free lunches, prepared by world class chefs, unlimited paid vacation, and best of all, we have a fair sock sharing program in a rapidly expanding venture.


Spam?


HN / big data parody. I guess if TL:DR then it might look real... Just to be clear, I don't have a startup, I won't steal your clothes, and I am not willing to share socks with you.

I'm working on automating part of an advertising operation, but I am a diehard adblock user. That's what motivated me to write.


Clearly parody, when you see lines like "Convincing people to let us borrow their clothes isn't easy"


Not clear if satire or actual founder of clothes rental company having a sense of humor.


By the way, that article is an advertisement for "Algorithms to Live By: The Computer Science of Human Decisions" [1] in case you're triggered by native advertising. That out of the way ...

As the article states, caching is useful when you have memory stores with different access speeds. This is (frequently, in my experience, caveat caveat etc.) not the case in reality, where you only have the one storage area that has a fixed, fairly low access speed. People are mostly bottlenecked by scanning rate, so it'd make more sense to use an indexing mechanism. Maybe b-trees for closets? B-trees, perhaps, if you store things in boxes?

[1]: http://www.amazon.com/dp/1627790365/


By the way, that article is an advertisement...

Ironically, Wired wouldn't let me read it, because I've got an ad blocker turned on.


Yeah, after a few seconds of consideration, I gave up on Wired, not my ad blocker.


On a whim I gave w3m (or w3m-el to be precise) a try on this page, and it worked - I found a new adblocker-blocker-blocker, and I'm quite happy I did got to read this gem of a summary at the end of the article:

>In short, the mathematics of self-organizing lists suggests >something radical: the big pile of papers on your desk, far >from being a guilt-inducing fester of chaos, is actually one >of the most well-designed and efficient structures >available. What might appear to others to be an unorganized >mess is, in fact, a self-organizing mess. Tossing things >back on the top of the pile is the very best you can do, shy >of knowing the future. You don’t need to organize that >unsorted pile of paper. > >You already have.


If they ever make a sequel to the movie The Big Hit, The "AdBlocker-Blocker-Blocker" will have to be used instead of the "Trace Buster Buster": https://www.youtube.com/watch?v=Iw3G80bplTg


Thank you for the piece. Really good. I mean I give up on Wired, not on content.


> Wired wouldn't let me read it, because I've got an ad blocker turned on.

Use uBlock Origin. It blocks the ads, and it blocks the adblock blockers.

I use it, and I read the article and didn't see any ads, or popups about how butthurt wired is that I'm using an adblocker.


Most people have several stores for clothes (wardrobe/closet, wash basket, washing machine, in a basket waiting to make it back to the wardrobe etc) and depending how organised you are, the clothes you need could be in any of those on a given morning.

And in the wardrobe itself, I don't have enough separate shelves to be able to organise my clothes both by type and by purpose (so I've got sports socks, walking socks and work socks all in the same drawer for example). It can sometimes take several minutes to locate all of the clothes I actually want for a given day.

On days that I need to be out of the house particularly early, I will "cache" my next day's clothes by getting all of them ready the night before and putting them by the end of the bed, so that I've got instant access to them.

Similarly, I've got a cache of stuff that I need on a daily basis - keys, my wallet with some money and a single credit card in etc - on a shelf near the door, whereas the rest of my keys and the rest of my cards are grouped together somewhere else in the house.

I think it's this kind of stuff that the article is talking about.


I do have a chairdrobe for two use items like sweaters and pants.


I'm going to do the thing where I quote sentences from your comment and respond to them individually, which IMO is normally pretty aggressive -- just wanted to say I'm doing that for organization's sake, not for any other reason.

"Most people have several stores for clothes..." I'd argue that most of those are acting like FILO queues anyways, since you typically don't need random access to clothes in a washing machine/from the to-be-washed pile.

"On days that I need to be out of the house particularly early, I will "cache" my next day's clothes..." you're still spending the same time overall ((sum over all day's clothes(time(access clothes)) + time(get dressed)) to get your next day's clothes, so preloading them just reduces the time spent when in the mornings when deadlines are tight. That's a totally valid technique, but it isn't caching as described in the article, which is described as a technique for mitigating the cost of frequently accessing high latency resources, since you (probably) only infrequently access clothes to wear. In that case, the time spent overall is (probably) dominated by the lookup times for single articles of clothing, so excellent organization is (probably) the best way to cut down on overall time. You'd need to profile to determine whether it could be of use, though.

"I've got a cache of stuff that I need on a daily basis..." that's actually quite valid! I had mentioned b-trees ]1] jokingly, but they can be analogized to what you're describing (feel free to skip the next section if you're already familiar with them). Idea in a nutshell: since hard drives are slow and return data in blocks (you can think of it as retrieving shelves of data at a time instead of individual items), it makes sense to pack as much relevant information as possible (spatial locality) [2] into each block (which b-trees do by having a large branching factor and including data inside of nodes). The relationship to placing items in discrete groups around the house is quite similar: physically moving (following a pointer) is quite slow, so once you're somewhere (a block), you want everything of import to be nearby (high locality, no need to follow more pointers). This is _still_ not caching, since you weren't going to sit down and perform some access intensive operations on your wallet and keys in the morning, but it does have some distant relationship to a CS data structure :)

Or, at least, that's my take on it.

edit: I'd just like to mention that I don't follow any of that advice and just use a roughly sorted laundry bin to keep most of my clothes in a single place, if not in any particular order.

[1]: https://en.wikipedia.org/wiki/B-tree

[2]: https://en.wikipedia.org/wiki/Locality_of_reference#Types_of...


> I'd argue that most of those are acting like FILO queues anyways, since you typically don't need random access to clothes in a washing machine/from the to-be-washed pile.

Except in emergencies. But I regularly need stuff from the "hanging on the clothes drier"/"in the basket ready to come upstairs"/"in a big pile on the end of the bed ready to be put in the wardrobe" ones.

> but it isn't caching as described in the article,

It's still caching. It's just a prefetch cache - using quiet time to prefetch my clothes for when they are needed very quickly.

> so excellent organization is (probably) the best way to cut down on overall time.

I'm not sure it is. Excellent organisation has quite a write-time overhead. In most cases, the amount of effort to organise everything perfectly is going to outweigh the fractional time saving I'd get on most mornings.

And in this case I'm also not looking to optimise overall time. I'm specifically looking to optimise speed to access it in the morning.

>This is _still_ not caching, since you weren't going to sit down and perform some access intensive operations on your wallet and keys in the morning,

I would be. If I had to go and get my single credit card from the filing cabinet where I keep the rest of them, then go and get my work pass from a "work" pile, my keys from the key box, my coat from the closet, my shoes from the shoe cupboard, my bus pass from my transport drawer, my daughter's school bag from her school-related pile etc, etc.

The author makes it pretty clear that he's talking about caching in exactly this way

"Caching is such an obvious thing because we do it all the time. I mean, the amount of information I get . . . certain things I have to keep track of right now, a bunch of things I have on my desk, and then other things are filed away, and then eventually filed away into the university archives system where it takes a whole day to get stuff out of it if I wanted. But we use that technique all the time to try to organize our lives."

At the end of the day, it's never going to be a cache in the true computer sense of the work - there's not a separate copy being made (except in the case of my keys, where I've got exactly that, but that's more for failover than for caching) - but the idea of grouping things by speed of access in a given scenario rather than by category is analogous enough to caching to be worth discussing.

If you want to call it "locality of reference", that's fine (and the link even talks about caching as one form of it). But one critical factor of an analogy is that it's a reasonably well understood term, and I strongly suspect that a lot more people would understand cache than locality of reference.


Essentially, I agree with everything you said -- the core of my complaints about this book excerpt is that it seemed to confuse the areas of responsibility for caches (and their structures) and efficient storage data structures.

I do think that analogies should be less, for want of a better term, leaky than those presented in the article: if they hadn't dragged CS topics into the discussion, I would've upvoted a reasonable productivity article and left it at that.


It's an excerpt, weird to call that native advertising. Is all of Wired a native ad for the rest of Wired?


I guess, when it's an excerpt from a different source, I feel like it's advertising? Like, if Wired were a journal I were paying for, having excerpts makes sense -- the editors found some piece they thought would work well in that issue, so they purchased a license for it and ran with it. But Wired? Given how much they complain about adblockers, their revenue from advertisements can't be that large to begin with, let alone large enough to share. My reasoning, right or wrong, was that the excerpt was placed primarily to drive sales of the book (and perhaps to get some clicks in the process).

In sum, it felt like I was being advertised to in an native format, so I called it native advertising.


Or perhaps splay trees of boxes ..


Keeping things in a single pile makes insertion O(1) but makes retrieval a linear O(n). Depending on your usage pattern this may or may not make sense.

Personally I sort my mail by category (junk mail, mail my wife might be interested in, mail I am interested in). This means there is a one time linear traversal of my mail by me but this allows constant time retrieval of a list of mail by my wife, which she appreciates.


Ok, my wife organizes my daily t-shirts as a deque: fresh comes into bottom, I take always from the top )

O(1) insertion O(1) retrieval.


Not O(n) because your eyesight is highly parallel pattern recognition, and you can move items in batch.


The bottleneck isn't the optical system, it's the mechanical swing arms that's the gating factor.


O(n) is stupidly efficient when it comes to looking across all my pants (5) or my shirts (8? 9?).

Any complex effort to even bring that down to O(log n) would probably take decades to pay off.


I think I must have just picked the wrong courses but I wish caching was covered more in the comp sci/engineering courses...not just the technical aspects of it, but how the implications of caching (and invalidation) are a great window into thinking about how to design for the real world, and the overall difficulties of information transfer between humans. Even though I never work on anything of such scale, I always like reading about caching architecture and implementation from shops like Facebook, just because it's easy to imagine how it connects to our information problems at the individual level...e.g. asking someone out on a date based on stale information about their relationship status.


Organize your closet like Java: everything goes in a container.


I don't need to store all my shirts! I just need enough room in my closet for an AbstractShirtFactoryBean!


I thought you were going to say everything goes on the heap.


No that's just when I'm organizing my laundry.


But at least it's easy for the garbage collector.


My personal style is a lot like Haskell: I barely understand it, but give me a few minutes and I'll probably come up with something passable.


> Organize Your Closet Like a Computer Organizes Memory

I do!!! See the massive fragmentation?

Too bad closet objects can't be chopped up into equal sized "page" objects, yet still be available as unbroken through a virtual mapping.

You can't move anything, by the way, because I have a reference to it that you don't know about.

> Now you have two problems.

And that's before regexes even came up as a topic.


I'm pretty sure regexes increase the problem space exponentially with a base of 2. See, you don't notice before because in the original quote you encounter "a problem" which is 2^1 == 2 problems. But since you brought up regexes and we already had two problems that's 2^2 == 4 problems.


I have my clothes all over the place. On the floor, on the wardrobe, on the banister, on my bed. Even washed clothes just ends up in piles on floor, because I am too lazy to put it into closet. (Why to put it there when I will just take it out tomorrow? Better keep it here.) Every morning I just look around until I see something that I like to wear today. I guess I follow the Random Access Memory organization..


[flagged]


best, reply, ever.


Yep, nothing is funnier than some mild sexism in the morning!

Messy house, just find a woman to clean it for you, that's her job after all.... right??


It's rather sexist of you to assume the wife would organize clothes rather than be a supervisor process.


the user's joke was more nerdy and a little sexist. that is all. same could be in the other extreme the other extreme for: sudo apt-get upgrade brakes-man paint-house. Yup, stereotypes exist. Chill and ignore on, no one is stomping out your right to be alive and do what you want.


So, I've added another [smaller] closet for faster access in front of my original closet. I've experienced several cache misses and I've decided just to wear what I'm wearing... for the rest of my life. Is this data-oriented? Am I doing it? :O

Are the poorly-dressed just disgruntled system analysts???


So I should take my closet, partition it into small 4k chunks, throw everything unordered in there and when I want retrieve something I look at the model of a perfect closet which I keep next to the real closet to find out in which of those 4k closet-chunks the stuff I'm looking for is? ;)


The book this article is excerpted from ("Algorithms to Live By: The Computer Science of Human Decisions") looks interesting; I'm thinking of buying it. Has anyone read it / does anyone have an opinion about it?


The article recommends you browse files on your computer by "last opened" time instead of the default alphabetical order. The recommendation is based on this paper:

https://www.cs.cmu.edu/~sleator/papers/amortized-efficiency....

The recommendation is obviously wrong because the paper is talking about something completely different. Selecting files from an alphabetical list is roughly O(log n) not O(n), because you know the alphabet and can binary search.


Actually in the real world browsing files by access or modified time is usually quicker because the number of items is small. There may be a set of 10-20 files that I've recent opened and the one I want will be in the top 3-5 very often. Doing a binary search invokes scrolling up and down a large list.


People are really really good as estimating and sorting access time and creation time, though, so we can binary search through that.

People who use paper journals report they are really could at finding items by remembering when the related activity happened.

Emacs org mode (or is it TODO.txt, I forget) also uses this principle.


That makes sense for a "Recent files" menu in applications, but if I'm using a general purpose file browser I'm probably looking for something I haven't used recently.


It's funny, we inadvertently implemented something along those lines a few months ago, it works pretty well so far.

For things that are no longer clean but not ready to go in the to-wash bin, we have a cache: separate very-small bins (capacity about 4 pairs of socks, x2) and mini racks. These are add-ins to the side of existing closets and quicker to access.


I follow the "fib heap" method of keeping my apartment clean: don't bother keeping your apartment clean during item insertion, and instead clean your apartment only when its time to retrieve an item. Constant time insertion cost and amortized logarithmic time retrieval :)


How about organizing closets using appropriate algoritgms from gener computer science, not by mapping it to a completely different hardware atchitecture and access pattern?

Submarines aren't fish, though both travel in water.


I tried to destroy my closet once but the closet-recovery authorities super-cooled it and alas all my clothes were exposed to my dismay...


You mean, in a 48-dimensional hypercube? Great idea!


Yes, a closet where the contents become pure random entropy if you ever lose the key. ;-)


Bufferbloat == San Francisco Bay Area housing market.

The offices and jobs create demand for housing, but housing hasn’t been constructed anywhere near as quickly. We don’t want to lose packets of engineers, so we pile them into the buffer. The amount of free space in the buffer has shrunk so much that the cost of latency is spiking exponentially.

We can try fancy schemes to guarantee QoS, but those work only for small numbers of applications on a limited scale. As any good network engineer can tell you, the only real solution is to build more.


The scrollbar for this site just disappears on Firefox!


huh, today I learned wired.com is a jerk about adblockers. guess they won't be getting my pageviews anymore.


I can only assume the feeling is mutual.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: