Interesting Codebases - <AUTHOR> https://medium.com/@markpapadakis/interesting-codebases-159fec5a8cc <comment><USER2> If you enjoy going through interesting code bases and learning some new tricks and patterns, you would probably enjoy "The Architecture of Open Source Applications" ([0]) - each chapter is a description about the history and architecture of a separate open source project. Whenever learning a new technology, I usually try to find a chapter in this series about it.

[0] - [http://aosabook.org/en/index.html](http://aosabook.org/en/index.html)

<comment><USER3> I've actually done undergraduate research with AOSA, and by far it was the most interesting to analyze the differences and commonalities in architectural approaches between FOSS projects with similar domains.

</comment></comment><comment><USER4> one of my biggest issue with looking through codebases is, where do i start?

if i'm not familiar at all with the language, or more specifically how the language architectures the program, i'm just going to be spending a lot of time looking at stuff that probably isn't the meat and bones of the library/app.

take for example, his first suggest codebase, seastar. i haven't done c++ in years (school, using turbo borland) so where do i look? "apps" maybe? nope just seems to be a folder of libraries. ah, probably the core folder. whoops there are 20+ files/headers. should i dig into this assuming that's where most of the code for the app/library is?

i suppose it would probably be nice if there's a site that explains how most programming languages layout their code. e.g) javascript generally is laid out similarly now, as is ruby/rails. so a site to explain the general layout structure would be kinda cool. it's kinda late at night so maybe i'm overthinking this.

<comment><USER5> First and foremost, clone and build it. If you cannot clone, build and get it running within an hour, it's generally crap and not worth your time[0].

Once you get it building and running, you can now start making simple changes in order to find your way around.

[0] Developers should pride themselves on how (relatively)simple this process is for their project(s).

<comment><USER6> That would disqualify every C++ codebase I've worked on.

</comment></comment></comment><comment><USER7> Redis is a code base I've been impressed with.

Short, readable functions and good comments make it quite easy to follow.

[1]: [https://github.com/antirez/redis](https://github.com/antirez/redis)

<comment><USER8> An important thing it has, is an actual source code layout in the readme, something that is missing from nearly all open sourced projects, making it a hassle to map out the project and start reading them...

<comment><USER9> After seeing your comment I decided to click through and check out the readme. That's a great amount of documentation. Wish the codebases I work with would be so detailed.

</comment></comment></comment><comment><USER10> I guess I'll be that guy and say that I highly doubt the author has taken more than a cursory glance at more than half his list. He certainly hasn't had the deep epiphanies he's implying from each of them.

Seriously, he expects people to believe he's evaluated the code of the Linux kernel, the Chrome browser, Postgres, LLVM, Tensorflow (just to name a few, less than half of his list), deeply enough to be able to make statements like "finest codebase in [x, y category] that I've seen", while also being the CTO of a company?

<comment><AUTHOR> I never implied that I studied the Linux kernel codebase insight out -- specifically, I was interested in the networking stack and the VFS layer, and from there I looked into the memory subsystem and certain drivers implementation. I did map the codebase to the extent that I can more less find my way around easily.

Same is true for Chrome. I was interested in the code for the various UI components, but I looked into other bits here and there.

I 've studied most of Postgres, LLVM and Tensorflow codebases - as in, I went through pretty much most if not all files looking for interesting bits (and finding plenty). I guess there's no way to "prove" anything to anyone, but I don't really care or want to do that either -- it's not about bragging rights, if that's what you implied; I just thought I 'd share a list of codebases I came across that I thought were interesting and worth of other people times.

As for my job, and my work, you may want to check out my Github profile ([https://github.com/markpapadakis](https://github.com/markpapadakis)) -- though there's only public stuff there. I guess I like to spend my free time learning instead of say, watching tv or waste time elsewhere:)

<comment><USER11> Can you also suggest how much time one can expect to spend on a particular codebase (which are listed) to get any meaningful take-aways?

I am interested in exploring codebases now that I have sufficient experience and feel confident (and not initimidated). This will be useful because then I can start from the smaller (simpler) ones and move on to the complex ones later.

Any recommended path, please do suggest.

<comment><AUTHOR> It depends on the size and what you are trying to do. For example, lately I 've spent maybe a week studying Lucene, and kept going back to it every other day, because I needed to understand pretty much everything about it, to get ideas for improving Trinity ( [https://github.com/phaistos- networks/Trinity](https://github.com/phaistos-networks/Trinity) ).

Some other codebases are so vast it takes a lot, lot longer to understand them enough to feel 'comfortable' navigating them (e.g the Unreal Engine codebase).

Most codebases however are quite small, and within 1 hour, or a few, you 'll be able to understand where to go to find what you need, which are the primary data structures and functions, etc.

</comment></comment></comment></comment><comment><USER12> Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp

[https://norvig.com/paip.html](https://norvig.com/paip.html)

Classic expert systems, but IMHO not outdated. I think they will make a comeback soon once we understand how to integrate probabilistic reasoning, logic and connectionist approaches.

</comment><comment><USER13> There was some discussion on the very same for an Ask HN[0]. Copying my comment from there I've found the google/leveldb[1] source code to be immensely educational, authored by Jeff Dean and Sanjay Ghemawat. The implementation of leveldb is similar in spirit to the representation of a single Bigtable tablet[2].

[0]: [https://news.ycombinator.com/item?id=13854431](https://news.ycombinator.com/item?id=13854431)

[1]: [https://github.com/google/leveldb](https://github.com/google/leveldb)

[2]: [http://research.google.com/archive/bigtable.html](http://research.google.com/archive/bigtable.html), section 5.3

</comment><comment><USER14> Great achievement to have read so much code. Honestly, I felt a little depressing for not having read this much code.

As an aside, how do you read codebases? Do you read every single line to understand what's going on? Or you get general idea about design/architecture? What are the proven strategies to read code bases?

</comment><comment><USER15> If you are interested in reading codebases but find some of the larger projects intimidating, I suggest checking out Timothy Davis' sparse matrix library CSparse: ([http://people.sc.fsu.edu/~jburkardt/c_src/csparse/csparse.ht...](http://people.sc.fsu.edu/~jburkardt/c_src/csparse/csparse.html)).

It is is used internally for sparse matrix representations in Python, R, and Matlab. The entire library fits into 2100 lines of concise yet well documented C code. It is now mostly installed bundled with SuiteSparse, but the link above has the 2006 codebase from the original stand alone library.

</comment><comment><USER16> Back in high school and college I spent a lot of time reading code. I was on the Amiga, and remember reading Matt Dillon's stuff (a C compiler with library, the DME editor, and Dnet), Tim Budd's smalltalk, David Betz' "advsys" (which inspired me to read a book on parsing and automata), and other stuff that I've since forgotten.

These days, it's hard to find time between work and an absolute deluge of interesting stuff to study and play with.

</comment><comment><USER17> This is great! We need more of these sorts of posts. There is so much the community can learn from excellent code bases. Thx for posting!

<comment><USER18> Start with looking at the unit test, it will help you split the code bases to units and understand them one by one

</comment></comment><comment><USER19> Adding golang/go to the list. It's interesting to read how an actual language is implemented, also it's fairly well documented (most of the documentation is extracted from the codebase, so all the crucial bits have to be there).

There are a few parts of the codebase that were automatically transpiled from C, but the rest is usually very readable.

</comment><comment><USER20> I've always found thefuck to be a great Python code base which is nicely organized and easy enough to wrap your head around. Also an easy project to contribute to.

[https://github.com/nvbn/thefuck](https://github.com/nvbn/thefuck)

</comment><comment><USER21> The codebase I inherited and now maintain is "interesting" too, but more like this:

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

</comment><comment><USER22> I always look to requests in how python should be used:

[https://github.com/requests/requests](https://github.com/requests/requests)</comment>


Production Haskell [video] - <AUTHOR> https://www.youtube.com/watch?v=T2wi0ZUOHfM&app=desktop <comment><USER2> Good share of their Haskell workflow.</comment>


Foxconn deal may cost Wisconsin $230,700 per new worker - <AUTHOR> http://www.startribune.com/foxconn-deal-may-cost-wisconsin-230-700-per-new-worker/437045623/ <comment><USER2> These things are always just PR exercises. Someone always pays in the end.

The question that should be asked is: Why would Sharp want to build TVs (which are sold at between a very small profit to a loss _already_ while being built in China) in the US? And why would Foxconn want to spend $10bn doing this for them?

The entire thing is non-sense.</comment>


There is something between append only and reusing blocks - <AUTHOR> http://antirez.com/post/btree-reuse-blocks-with-delay.html <comment><AUTHOR> > But you are already near to the I/O limit, what happens once you start > writing a new file to rewrite the btree? The additional I/O can affect badly > the performance of the btree.

I wonder if there are any benchmark that compare append-only + compaction vs. updates in-place (with a free list or something). To me it is not obvious why the second should be less I/O-intensive (for example, in-place does random writes while append-only is sequential).

Also, if persistence is done by checkpointing every n seconds (as far as I understand this will be the default behaviour) part of the compaction can be done in memory before committing the batch of the last n seconds worth of operations. In append-only, this can save a lot of I/O if the operations are on a small set of keys.

I think that Bitcask (<http://downloads.basho.com/papers/bitcask-intro.pdf>) uses a similar approach, with append-only storage. I would be curious to see a performance comparison with Redis diskstore.

<comment><USER2> Many smart people have pondered long and hard over this exact problem for decades. Why not climb on their shoulders and adopt the WAL approach that's working so well for most RDBMS?

<comment><USER3> bq. Why not climb on their shoulders and adopt the WAL approach

The WAL approach solves a different problem: "how do we provide durable writes with minimal performance impact?"

WAL is not queryable, so the question of "how do we efficiently provide random, indexed access to data" is a separate one. (And the traditional answer of B-trees is working increasingly poorly in the face of a growing capacity:seek time gap.)

<comment><USER2> You are right, I realize I misjudged/simplified the problem somewhat.

My mind had spontaneously formed this idea of an in-memory overlay b-tree of committed (WAL) but not yet merged changes... But thinking it through further I have to admit that this would quickly lead to a complexity explosion (MVCC'ish).

I also notice my tone in that comment was more snarky than I meant to be, sorry for that. However I still believe that this is a wheel that's been reinvented often enough (and that is complex enough) that it'd be a good idea to focus on researching how the others have eventually solved it - to minimize the risk of repeating history.

</comment></comment></comment></comment><comment><USER4> I believe that the right perspective is to take the "view it as a gc" and leave the file system to do it's job!

I don't have the references on hand, but among possible memory management schemes, "stop and copy" garbage collection is asymptotically fastest, though it does potentially result in "pauses" in the mutator/executing program. Any other scheme has to worry about keeping track of unused data and all the bad news that comes with multiple things going on at the same time.

<comment><AUTHOR> You don't have to stop to copy from a log-structured file</comment></comment>


How to describe without loosing ownership of idea  - <AUTHOR>

I have an idea that I want to develop and build -but because it's not already out there in the form I plan to deliver - how can I share to get the support ($ and builders, etc).   It's a really good receipe - it brings many things together in one place.  My existing hurdles at the moment - funding and the right developers - which wouldn't likely be so difficult if I could at least describe it safely. <comment><USER2> _There is no secret ingredient. ~ Kung Fu Panda_

To be very honest, in my opinion you're laying too much emphasis on the idea. I don't mean to be harsh but there really is no secret sauce for solving people's problems. Further, you don't 'lose' ownership to an idea that easily because:

1\. Ideas are extremely personal entities. It is really hard to appreciate someone else's idea as your own. (Especially, if they are 'ground-breaking' as nobody would have seen it before)

2\. It is insanely hard to actually build something. So, it is extremely unlikely that anyone would just rip your idea off.

Now, in case the above does not help answer your questions, let us assume that you do have the 'secret sauce' to be the next Google (in whatever field you are). In order to safely look for people basically boils down to trust. You can begin with your friends and see if any of them is interested. Or you could try and secure an investment and just recruit.

And no. Patents/copyrights are a bad idea. You may want to read this: [http://www.ipwatchdog.com/2010/11/23/protecting-ideas-can- yo...](http://www.ipwatchdog.com/2010/11/23/protecting-ideas-can-you-patent- an-idea/id=13495/)

You may also consider reading this <http://paulgraham.com/start.html> for the value of ideas.

</comment><comment><USER3> Patent it.

<comment><AUTHOR> Thanks. You think this is better than just copyrighting?

<comment><USER4> Copyright protects someone from copying your media -- whether it be text from a book, a recorded song, etc.

A Patent is for a new way to make something like a business process, or a new thing itself like a new type of light bulb.

If you simply have an idea for a web site, you should just work on it yourself to get it as far as possible and then bring in other experts. Like another poster mentioned, ideas are relatively easy to come by. Executing on that idea to actually create something that people want to use is the hard part.</comment></comment></comment>


TurnKey Core Beta released - based on Ubuntu 10.04 LTS (Lucid Lynx) - <AUTHOR> http://www.turnkeylinux.org/blog/core-lucid-beta

<comment><USER2> I'm currently running vanilla Ubuntu 10.04 on my Linode, but this looks like a solid offering, bringing together a lot of services so that things work 'out of the box'.

Have any HNers used this? Is it good enough to switch?

<comment><USER3> For Linode, you can consider rapid deployment using StackScripts, <http://www.linode.com/stackscripts/>

</comment></comment><comment><USER4> How does one deploy on of their images on EC2 (without using their beta cloud offering) ?

<comment><AUTHOR> The TurnKey Amazon EC2 documentation is available here [1], and the full listing of the AMI's is here [2].

Out of curiosity, why don't you want to use the TurnKey Hub (I.e., beta cloud offering)?

[1] <http://www.turnkeylinux.org/docs/ec2>

[2] <http://www.turnkeylinux.org/docs/ec2/ami>

<comment><USER4> Because I don't want to add another website/API to the mix.

I've noticed now that they also seem to push towards a subscription model for the EC2 images... I don't really like that. TurnKey always looked like something odd to me each time I saw it mentioned on HN: it's open source-y, but for the one stuff I might give it a try (cloud image/AMI) they want to introduce some fees somehow.

This has kept me from trying them and sticking to the Alestic/Canonical base images.

BTW, just googled your name and found out you're one of the founders but I won't rephrase the lines above, the message remains.

I have one question regarding your open-source model: how exactly does one build one of your AMIs? Your FAQ mentions <http://code.turnkeylinux.org/> and <http://github.com/turnkeylinux> but how does everything go together ?

What is your equivalent of 'make lamp' or 'make drupal6'? (Just asking, didn't dig too much but also didn't see it very font-center).

<comment><AUTHOR> Just to be clear, TurnKey Linux _is_ an open source project. All custom packages are open source, and all changes made to other packages are published as well, according to the GPL. The ISO and VM builds are free to download and use, no strings attached what so ever.

The subscription you are referring to is currently free. 6 months ago we began soliciting feedback from the community regarding pricing [1]. You might want to take a look at the feedback we have received and the motivation behind adding a premium to the AMI images. We have yet to come to a decision though, so feedback is most definitely welcome.

In a nutshell, the idea is to fund development. When you use Amazon EC2, you are already charged on usage, so the idea is to add a reasonable mark-up on those fees so people who are using TurnKey give back a little bit into a pool which helps support the project and fund future development.

We believe this is a win-win for the community, because a premium would fund development of open source appliances rather than expensive and closed proprietary alternatives. To the casual user a few bucks here and there would hardly be noticed on their bill but multiply this thousands of times over and suddenly we have the resources to do much more for the project's users.

[1] <http://www.turnkeylinux.org/polls/amazon-ec2-fees>

<comment><USER4> I was just wondering how do I create an AMI from the sources, ISO or VM builds ? If this isn't possible then everything is open-source, but this part of your project is closed, probably because it also seems to be the preferred way to charge the users (at some point).

Adding an hourly fee in the future for your AMIs would make everything very expensive. 10% over the EC2 rate sounds cheap if you only test the 'appliance' for a few hours, but 2 large instances cost about $500 per month. 10% of that would be $50. This is a whole lot compared to the usual $0 Canonical or Alestic get for their images.</comment></comment></comment></comment></comment>


The Procrastinating Caveman: Human Evolution and Procrastination - <AUTHOR> http://calnewport.com/blog/2011/07/10/the-procrastinating-caveman-what-human-evolution-teaches-us-about-why-we-put-off-work-and-how-to-stop/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+StudyHacks+%28Study+Hacks%29&utm_content=Google+Feedfetcher <comment><USER2> I'm sorry, but I'm unconvinced. It's just too easy to use "human evolution" to explain all sort of behaviors. I think the problem is that you don't have to validate anything, you just tell a convincing story.

The nearest the author got to validating it was:

 _"[...] only a small minority of the fifty hyper-organized students I interviewed reported procrastination as a serious problem"_

I don't know how this study was carried down, but it seems as self selecting as it could possibly get.

The author went from "early humans' advantage was complex planning" to "procrastination is your brain silently rejecting your ideas" in little more than a handwave. Here's what I think was lacking:

a) Why does the idea selection characteristic had to be an unconscious process?

b) If it had evolved to save lives, how can we be sure it would still kick off when lives aren't at risk?

c) Why would it manifest itself as a lack of motivation instead of more efficient alternatives such as fear, or simply losing interest?

d) If the brain is rejecting the idea, how do people cling to them for so long? Are we consciously overriding our brain?

<comment><USER3> The arguments in this article are indeed poor, but just because someone uses poor arguments to support X doesn't imply that X is wrong. I found the main point raised in the article to be very interesting because it supports a view that I arrived to independently, by thinking about why I myself was procrastinating in college (I was a pre-med student and of course I had a heavy course load -- but I never deep down wanted to be a doctor -- my real love was math, technology, computers, and believe it or not philosophy).

a) The entire consciousness/unconscious separation is somewhat bogus (our "unconscious" is simply the part of our brain that evades introspection, but degree of introspection is hard to measure for obvious reasons). The main point to gather is that there _is_ a process of self-criticism that manifests itself as lack of motivation, at least as stated by the article.

b) Our lives are always at risk -- being outcompeted by others of our kind is equivalent to being trampled upon by a mammoth.

c) I don't see how lack of motivation to do X is a less efficient alternative to fear. Fear is rarely an efficient mechanism (except in very time- constrained situations) -- it forces us to focus all our energy on a single task, it prevents us from thinking broadly and seeing new opportunities, and finally it forces us to make decisions towards increase of security instead of increase of opportunity. And the "loss of interest" you mention is technically the same as lack of motivation.

d) It makes perfect sense that we are conflicted about complex decisions for a long time. If we made up our minds quickly instead, it would prevent us from gathering enough information to make the aforementioned complex decision correctly. Complex decisions are complex for a reason.

<comment><USER4> b) Unless it's subconscious, I disagree. I procrastinated my way through the high school and at this age I had zero fear for my life or competition with anybody. Things do change when one gets older, but at that point I didn't cared about being outcompeted by others (actually, right now, I don't really care that much either).

c) Sometimes forcing us to focus on a single task is beneficial. Multitasking is usually bad for productivity, at least from what I've seen so far both in my life and on discussions at HN.

<comment><USER3> b) Yes, i meant that there likely is an effect different from fear of loss of life, but an effect nonetheless. You can call it subconscious.

c) Unless you are very intelligent with enough life experience (not plenty -- just enough), and have a carefully thought-out plan, wholly focusing on a single task is rarely beneficial (and could have been detrimental in the prehistoric times to other important tasks such looking out for predators/danger and finding mates). If you have a great idea for a startup -- go focus on it -- but just to put it in a perspective, great ideas/plans are so rare and hard to come by (as demonstrated by 95% of the population not being entrepreneurs) that 95% of the time your brain is probably justified in critiquing your commitment to anything. At this stage in my life (I'm 28) I feel secure and confident in myself to wholly immerse myself into the tech business, but before that I went through a long period of low motivation which was most likely due to not feeling confident enough about any particular career decision.

</comment></comment></comment></comment><comment><USER5> I said this before in another post, but this article that I read in the New Yorker really hit home for me:

The philosopher Mark Kingwell puts it in existential terms: "Procrastination most often arises from a sense that there is too much to do, and hence no single aspect of the to-do worth doing. . . . Underneath this rather antic form of action-as-inaction is the much more unsettling question whether anything is worth doing at all."

In that sense, it might be useful to think about two kinds of procrastination: the kind that is genuinely akratic and _the kind that's telling you that what you're supposed to be doing has, deep down, no real point._

And when you are in school often you are given tasks which seem to have no discernible purpose or meaning other than perhaps to take you off your parent's hands while they go make a living.

From: [http://www.newyorker.com/arts/critics/books/2010/10/11/10101...](http://www.newyorker.com/arts/critics/books/2010/10/11/10101..).

<comment><USER6> > _the kind that's telling you that what you're supposed to be doing has, deep > down, no real point._

Kind of like when I watched the Atlantis space shuttle launch and then go back to working on the code for a social bookmarking service.

All joking aside, is he talking about an existential crisis, or something else? A common cause of existential crises is some kind of negative experience that prompts reflection and thinking as to why it happened, which sometimes leads to questioning the _meaning of it all_. The experience of which, if you went to school, you probably know pretty well. Most frequently after walking out of class after bombing a test.

Working link for the aforementioned article: [http://www.newyorker.com/arts/critics/books/2010/10/11/10101...](http://www.newyorker.com/arts/critics/books/2010/10/11/101011crbo_books_surowiecki?currentPage=all)

<comment><USER7> _... then go back to working on the code for a social bookmarking service_

SpaceX is proving that if you want to do more than make a social bookmarking service, you _can_ get involved in the future of space. Just sayin :)

If you can't get them to hire you, figure out what they need. Contract out for them. There's possibilities.

</comment></comment></comment><comment><USER8> If there's an evolutionary cause for procastination, I'll offer a much simpler one:

It's best to conserve your energy unless you _really_ want/need to do something.

The author's example of spearing a mammoth works perfectly: only bother if you're actually hungry, or if you think you'll be very hungry in the future.

<comment><USER9> Except that it doesn't: His point with the example lies in the difference between going straight at it and risking ones life verus figuring out a safer alternative.

If it was just about energy, both methods would be deemed just as valid, and they'd work for both sapiens and erectus.

Also we don't really need bridges and tv and space shuttles. I'm not saying his reasoning is flawless either, but this doesn't seem to be more convincing.

<comment><USER10> Except that cavemen can't preserve food for long periods of time. Cat's spend a lot of their time asleep because hunting is risky behavior and hunting at the wrong time can easily waste energy. Granted I think the amount of time early humans spent hunting is over estimated by most people, but even still if there is easy energy sources to scavenge going hunting is a bad idea.

</comment></comment></comment><comment><USER11> The best thing I've read on this topic is The Procrastination Equation by Piers Steel ([http://www.amazon.com/Procrastination-Equation-Putting- Thing...](http://www.amazon.com/Procrastination-Equation-Putting-Things- Getting/dp/0061703613/)).

He concludes that different people procrastinate for different reasons and that those reasons boil down to:

\- learned helplessness (you have a low expectation of success)

\- boredom (you don't value the task), and

\- poor impulse control.

He then gives specific advice for working out which applies to you and then for dealing with each of these, which is far more useful than either saying, "Just do it," or telling an impossible-to-apply just-so story about mammoths and frontal lobes.

<comment><USER12> Here's a quick summary of scientific research on procrastination by the same author: [http://commonsenseatheism.com/wp- content/uploads/2011/02/Ste...](http://commonsenseatheism.com/wp- content/uploads/2011/02/Steel-The-Nature-of-Procrastination.pdf). No specific advices for fighting it, but interesting nevertheless.

</comment></comment><comment><USER13> I think calling it evolutionary is a guess, however, I do see a link between procrastination and being uncertain how to proceed. In my case, I am very determined when I have a sound plan and tend to procrastinate when parts of my plan are questionable. Good read.

</comment><comment><USER6> Are you rejecting an option just because it's simply _bad_ , or also because there's a better option available? So in essence, you'd reject the idea of charging the mammoth, because you could throw the spear. Likewise, you'd reject the idea of sitting down in the library with a quadruple-tall mocha (and probably your study materials), because it doesn't seem viable. So, you procrastinate. But what's the better option, in this case?

The alternative route (procrastination) is also not a better option. Everyone that procrastinates (so that means everyone) knows when they're procrastinating, and have that 10% of their status quo thinking about the fact that they're procrastinating and shouldn't be procrastinating. I don't buy it—that means your brain thinks procrastination is better than just trying to do the work, because in the long run, we know procrastination is worse than just doing the work.

My argument only holds if you believe the brain is functionally logical, which... probably isn't true.

<comment><USER14> "Everyone that procrastinates (so that means everyone)"

When I find myself unable to work, I generally make a conscious choice to take a break so that I can be rejuvenated by my down time to the greatest extent possible. Does that count as not procrastinating?

"My argument only holds if you believe the brain is functionally logical, which... probably isn't true."

Yes, of course it isn't true. The best example of this is the fact that people sometimes give up (succumb to learned helplessness). If people were purely rational agents, having their plan fail would be an indicator that they need try something new. But in real life, they tend to do things like feel depressed and watch more TV.

</comment></comment><comment><USER15> This is not the 'evolutionary perspective' as you claim it is. This is just your perspective dressed in evolutionary terminology so that the reader will believe that if you accept human evolution, you MUST accept this conclusion. But the fact that you came up with a possible evolutionary past and thought of a constraint that could've pushed us to develop the adaptive behavior of procrastination doesn't in any way imply that this is actually the way things happened. Procrastination might've been a fitness-maximizing adaptation (or even just a spandrel [1]) for so many other equally convincing reasons.

It's really strange that while for molecular & morphological phenotypes we use rigorous methods to measure evolutionary relatedness so we can determine possible sequences of evolutionary adaptations that led to them, when it comes to behavioral phenotypes people think that conceivability arguments coupled with very inconclusive evidence are sufficient to demonstrate that some evolutionary story is true.

[1] <http://en.wikipedia.org/wiki/Spandrel_(biology)>

</comment><comment><USER16> Not to be a jerk, but if you're going to start offering opinions on evolution, at least get it right and not refer to the "Homo sapien" species.... it's the "Homo sapiens" species. Again, not trying to give you hard time, but at least for me, that stuck out like a sore thumb.

</comment><comment><USER17> Procrastination is the basis of one of only two optimizations that exist:

1\. Do it late (because you may not need to do it at all).

vs.

2\. Do it early (because you _know_ it'll need to get done, over and over, and you've got the data onhand right now).

</comment><comment><USER18> these are known as "just so" stories and have plagued eve-psych since its inception.

</comment><comment><USER19> You say procrastination, I say lazy evaluation.

<comment><USER4> There's something in that concept. I sometimes don't do things people request immediately, knowing that they most likely don't really need it. Then either they repeat the request (forcing the computation ;)) or (more often) realize it was superfluous.

</comment></comment><comment><USER20> <http://en.wikipedia.org/wiki/Adaptationism>

</comment><comment><USER21> Damn, I am procrastinating right now

</comment><comment><USER22> Doesn't seem like an evolutionary adaptation from his remarks. It seems more like a physiological balancing act. Could be a slow homeostatic process to prevent certain brain cells from burning out. And I will present my data when I m done customizing my terminal color theme.

</comment><comment><USER23> Very good article from a very good site. I WILL read the whole article later, of that you can be sure.</comment>


Ask HN: How did you implement GTD in your life? - <AUTHOR>

Since I implemented GTD, my life changed. GTD seems not to be in fashion anymore but I can't imagine myself going back, it really works. During some time I searched for a real-life and simple implementation. I couldn't find it, so scratching my own itch, I created one:
https://github.com/we-build-dreams/hamster-gtd
I don't know if there are GTD users here in HN but how did you implement GTD in your life? <comment><USER2> In fashion, out of fashion - it works. And that's the one thing important.

We (and by "we" I mean our company) implemented GTD some time ago and we searched for the perfect app to help us manage our tasks as a team. We tried some, but we wanted something more, so we made a mix of GTD with gamification mechanics - [http://itemzapp.com/](http://itemzapp.com/)

Now we get things done and at the same time we are rewarded for our daily work. And also have fun :)</comment>


The Magic CmdLine and how I got it back - <AUTHOR> http://users.softlab.ece.ntua.gr/~ttsiod/bashheimer.html <comment><USER3> GDB can almost be a dynamic computing environment:

      $ gdb ./txr
      GNU gdb [ ... ]
      [ ... ]
      Reading symbols from /home/kaz/txr/txr...done.
      (gdb) b eval
      Breakpoint 1 at 0x808f6b0: file eval.c, line 969.
      (gdb) r -p '(+ 2 2)'
      Starting program: /home/kaz/txr/txr -p '(+ 2 2)'

      Breakpoint 1, eval (form=0xb7fb919c, env=0xb7fb92ac, ctx_form=0xb7fb919c)
          at eval.c:969
      969     {
      (gdb) p d(form)
      (+ 2 2)
      $1 = void
      (gdb) p d(cons(form, form))
      ((+ 2 2) + 2 2)
      $2 = void
      (gdb) p d(cdr(form))
      (2 2)
      $3 = void
      (gdb) p d(cons(0x1, 0x1))
      (0 . 0)
      $4 = void
      (gdb) p cons(0x1, 0x0)
      $5 = (obj_t *) 0xb7fb921c
      (gdb) p cons(0x9, $5)
      $6 = (obj_t *) 0xb7fb920c
      (gdb) p cons(0x19, $6)
      $7 = (obj_t *) 0xb7fb91fc
      (gdb) p d($7)
      (6 2 0)

You can test functions that are not even called anywhere from the C code. The d function is such a function; it's only there for use out of GDB.

      (gdb) p (0)
      $10 = 0
      (gdb) p d(0)
      nil
      $11 = void
      (gdb) p t
      $12 = (val) 0xb7fe5eac
      (gdb) p d(t)
      t
      $13 = void
      (gdb) p typeof(t)
      $14 = (obj_t *) 0xb7fe5d3c
      (gdb) p d(typeof(t))
      sym
      $15 = void
      (gdb) p d(symbol_name(t))
      "t"
      $16 = void
      (gdb) p d(symbol_name(0))
      "nil"
      $17 = void

Take out the trash, and show it:

      (gdb) p gc()
      $18 = void
      (gdb) p d($7)
      #<garbage: 0xb7fb91fc>

<comment><USER4> And in combination with conditional breakpoints executing commands, you can have GDB "dance" any application to whatever tune you wish:

commands ... call d(cons(form)) call symbol_name(t) cont end

It really is a marvelous tool - unfortunately, people don't know anything except the basics (if that)

<comment><USER5> Is there anywhere I can learn specifically about the commands you mentioned?

<comment><AUTHOR> I've used them too - just "info gdb" then search (/) for "Breakpoint Command".

</comment></comment></comment></comment><comment><USER6> Just curious about one of the last steps:

      cat /proc/53165/exe > /tmp/oldBash

I would have reached for 'cp /proc/53165/exe /tmp/oldBash', instead of using cat. Is there an advantage to using cat here, or is it just the same?

<comment><AUTHOR> Indeed! No idea what went through my brain when I wrote that :-)

<comment><USER7> Could you just use `gdb --pid 53165 /proc/53165/exe`?

<comment><USER8> If that works, is there any reason why gdb shouldn't automatically use the /proc/PID/exe?

<comment><USER9> Probably because /proc is very Linux-specific, and gdb is not.

</comment></comment></comment></comment></comment><comment><USER10> Why not ctrl+c, then arrow up and enter? If the command can't be stopped even for a few milliseconds then there is something wrong with it.

<comment><AUTHOR> I didn't want to send any signal - because I could not remember what I had done, and was afraid for sideeffects (I did remember that the logic had to do with database actions).

I wanted to see the command without "messing" with the execution in any way - after all, it was running fine for 6 months, why interrupt it (and face potential effort in fixing messed up state) if I could see the command "from the outside"?

And that I did :-)

<comment><USER11> C-z is actually your friend here. I've never ever seen SIGSTOP affect anything negatively. I even SIGSTOP Mac OS X apps sometimes. They just beachball until you SIGCONT them, then they happily continue, oblivious.

If you're worried about timing out of the process being unresponsive, just C-z and then "bg" real quick. Then you can up arrow at your leisure and "fg" when you've copied the command away...

<comment><AUTHOR> Try doing the Ctrl-z/fg sequence in this: "while true ; do sleep 1 ; done". Under Linux at least, you'll see that after 'fg', the loop ends :-(

Apparently C-z followed by fg is not bulletproof...

<comment><USER12> Thats an interesting example.

zsh does the right thing, when you bg it back it recovers the loop as it was. Bash seems to forget about the loop and only recovers the "sleep 1", when it starts executing again it sleeps 1 and exits.

If you want to make sure it will work you should wrap it around another bash:

        bash -c 'while true ; do sleep 1 ; done'

should work fine.

<comment><USER11> Parens work too:

       (while true ; do sleep 1 ; done)

</comment></comment></comment></comment></comment></comment><comment><USER13> The tip about getting the binary from /proc is also helpful if you upgrade screen/tmux and the newer version doesn't allow you to reattach to it. With that you can use the old one to reattach, work your magic, and restart the session.

<comment><USER4> You just explained why I could not attach to an already existing screen last month - it all fits now...

</comment></comment><comment><USER14> When I read the problem description, I decided to try and solve it myself.

I used gcore to dump the running bash process, then ran strings on the core dump, then grepped for likely command line stuff. 'while' is reasonable choice for a loop. There aren't that many strings in the dump file in any case, most of the sizeable ones are function definitions and environment variables.

Relying on gdb makes getting to the right data much more precise, but my approach took about 20 seconds.

</comment><comment><USER15> I saw things being saved to /tmp, and kept expecting a turn for the worse from a sudden reboot...

Fantastic article though - I've learned a couple of things from it, thank you.

<comment><AUTHOR> My pleasure :-)

</comment></comment><comment><USER16> Great story... but I read through it hoping to see the fabled command in its entirety at the end! Any chance..? :)

<comment><AUTHOR> God, no :-)

Some people here are already rather mean in their comments - imagine what would happen if I revealed The Magic CmdLine (TM)...

No, that privilege is reserved for the Inner Circle :-)

But I'll give you a teaser... It involved a lot of ImageMagick and "pdfimages" and "zxing" and "tesseract" and "pdfjoin" invocations... and the uploaded files were PDFs with scanned barcoded pages.

<comment><USER16> Aw, there's nothing worse than a mystery! ;)

(I can imagine the gory details tbh - it sounds like there is every chance I have had a _very_ similar command for a pretty similar purpose running for a good long while now... except mine's in a VBScript..!)

<comment><AUTHOR> :-)

Across the road (on Reddit/programming), a commenter already described me pretty well:

"Everything about your (rather interesting) story... reaffirms everything I know about Linux sysadmins - if you encounter a problem, your go-to solution is to write a script ... Honestly, you guys would script a sandwich if you could :P"

The only thing wrong in that sentence, is that I am not a sysadmin (hence the knowledge of the Dark Arts - of GDB :-)

</comment></comment></comment></comment><comment><USER17> Now this is both interesting and well written post indeed.

</comment><comment><USER18> This was a fun read and great hack. Thanks for sharing.

<comment><AUTHOR> My pleasure! It was a lot of fun hunting all this down, I just had to share it :-)

<comment><USER19> It is indeed cool, but the single best lesson to come of it might be to start the work in a script in the first place. Still, cool beans. :)

</comment></comment></comment><comment><USER20> the best I've read since a long time!!

</comment><comment><USER21> Nice hack! I hope you learn to start save your notes/commands/snippets to a text file as you go.

<comment><AUTHOR> I do, indeed - and in Git repos, usually :-)

How that one got by me is a mystery - let's chalk it up to stress and pretend it never happened :-)

<comment><USER21> Hehe. And to contradict myself, if you HAD written it all down you wouldn't have the cool story :)

</comment></comment></comment><comment><USER22> Er, why not just use the `history` command (or hit the up arrow)?

<comment><AUTHOR> Good question. Well, when you have forgotten everything about a 10 lines long command line you wrote 6 months ago, you don't know what side effects a signal may cause... You don't have the heart to signal anything, except surrender. Luckily, I found a workaround :-)

<comment><USER23> While I'm unable to come with this on my own, the article was pretty easy to digest and understand.

It seems that the take-away lesson from the article is that you should save it in a bash script.

</comment></comment></comment><comment><USER24> screen doesn't have history?

<comment><USER25> It has a finite buffer, so I imagine 6 months worth of logs would have easily blown away the history of you running the command.

<comment><USER4> You can configure it though, to be much larger than its default settings. Still, 6 months... he'd probably have to hack it as he did, no matter what :-)

</comment></comment></comment><comment><USER26> Cool tricks, but reads like a how-to of things not to do when writing any type of code and deploying it.

A Jedi? Maybe at getting himself out of the quicksand he lays himself into ...

<comment><AUTHOR> Oh come on :-)

You're telling me that you've never - under tremendous pressure - <USER2> things that quickly "handle" something - and then forgotten about them till much later?

Jeez, tough crowd :-)

<comment><USER27> Those who do, blog. Those who don't, snark at those blog posts on HN.

</comment></comment></comment><comment><USER28> I appreciate the spirit and the knowledge that you wrote this blog post with BUT -

The extra few seconds to put this in a .sh file in the first place ... priceless. Even for the basic case of debugging it and getting it working.

I don't think in the 20-25 years I've been "doing" unix that I've ever done this (I doubt anyone that has worked with me considers me ocd fwiw but this is beyond the pale).

Behaviors like this lead to "magic" work environments and are just pants on head places to work at/with.

I would be really mad the first time I found you doing this and I'd look for a different work situation for one of us the second time :)

Thanks for the cool post.

</comment><comment><USER29> you're a jedi because you discovered the /proc file system? Right, OK.

</comment><comment><USER30> My mom has Alzheimer's disease. I either sympathize with your situation, or if you were using it as an expression, I find the misuse a bit offensive. Particularly in this context for me, it brings up a painful memory of one of the first signs of Alzheimer's in my mom, when she called me because she had entirely forgotten her computer password.

As a sidenote to anyone reading this, I really appreciate that the Hacker News community occasionally posts and upvotes Alzheimer's articles. I read every one that I see.

Anyway, I beg that you might not use "Alzheimer's" as an expression for forgetfulness, just as you might avoid calling someone "ADD" when they multitask to a fault.

<comment><USER31> It's worth noting that the author appears to be in Greece. Assuming he's a non-native speaker, it doesn't really make sense to be "offended" by his misuse of the term.

Maybe a better way to put it would be "We don't typically use 'Alzheimer's' to refer to forgetfulness because it brings up negative emotions for some people."

<comment><USER32> Greek language is more about emotion than content. Hyperbole is used to emphasize meaning. I cannot forget he first time I went to Greece and my aunt kissed me, bit me, and said she was going to eat me. I was 6. I was petrified. It is common in Greece to express disappointment affectionately by saying ' I am going to kill you'. It is our cultural ignorance in the US that makes Americans easy targets for ridicule. If we project ourselves as a superpower to the world, then where indeed are our superpowers of understanding?</comment></comment></comment>


Tarsnap – Online backups for the truly paranoid - <AUTHOR> https://tarsnap.com

<comment><USER2> If you're looking for secure backup solutions, you should also consider SpiderOak and CypherTite.</comment>


Airlines Should Charge You $0.01 to Use the Bathroom - <AUTHOR> https://www.travelstatsman.com/01042019/airlines-should-charge-you-0-01-to-use-the-bathroom/ <comment><USER2> that doesnt really make sense, regardless of if the liquid inside your body, in a plastic bottle or emptied out into a toilet on the plane the weight is the same, youre not magically teleporting water from a random location into the aircraft.

with that in mind surely this should be something more like "airlines should give you a $0.01 discount to take a piss before you get on the flight"</comment>


Those with blood type A may be more vulnerable to Covid-19,according to a study - <AUTHOR> https://www.scmp.com/news/china/society/article/3075567/people-blood-type-may-be-more-vulnerable-coronavirus-china-study <comment><USER2> i was unable to find the paper but the article made no mention of the difference between the different A blood types.

ie Type A could be AA or AO

And should really mention differences between all blood types..

Type A (AA or AO) Type B (BB or BO) Type AB Type O (OO)

BB and BO

And OO

<comment><AUTHOR> [https://www.medrxiv.org/content/10.1101/2020.03.11.20031096v...](https://www.medrxiv.org/content/10.1101/2020.03.11.20031096v1.full.pdf)

<comment><AUTHOR> Caution : This paper has not been peer reviewed yet</comment></comment></comment>


The shady economics of 'buy one, get one free' deals - <AUTHOR> https://thehustle.co/are-buy-one-get-one-free-deals-worth-it/ <comment><USER2> What makes this really interesting is how living in an economy where prices are both set by the seller and non-negotiable causes consumers to equate asking price with value.

As a consequence, BOGO feels like a better deal than one item at 50% off MSRP. A 50% discount is a change in the asking price; the value of this item must have depreciated in some way for the seller to want to get rid of it (e.g., this garment is going out of season), and the price I'm paying is a fair deal that I'm happy to accept because I don't need to indulge in extravagances.

But in a BOGO deal, the asking price hasn't moved (or, as the article discusses, may actually be inflated); the fact that I paid full price means that it retains its original value, and the one they throw in is simply an enticement. In other words, I purchased an extravagance at full price, but it was a deal because I walked out with two. The amount paid is double the previous example's, but the perceived value is fourfold.

This isn't even getting into the actual value of perceived value (cf. the sticker price of wine vs. its perceived quality). Really interesting stuff.

<comment><USER3> > This isn't even getting into the actual value of perceived value (cf. the > sticker price of wine vs. its perceived quality). Really interesting stuff.

I fall foul of this trick quite a lot when food shopping. For example if I'm buying a box of cereals and I see one is priced at £1.80 and another is priced at £2.50 but is on sale from £3.50 I'll buy the more expensive one because I'm under the illusion that I'm getting a good saving and a better quality product. In actual fact though I've just spend quite a bit more for a marginally better, if not the same quality item.

<comment><USER4> Even without discount on the more expensive one, it can be used as a marketing trick to make you buy more expensive. For instance offer three versions of a product: $1 branded as cheap/bad, $2 branded as good, $5 branded as luxury. The last one exists mainly to anchor the value of the $2 as also cheap and to make you buy it. If one only had the choice between $1 and $2, most people would choose $1 option.

<comment><USER5> I agree that there's been a move to split "Store Brand X" into "Store Basics X", "Store Brand X" and "Store Finest X", and that the "basic" product is often perfectly good.

However, for broader product categories, there's also a tendency for the most and least expensive products to be outliers, with the cheapest being barely enough to justify the label and the dearest being aimed at rich suckers. Hence the heuristic of getting the 2nd cheapest (especially if it's a one-off consumable, where savings won't accumulate); or, if splashing out, getting the 2nd most expensive.

In my experience this definitely applies to things like wine and chocolate, where the scale is roughly:

         |
        Q|
        u|          x
        a|             x
        l|   x  x     x                                x
        i| xx  x
        t|
        y|
         |x
         +</comment></comment></comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>----
                Price

<comment><USER2> In some cases, businesses know consumers are following some heuristic like this, and counter-strategize accordingly (or so I've heard). According to this 2013 blog post[0],

> Restaurants realize that many people won't order the least expensive wine > (no one wants to look like a cheapskate!) so they often go for the second > cheapest. That's exactly why it's often the most marked-up bottle on the > list.

[0]: [https://web.archive.org/web/20131210062034/http://www.urbans...](https://web.archive.org/web/20131210062034/http://www.urbanspoon.com/blog/2013/12/10-things- restaurants-arent-telling/)

</comment></comment><comment><USER6> I feel that there is a wealth/background effect here that could be studied somewhat too. I think people who don't have to worry about money are less likely to pay any attention to discounts and deals.

Having come from a council estate, there is a certain mindset behind getting a deal for everything, making your little money go as far as possible, buy one get one free, or discounts on anything, or coupons to get into restaurants or discounted vacations, or companies that "get you deals" on all your electric, gas, TV, internet bills, 8 packs of cheap beer, etc. are all seen as victories and you are crazy for not taking advantage of them. There's an emphasis on getting more quantity for less money. That's easily exploited.

<comment><USER7> I don't have hard numbers to quote on this, but I'm very convinced that you end up paying more in the end.

From my own experience and pretty much every one I talk about this, people have a tendency to buy things they'll never need. (I constantly try not to do that, but it takes active thinking about it all the time.) No discount deal is cheaper than the one where you don't buy something you don't need.

Then there's underestimated costs that aren't immediately visible. If you buy more stuff of items that you use over a longer timeframe you'll have to store them. Which of course means you're paying rent for the space in your flat that's taken up by excess stuff.

<comment><USER8> A long running promotion in Tesco is 3 bottles of any brand beer for £5.25. I can't imagine anyone ever goes into a store with the intention of buying 3 bottles but if you just buy 2 you're misguided into thinking you'll lose out.

In reality, you're spending more and drinking more than you really want to.

<comment><USER9> It's not like bottled beer goes off, so unless you were planning to buy 2 bottles _and then never buy beer ever again_ , I don't see the problem.

<comment><USER10> It requires more self control not to drink the third one when it's sitting in your fridge than when it's sitting in the supermarket

<comment><USER11> Easy. Don't put it in the fridge until you know you're going to drink it later that day. Or quick-cool it by dunking in ice water for about a hour.

</comment></comment></comment></comment></comment></comment><comment><USER12> > A coffee mug that usually sells for $10 + $3 S&H will go for $13, with FREE > shipping.

I actually prefer this. It's much better than shops that activity try to hide shipping costs until the last moment. Also it makes comparing prices quicker.

<comment><USER13> On the other hand, if you want to buy two of them they cost $20 + $3 S&H or $26 with free shipping.

<comment><USER14> S&H is not always fixed-rate. In fact, "handling" two items should cost more. Shipping more weight should also cost more.

<comment><USER15> More than one shipping cost, yes, but it should be less than twice the shipping cost. Otherwise you could just order the items separately.

</comment></comment></comment></comment><comment><USER16> I recently went to a department store called Kohl's for the first time with my wife, who'd been shopping there for years. For those unfamiliar with this store, think something similar to a JC Penney's. What struck me was that above every item was some digital signage showing a discounted price or promotion (B1G1 Free, 25% off, etc.), along with the MSRP price. So basically, anything I looked at seemed like a great deal. They also have a rewards program whereby you get "Kohl's cash" whenever you reach some threshold for purchases (something like $5.00 Kohl's cash for every $100 spent), which effectively gives you a discount.

Of course, I soon realized that this was all simply a tactic to encourage people to continue to spend their money in the store, an effective one at that. The "sale" price was really no different than the standard price at any other retail store. It was just the perception of getting a good deal and triggering the dopamine receptors in the brain. I told my wife this, but her reaction was one of incredulity. Her thinking was she was saving money by shopping there. It's such a simple, yet brilliant tactic. Make people feel like they're getting a good deal, and they'll spend more money than they otherwise would.

</comment><comment><USER17> > Most online clothing brands offer 'free' shipping, with the catch that you > have to meet a minimum purchase amount (often $100) to qualify. Some 58% of > consumers will add additional items to their cart — often things they didn't > originally intend to purchase — just to "save" $5 to $10 on handling fees.

You will find people vigorously defending their behaviour when challenged on this. For example: Amazon Prime.

Amazon Prime is a product that costs you money and makes you spend more money on Amazon, and yet people will defend their spending saying that they are "saving" money.

The shipping is "free" but you have to spend £8 a month to qualify. If you don't spend at amazon during that month you are still down £8 (that's about £100 a year). If you spend something at amazon during the month you are still down the £8 in addition to the money spent at something.

Amazon Prime is a shady product designed to get you to spend money at Amazon.

As the article says often you will find the same product for lower in other places. You just need to do the sums. Another common defence we will see when people respond to this is "Oh I know it doesn't save me money, it's the convenience".

Retailers love making their customers comfortable and not thinking about these shady offers. Imagine having millions of customers so happy they will pay more money to you _and_ defending this very process.

Now... there's also the shady dark patterns the company uses to sign you up for it and make it it harder for you to cancel, but that's another thing!

<comment><USER18> I'm embarrassed to say Amazon got me with this trap a few times. I'm at the checkout with a $19 mouse but amazon reminds me that I could get free shipping if I get to the $25. So I go back and look for something I need for $6 bucks. Can't find anything I need for $6 bucks so out of frustration I somehow end up with a $70 worth of stuff I don't need just to save a couple of bucks on shipping.

<comment><USER19> What worked for me is to settle on a generic filler item. Personally I use toothpaste. Costs a decent amount, can be stored for a long time, doesn't need much space and I'll need it eventually. This way I don't go looking around randomly but just always fill the gap with that item.

</comment></comment></comment><comment><USER20> Buying the right BOGOF items saves money. For instance, after spending a lot of time trying different options, I now know exactly what face soap I want and I also know the price it sales for. From time to time, it'll be sold as a BOGOF, so providing the price makes sense (i.e. it is the normal price or less than 200% of the normal price) then it is a good buy (it has long shelf life, and will always be used).

I use up about 1.5 loaves of bread per week, so some weeks I buy one loaf, some weeks I buy 2. If it is a week where I only need one, but it is BOGOF I just buy 2 and put on in the freezer (and then take it out the following week). It is a similar story for cheese (although that doesn't need to be frozen, staying in the fridge, sealed, lasts for long enough).

One of the bigger savings we have got from a food perspective is to move towards making a 'menu' of food we are going to eat that week. Then buying the ingredients needed for each dish. This means little or no wastage (good on so many levels), being able to buy at a good price (rather than not getting something required then picking it up at somewhere convenient buy more expensive halfway through the week) and knowing the quantities up front makes it easier to either buy in bulk, or knowing when a deal that involves extra quantity will be suitable.

The above approach has also meant eating much healthier food, not finding ourselves in a position where we order take away because we don't have anything in. Ensuring we have not only meals planned, but healthy snacks (fruit etc) factored in too. It isn't a binary choice of by doing this we get everything 100% perfect, but it has been a hugely noticeable improvement.

I have read several times that some of these approaches and typically favoured by those who have more disposable income, which isn't ideal, as we really want those with less income to be getting all the good savings to try to ease/stop the wealth gap.

<comment><USER21> > I have read several times that some of these approaches and typically > favoured by those who have more disposable income, which isn't ideal, as we > really want those with less income to be getting all the good savings to try > to ease/stop the wealth gap.

The disposable nature of income is orthogonal to wealth. It is possible and common to be wealthy and still be broke. Consider the pro athletes earning 7-8 figure income that are still forced into bankruptcy. It is also unrealistic to think people who are weak at saving money need a nanny to follow them around and police their spending habits in an effort to close the wealth gap.

The most straight forward means to close the wealth gap is to tax capital gains as regular income and incentive spending from the wealthy with a punishing estate tax.

<comment><USER22> A punishing estate tax probably does more to incent trust formation, life insurance sales, minority ownership transfer structures, and other such mechanisms to bypass the estate tax than it does incremental spending.

It's largely unprepared idiots that pay any substantial amount of estate tax.

</comment></comment></comment><comment><USER23> I tend to make a conscious effort to ignore "deals". As far as I know, the one case in which a deal is actually advantageous as a consumer is when that deal encourages consumers to buy more of a certain product at the same time, and the merchant passing part of the scale and predictability savings on to the consumer. For example, if you buy tooth paste every now and then anyway, buying it at the same time as many others might make it cheaper to offer that tooth paste. Or for example having the option between essentially equivalent meal ingredients, more people cooking the same meal at the same time can allow for offering those ingredients more cheaply.

In most cases, however, it feels like they only benefit the merchant, by manipulating the consumer to buy things they don't need, or more expensive things.

I don't think the cost savings I'm missing out on by not making purchases in the first category outweigh the extra costs I avoid by also not making purchases in the second category.

That said, I'd love to hear of more ways of how deals can actually benefit both consumer and merchant.

<comment><USER24> there's a tactic called a loss leader where the merchant has a discount and sells a product at a loss to get people into the store (and hopefully buy other things that make them a profit). Loss leaders are pretty hard to spot unless you actually know the normal retail price

<comment><USER23> Right - I thought of mentioning it, but then decided it was part of the category "making me buy more expensive things". Presumably, I wouldn't have gone into that store otherwise, e.g. because it's more expensive. A similar trick is selling a certain product (e.g. an ingredient) at a loss, because it is often bought together with more expensive products (e.g. the rest of the ingredients of the typical meal).

Of course, you could still benefit from this if you were to visit that store anyway, or would have bought those products anyway. However, that's still the case in my "ignore deals" strategy: I don't actively _avoid_ deals, I just try not to use them as a reason to buy something.

</comment></comment></comment><comment><USER4> Up until 2009 in Norway, it was illegal to advertise products with unrelated additions ("tilgift"). Not strictly related, as here it's the same product. But this made it illegal to do promotions like "buy our car, get a free iPad", "buy this coke, get a chance to win prices". I think consumers wanted the law gone, as it looks like we missed out on deals other countries had. But it makes it harder to compare and tricks our brains.

<comment><USER25> So even on an electoral level, consumers get fooled by this and want access to shady deals. That's going to make it really hard to get fair consumer protection laws.

(Though maybe it's not surprising that people get fooled in politics.)

</comment></comment><comment><USER26> I quite enjoy mentally parsing these "offers" in logically equivalent ways. E.g., "buy one get one free" as "only sold in units of two" or even "each purchase of one requires compulsory purchase of a second".

As a child I remember considering the difference between "extra free" and "free" which I used to see on cereal boxes. Sometimes the box claimed "10% free!" but other sneakier boxes would claim "10% extra free!". The latter allows the marketer to quote the same nominal figure for a smaller absolute quantity.

<comment><USER27> > Sometimes the box claimed "10% free!" but other sneakier boxes would claim > "10% extra free!". The latter allows the marketer to quote the same nominal > figure for a smaller absolute quantity.

I'm not sure they're trying to be sneaky. The difference is too small for anyone to care about:

\- 10% free! (purchase price pays for 90% of the cereal)

\- 10% extra free! (purchase price pays for _91_ % of the cereal)

(Also, it's the first option that indicates a higher unit price, not the second.)

<comment><USER26> Actually I think we're in agreement here: I didn't make it clear but the nominal figure to which I was referring was the magnitude claimed free. By saying "extra free" they get to write down 10% instead of 9%.

I also agree the difference is small in this case but I'd argue:

      * Small wins are still wins.

      * The difference is not so small with bigger percentages.

Imagine I decide to tweak my margins for a time and sell 1.5Kg of cereal for the price I previously sold 1Kg. I could say "33% free" (relative to old price) or "50% extra free".

</comment></comment></comment><comment><USER28> We're staying in Nashville overnight on our way somewhere else and enjoyed walking around on a weekend evening.

We noticed that all of the stores selling cowboy boots (and there are multiple) have a "buy one get two pairs free" offer. All boots in the store we checked out seem to be priced at $300+. So, instead of simply offering discount boots at ~$100, they're leading you to think you're getting $300-quality boots and $600 of "free" value in the extra pairs. Framed like that, who could possibly refuse?

</comment><comment><USER29> I'm very interested in knowing what proportion of retail revenue comes from these types of dark patterns. Is it even possible to come up with a number? If so, I'd be willing to help fund the research.

The other day a friend and I were discussing the "take X% off your entire order" coupons. These seem to be very common, lately. She mentioned that she recent used one on a cart of $100 in items. She expected a $20 discount. But, to her surprise, she only received $2 off. Apparently all but one of her items were 'restricted' items.

It seems like many companies find it easier to trick people than to actually provide great service or products.

<comment><USER30> "Free shipping" is a funny one. For smaller businesses, it's basically subsidizing far away customers with nearby customer money.

I offer it not because I want to deceive people, but because we sell more that way. People like predictable upfront prices without having to tell anyone their location.

It is, of course, not "free". We just calculate the average shipping cost and pad the price.

<comment><USER31> How much does shipping cost actually vary? I always assumed that first//last mile handling of a package dominates over the fuel/depreciation cost share of driving the item farther.

<comment><USER32> For usps rates, see here: [https://docs.google.com/spreadsheets/d/1hyyaAYoi2P_CRWwrUJhB...](https://docs.google.com/spreadsheets/d/1hyyaAYoi2P_CRWwrUJhBPOaJC5YBJuwIZtg4OVQz1NE/edit#gid=1968755870)

I don't know how much ups/fedex costs.

</comment></comment></comment></comment><comment><USER33> Tangentailly related; i recently needed to buy a new shirt, where in the past, i had shopped at Express for some work shirts - but havent been in their store in several years - i went in as they were having a 40% off store wide.

Their shirts, which i used to have dozens of - are now priced at $69 per shirt... less 40% for this sale.

Ive never paid $69 for one of their shirts in the past. So the 40% off now reflects what i ised to have paid. So i feel they raised the prices of their shirts, then hold frequent 40% off sales to lure in traffic of people thinking they are getting a great sale - only to pay what the full retail of the shirt used to be.

So Express literally found a way to inflate sales of product through this tactic.

<comment><USER34> JCPenny very famously nearly went out of business because they do this all the time, but then tried to revert to just pricing things normally. People thought they weren't getting deals any more, so they stopped going there.

</comment></comment><comment><USER35> My local supermarket does this all the time to my great annoyance, I never thought about the mathematics of why they don't just discount the item. At least it's better than the kind of deals that abuses people's misundertandings of mathematics entirely, such as [https://www.telegraph.co.uk/finance/personalfinance/money- sa...](https://www.telegraph.co.uk/finance/personalfinance/money-saving- tips/10986643/Supermarket-fake-offers-in-pictures.html)

<comment><USER36> Here in the Southeast the grocery chain Publix is pretty much the BOGO chain, as in you buy stuff that is BOGO and take care otherwise. Their prices are standard fare for a chain grocery and the standard price of the item falls in line with other chains. Now for the most part any serious saver would BOGO and then hit up Wal Mart or Aldi to finish out their savings.

One interesting note is that in general you don't have to buy two items as part of a BOGO, you can buy one at half price. Now this is not true as some manufacturers, namely Coca Cola, require the purchase to be made as described. Meaning if its buy two get one you must take all three. They even get silly with Publix in that there will be buy two get two with Coke products that, you guessed it, you have to have four of the product to get it at the price of two.

</comment></comment><comment><USER37> My local pizza shop offers "Buy one get one free" and "Free delivery".

They also offer a discount if you only want one pizza, and a discount if you collect instead of having it delivered.

<comment><USER38> > _and "Free delivery"._

I'd argue this is legitimate, or at least everyone is footing the bill when you request delivery. But that's no different than everyone footing the bill for having tables and chairs in the shop.

<comment><USER39> A discount for getting it yourself is the same as charging for delivery, though.

And "free" delivery never is, at least in then US where tips are expected.

<comment><USER38> Rarely is there a discount for getting it yourself. usually the price is the same and either they charge for delivery or they don't.

<comment><USER39> The shop discussed in the original comment does it.

</comment></comment></comment></comment></comment><comment><USER40> I think the counter argument to this is non-perishable food and other groceries.

There is a certain brand of shelf stable non-dairy milk that my family use a lot of. The usual price is £1.50 a carton. Every few months there is a 3 for £3.00 offer. Now this is obviously a ploy to get you to buy more than you needed and also to appeal to new customers.

But I use these offers to stock up on weeks worth of the stuff. If has a shelf life of over a year so it's a no brainer. I hardly ever pay full price.

<comment><USER41> I'm curious to know what's happening with our supermarket ice cream discounts. Every Friday all ice cream is 50% off and as you'd expect a lot of people buy their ice cream on a Friday. The rest of the week it's full price. Does that mean they are taking a profit hit on Friday just to move inventory or is the ice cream marked up higher than their ideal selling price which would be the standard profit margin they expect on Fridays? Not sure...

<comment><USER42> They're using it as a loss leader: taking a cut in profit or even a loss to pull people into the store, where they're likely to buy more than enough to make up for it.

</comment></comment></comment><comment><USER43> I've been living in Thailand for a while now and the market is so unregulated and abused by these sorts of deals.

A big super market near my house runs 2for1 buns every day for the past year.

I've got desensitised to the point where I don't even see the "original price" anymore. The deal price is just the real and only price. The only real deals are the "almost expiring" price reductions super markets put out before throwing out old food.

I wonder if in the grand scale of things this abuse backfires or I'm just a rare case as a foreigner.

<comment><USER44> Are regulations supposed to stop that behavior?

There's plenty of grocery stores in NY that continuously run the same "special" on the same items. I've seen the same hot dogs on sale for the same price for a year.

<comment><USER38> Yes, there are laws about how long a sale can be, if a product is on sale for a significant amount of time the seller has to make that price the actual price and cannot advertise it as "on sale." Likely those stores run afoul of this law but are too small to be prosecuted by the DA/FTC.

</comment></comment></comment><comment><USER45> Fortunately some of this (bloating the price just before a sale to cover the cost, note: e.g. day before) is illegal where I live. Though it doesn't stop shops from trying. It does give the customer some extra power. If for instance the shop fails to sell all stock and dumps it afterwards you can try to claim the difference as this falls under deceptive practices.

The buy one get two variant is fine as long as there is actual profit to the customer and no shady 'you still pay the same but it looks different' offers.

<comment><USER46> Same in France. So when sales time arrives, you can see some items prices rising up a week before (which is, de facto, legal as long as you do it in advance)

<comment><USER47> The rules are slightly more complicated.

You are only allowed to discount items already in stock a month before the start date[0] That's why the back of the shop is fully loaded by boxes a month before the sales period starts.

The rules seem silly because it's an open secret, all companies jack up the price and stock up just before... but you'd be hard pressed to find actual proof:

"I ordered 50k items to the supplier just 30 days before, I meant to buy only 50, fat finger mistake, so we had to discount them".

"Yes, the reference price is based on the highest price we had on record among our 500 stores. Yes, I know it was more than twice the median price, fat finger mistake but hey, who does not make mistakes, 14€99 is too similar to 5€50..."

[0][https://www.service-public.fr/professionnels- entreprises/vos...](https://www.service-public.fr/professionnels- entreprises/vosdroits/F20566)

</comment></comment></comment><comment><USER48> I suspect a lot of the BOGO deal structure is to exploit the consumer who intentionally buys only what he can use.

Supermarkets here have gotten big on "buy one get (1, 2, or even 3) free" for large meat packages (racks of ribs, for example), but keeping the price tag high-- say $12 per pound. If you fully exploit the offer, you're effectively paying a bargain $3 per pound, but that requires a lot of fridge space to deal with four big packs of perishable meat. The consumer who says "I only need one or two" is being gouged for NOT wanting to throw rancid leftovers away.

A similar related gimmick are the "buy N, save $M deals." If you buy any ten of a pool of random items, they knock off $10 from the order, but if you only need 9, or 1, you're paying full price.

There's definitely been a swing from "everyday low prices" to "gimmicks and games." Everyday low price became "3-day sale" became "only with club card" became "only if you install our terrible app and explicitly select you want the promotion ADDED to your club card."

I think the ultimate goal is to get where they can advertise aggressive discounts, knowing they don't have to give them to anyone but the people most willing to jump through hoops to get them.

<comment><USER49> So price discrimination. I don't see any problem with it. People who are the most price sensitive will jump through hoops and be rewarded for it.

</comment></comment><comment><USER50> A related and greater rip-off is the discount cards that give you coupons after a purchase. Consumers become addicted to these "deals" that make it seem as if they're paying a very small amount for something. When in fact they paid up-front with the original overpriced purchase. It amounts to an interest-free loan to the retailer that is paid back to you with those coupons.

<comment><USER17> These cards are the original data tracking example as by using the cards you give the retailer all your data including demographics of your age and location etc. From what I recall retailers cannot use your credit card purchase history for this, you have to use opt in and use the "loyality" cards.

</comment></comment><comment><USER51> My mother always said "50% off what?" Obviously when the merchant sets the nominal "retail" price to whatever they want, they can set the discount to whatever they want too and maintain their profit margin. This is basic algebra solving for one variable given a desired "discount". It's amazing how effective it is though.

<comment><USER52> I'm only (vaguely) familiar with the rules in the UK, but they include tests to ensure the 'was' price was actually a genuine usual selling price. This includes tests that the 'full' price must have been in place for longer than the promotional period, that it must have been recent and that significant sales were made at that price. Buy one get one free also has to mean you get two equivalent or similar products. Compliance is also monitored and enforced. I'm not claiming it's perfect, but by and large over here you can have reasonable confidence these promotions are usually valid.

Conversely my wife is Chinese. Over there 'buy one get one free' usually means something like buy one dress, get one flimsy, non colour-matching belt free.

<comment><USER27> I'd be pretty surprised if British law prohibited "buy a dress, get a belt free" promotions.

<comment><USER52> If you promote it as such, or 'free belt with every dress' then sure. You can't market it using the phrase 'buy one get one free' though.

</comment></comment></comment></comment><comment><USER53> Does anyone know of a book (even better a textbook, if possible) detailing these strategies? This article is about the "BOGO" deal, I'm interested in reading about other kinds of these strategies, and why they work. If anyone has any recommendation, especially for more academic stuff (textbooks or papers), I would greatly appreciate it!

<comment><USER54> Not a textbook, but Freakonomics is in that ballpark.

It's (un-) surprisingly hard to find academic information about this on Google because all the results are click bait articles about how to improve sales, rather than peer reviewed theory.

<comment><USER53> Thanks, I'll definitely look into Freakonomics. I agree it's pretty hard to find info on this topic from an academic perspective, and it's really unfortunate, as I believe it is important for the wider public to understand these tactics and why they work.

<comment><USER55> The book "Predictably Irrational" by behavioral economist Dan Ariely that was mentioned early on in the article is also a good read. It does not directly related to pricing strategy but provide good insight to the irrational decisions that we make, and the BOGO falls into that category.

In a similar vein, I have just finished "Nudge: Improving Decisions About Health, Wealth, and Happiness" by Thaler and Sustein. This might be worth a look as well.

</comment></comment></comment></comment><comment><USER56> Everything even vaguely commercial with the word "free" attached is shady. I'm in a minority here (I must be, otherwise it would stop being common because it wouldn't bring in enough marks) but I've grown cynical enough that the word actually puts me on guard and I go searching for the small print, or it just puts me off completely if I don't have time for the small print.

It isn't just BOGO offers, anything free is suspect:

* Just pay postage! (postage is nearly as much as the item costs on Amazon/eBay/others with delivery included, and it'll take up to six weeks for your item to arrive)

* Do the Great North Run for free! (... plus a £320 charity pledge)

* First month free! (if you don't cancel 27 days before the free month ends you'll be paying for the service for at least 6 months afterwards)

<comment><USER57> > * First month free! (if you don't cancel 27 days before the free month ends > you'll be paying for the service for at least 6 months afterwards)

yes, this is a terrible bait and switch - and should be illegal unless the fine print isn't so fine that nobody reads it.

<comment><USER58> I also had services where the free trial stopped working as soon as I cancelled. Which I did so that the trial doesn't spill over into an abonnement.

</comment></comment></comment><comment><USER59> The shady economics of a non-functioning close button of an annoying "Subscribe to newsletter" popup. Bottom line: it works but also sends a negative subliminal signal to the visitors that a given business is desperate. Just something for website owners to have in mind.

<comment><USER25> I increasingly tend to close popups on websites by deleting them from the DOM through dev tools. Not the most user-friendly method, but it's quite thorough.

<comment><USER59> Doesn't always work though, some web sites also manage to block scrolling of the main content which may not always be easy to figure out (esp. on messy web sites with megatons of JavaScript code, HTML and CSS).

And surely there are browser plugins that help you remove annoying DOM elements in one click?

<comment><USER60> uBlock Origin has a visual picker, which also saves the blocking rule for future visits: [https://github.com/gorhill/uBlock/wiki/Element- picker](https://github.com/gorhill/uBlock/wiki/Element-picker)

<comment><USER38> Only issue is the scrolling, how do I make a rule that blocks the inline js to prevent scrolling in the body elem. or worse when it's not inline.

<comment><USER25> I usually look at the body element and start removing classes there. That often works. But I suppose a plugin should be able to figure out automatically why something isn't scrolling.

<comment><USER59> Or a shortcut for non-technical people: outline.com. Works perfectly even on most paywalls, not just annoying popups.

</comment></comment></comment></comment></comment></comment></comment><comment><USER61> Minor comment, but I'm pretty sure in Ariely's experiment he dropped _both_ prices by 1 cent (i.e. the Lindt became 14 cents), hence the drop was identical, but this completely shifted the purchasing decisions.

</comment><comment><USER38> One way to combat this mentally is to have set prices for things in your head... ie the price you feel each commodity should cost. Don't buy things that deviate to far from that price.

For example I feel a nice non-iron, fitted, button down shirt shouldn't cost more than $20, so I only buy when I see them at, or around that price, BOGO or not (and I need one/two). Same goes for lightning cables, I'm not paying more than $5/(10ft)cable no matter what material it's wrapped in.

<comment><USER62> Where do you get the idea that the shirt should cost $20? Is that from the prices you've seen at retailers? The same ones that run BOGOF promotions.

</comment></comment><comment><USER63> I think we need to cite those Study were done in US. And the results are pretty much US specific. From my experience ( Retail is big, so it might not be applicable to every category ) Buy one get one free or anything with the word "Free" works in US, Works in UK, Kind of Works in EU, Doesn't work in Asia. Or At least most of the SEA, China, Japan, Korea etc. The consumer mentality is completely different, and in reality the 50% discount price would work better.

Having it completely "Free" as the spend $12 Beer for Free T-Shirt example doesn't work in Asia as well. Because you would soon realise these market wont pay a $12 product to get a "Free" T-Shirt. It only works in Japan and Korea, and that also depends on the products.

Generally Speaking, Discount is better than Free with Strings attached in Asia Regions. Pricing Strategy, Consumer Expectation and Product Selection is so vastly in every Asian Market are part of the many reason why many large Retailers failed in China.

</comment><comment><USER64> This article of course totally ignored the scenario where the buyer is aware of the going rate for a given item, and either stocks up when a sale happens or waits until the price point they want to pay. The article basically is suggesting "deals are bad" instead of what it should be saying, which is "don't fall for bad deals".

<comment><USER65> I agree, in the mane. But I think their point isn't for people who target a specific good or service but who instead suddenly enter a market (purchase something they wouldn't otherwise purchase) because of a BOGO deal.

Quote ""Retailers are often as guilty as you can get with manipulating price of an item," says Cohen. "You're often charged a price that nobody has ever paid; anything that's free is just carved off the regular price.""

</comment></comment><comment><USER8> A friend once pointed out a deal on Coca Cola in one store where 2 bottles were actually cheaper than one single bottle. I reckoned the expensive single bottles were only there to convince you that you were getting a great deal?

Coca Cola is, I think, the classic example of a product where fair cost has become irrelevant.

</comment><comment><USER66> Funny the title calls economics. But the textbook economics with its utility maximizing rational agents is utterly incapable even accepting the _existence_ of this kind of phenomena, much less analyzing...

<comment><USER42> Ah, the mythical caricature textbook economics that hasn't integrated bounded rationality or behavioral economics. Funny how I only find that in internet comments and not actual classrooms past 101 (which is too basic to get into this).

<comment><USER66> I may be too cynical, but I assume most MBA curricula do not contain bounded rationality ot behavioral economics at least as obligatory subject, but are happily restricting themselves to the world view of 101.

<comment><USER42> Business programs LOVE behavioral econ. You get Nudge and cognitive bias stuff starting in undergrad business classes.

And other than the econ classes, business classes aren't modeling behavior or doing much theory work, so they aren't making assumptions like rationality.

<comment><USER66> Actually my comments were not that well thought from the beginning...

</comment></comment></comment></comment></comment><comment><USER67> I just read the book "Dollars and Sense" and recommend it if you're interested in this topic. It's kind of surface level but it does help explain the ways people spend and think about money.

</comment><comment><USER68> JC Penny almost went bankrupt when they tried to stop doing sales all the time and just charge fair prices. People want sales, even if the item isn't really cheaper.

</comment><comment><USER69> This reminds me of that Elon Musk meme where you buy glasses by searching "x".the glasses are free but the transportation is like twice the price to male em

</comment><comment><USER70> This can be generalized to: Every time someone offers you a "deal of a lifetime" it's a deal that mostly benefits him. If it doesn't screw over a third person it usually screws you, and if it screws over someone else it still might screw you.

That's why the smart man will find deals himself. E.g. instead of waiting for a prospect from a cars dealer that makes him a good offer, he will study what makes a good second hand car, when the prices of second hand cars are lowest and then he will go and make an offer to a caring owner of a car to become its second hand owner.

</comment><comment><USER71> I thought it was known as BOGOF?

<comment><USER72> Payless Shoes is particularly egregious -- they have huge signs that say "BOGO" but then the fine print says... "buy one get one half-off." And their employees are apparently trained to say "buy one get one" until you arrive at the till.</comment></comment>


The role of deliberate practice in expert performance: revisiting Ericsson - <AUTHOR> https://royalsocietypublishing.org/doi/10.1098/rsos.190327 <comment><USER2> > the main result from Ericsson et al. [1] — that there was complete > correspondence between accumulated amount of practice alone and skill level > on the violin among elite performers —was not replicated

interesting</comment>


Show HN: Draftss – Graphic design services on subscription model - <AUTHOR> http://draftss.com/ <comment><USER2> I don't understand how are you able to provide unlimited designs for such cheap pricing?

<comment><USER3> That's because The startup plan ($259/month) and the pro plan ($349/month) allow for 1 task at a time. Since each task typically takes a few days, it's not quite unlimited in practice. Pricing seems reasonable tbh, and service looks interesting. I guess ultimately it comes down to the quality of the designs that you get for your money.

<comment><AUTHOR> Rightly said, startup plan and pro plan allow upto one task at a time whereas the enterprise package can have upto 6 tasks running simultaneously. Every task has an average time for completion as equivalent to what it would take for a dedicated designer. The quality of deliverables can be found [http://www.draftss.com/#portfolio](http://www.draftss.com/#portfolio)

</comment></comment></comment><comment><USER4> How many client do you have so far? and when did you launch?

<comment><AUTHOR> We currently have less than 10 clients since our public beta launch a fortnight ago.</comment></comment>