Tell HN: DeepBench Makes Profiles Public - <AUTHOR> Remember TripleByte's recent "we're going to make your profiles public" misstep? Introducing DeepBench.io, the next LinkedIn competitor flipping the profiles to public....
DeepBench.io is a forum for experts to provide consultations for companies looking for expertise.
https://deepbench.io/
"DeepBench helps businesses gain critical insights through access to industry experts.
Our proprietary technology delivers better experts to you at lower cost, or allows you to build and manage your own network of experts."
As an expert you can review the list of available projects and indicate your interest / expertise in the area. The customer then can choose to review your profile and set up a phone call to discuss the issues. Experts are paid $200 or more an hour.
This model had essentially private profiles of the experts but DeepBench.io wants to compete with LinkedIn and that requires making profiles public. The content of the profiles can be populated with your LinkedIn profile, but your profile on DeepBench.io may indicate your interest in violating your full-time employment contract. Not all contracts will have a clause that prohibits your employment for another employer without prior permission of your current employer. But every employment contract I have signed as a software developer has had such a clause. <comment><AUTHOR> Here is the email.

DeepBench Update From the CEO's Desk

Hi [redacted] -

I am emailing you today because previously, you had registered on our website, likely via one of DeepBench's projects. As a quick reminder – our company connects professionals such as yourself with paying customers who need your insights via 1-hour phone / video calls.

DeepBench has launched a new feature for your benefit: editable profiles.

You may view your profile here – and you can login to edit. (Your username is this email address at which we've emailed you – if you have forgotten your password, simply use the "forgot password" button).

By default, your profile is accessible publicly, just like your LinkedIn. But you have the option of changing your visibility setting to private if you'd like.

"How is this different from my LinkedIn profile and what exactly are the benefits for me?"

Good question! Here are some of the benefits that we offer & differences vs. LinkedIn.

DeepBench's platform is centered around paid, short term consultations. We don't have people trying to sell you services or recruit you for full-time jobs. In fact, ~95%+ of our professional network is fully employed To enable these knowledge exchanges, DeepBench provides a host of scheduling, payment, and legal protection tools for your benefit As a "DeepBench Expert," you are welcome to include your DeepBench profile on your LinkedIn Having a profile on DeepBench enables you to discover interesting opportunities and filter out the signal from the noise. DeepBench is launching dozens of "Featured Advisor" pages in the coming months – see here for a few examples: Cybersecurity, Employment Law, Supply Chain Management, Corporate Financial Planning, Future of Work. If you would like to be featured on a future topic – please reach out to us and let us know! If you have any questions or run into issues – please email me directly – I'd be happy to assist. (And as an early-stage start-up – we always appreciate any feedback in general!)

Best,

-Yishi

</comment><comment><USER2> >Not all contracts will have a clause that prohibits your employment for another employer without prior permission of your current employer. But every employment contract I have signed as a software developer has had such a clause.

Just want to share that I've come across clauses like this before, and also ones about inventions and personal projects becoming employer property, and I was able to, without too much back-and-forth, on multiple occasions, come to an agreement to have those clauses crossed out or otherwise removed from the contract. The jobs were nothing special, just your run-of-the-mill software dev, support, and tester.

(Hopefully this is not too off-topic, since I'm replying to text in OP.)</comment>


Veganism Is Technologically Inevitable - <AUTHOR> https://chanind.github.io/2019/06/19/veganism-is-technologically-inevitable.html <comment><USER2> What these people do not understand is that, after millennia evolving morphologically, we have done it thanks to consume meat (both flesh and organs). Yes, good quality meat, full of saturated fats, blood. This is how we have developed our system. Today a portion of the population is being malnourished and malnourishing their children with the idea of not killing animals, so as not to cause them pain and thus ethically live well. The truth is that these people become addicted to sugar, either in the form of carbohydrates, and believe me, they always throw everything down, but all vegans end up fatal. Just watch them on YouTube, when they give up their unnatural diet.

There are 15 nutrients (Vitamins: A, B6 [pyridoxal, pyridoxamine], B12, D, F, K2; Aminoacids: Creatine, Carnitine, Carnosine, Taurine; Heme-iron, CoQ10, CLA) that are only obtained from animals and can not be found in plants. From animals we can not only obtain all the macronutrients, but also all the necessary minerals to have a healthy body, even so, there are people who believe that eating fruits, vegetables and carbohydrates is the healthiest way. This is how they lose their hair, this is how allergies on the skin, intestinal problems, constant gas, lack of libido and sterility come for both men and women. There is not such "I'm allergic to meat" but there are uncountable allergies to plants, seeds. Plants don't want to be eaten, that's why they contain antinutrients and toxins. It's their way to survive from predators.

People who eat plants get intoxicated, reducing the absorption of minerals, weak proteins and the few macronutrients that one can ingest in a meal. This is studied. Anyone interested in this topic can investigate it. I can recommend the excellent book Nutrition and Physical Degeneration from Weston Price as a starting point.

BTW: I am ex vegetarian/vegan. I didn't "did it wrong".

<comment><USER3> I wouldn't agree with everything you say, but I would add that we probably don't understand everything about nutrition and deviating from millennia of traditional dietary intake including is possibly a dangerous thing to do.

That being said, it can hardly be stated that the modern diet is at all reflective of what humans have eaten in anything but the very recent past. Processed foods and carbohydrates, grains, meat from animals that have been given steroids and have not been free to roam. There are so many variables that it seems like a very difficult task to determine what comprises a good diet.

It is not clear to me whether a carnivorous or a vegan diet would be more beneficial to one's health.

<comment><USER2> You can start here [https://www.ncbi.nlm.nih.gov/](https://www.ncbi.nlm.nih.gov/)

</comment></comment></comment><comment><USER4> The authors arguement is essentially "I can't see future humans in space slaughtering cows". Thanks to a lack of imagination the only conceivable conclusion is everyone must be vegan. Brilliant!

<comment><USER5> I can imagine humanity genetically engineering cows to be more space efficient, be unable to move, and to efficiently consume artificial diets made of algae.

Hopefully we'll stick to chicken and eggs.

<comment><AUTHOR> At that point, why not just directly grow the meat itself and skip the animal? It's already possible with today's technology and is getting cheaper every year: [https://en.wikipedia.org/wiki/Cultured_meat](https://en.wikipedia.org/wiki/Cultured_meat)

<comment><USER5> If you can replace an animal's metabolism, immune system, and various regulatory systems with synthetic substitutes, people wouldn't be eating cultured meat. They would be cyborgs.

</comment></comment></comment></comment><comment><USER6> Yeah... all signs are pointing to a dystopian future, I suppose not being able to eat a really good burger is part of that.</comment>


Should the Theory of Evolution Treat Our Microbes as Part of Us? - <AUTHOR> https://www.quantamagazine.org/should-evolution-treat-our-microbes-as-part-of-us-20181120/ <comment><USER2> Misleading title. Article is about how microbes fit into evolutionary theory. Evolution itself does not change the way it "treats" anything. It is what it is, what changes is what WE, as humans, think is going on.

<comment><AUTHOR> We evolved with microbiome. Viruses were part of us during our evolutionary journey, no?

<comment><USER3> I think that's the GP's point: microbes are subject to the evolutionary pressures that affect their host</comment></comment></comment>


Work/Life balance is bullshit - <AUTHOR> https://medium.com/desk-of-van-schneider/work-life-balance-is-bullshit-f51bf8b3767 <comment><USER2> I think this would go over better as a LinkedIn post.

</comment><comment><USER3> "I asked a "Waste Collector" on the street what happened that he has to work in this job?"

This guy sounds like an asshole, tbh</comment>


Obama orders Government Agencies to optimize for mobile web - <AUTHOR> http://www.whitehouse.gov/sites/default/files/uploads/2012digital_mem_rel.pdf

<comment><AUTHOR> I like the idea. I think it is a good initiative, but I just don't see it happening anytime soon. Some agencies just don't have the resources to make it happen, and others have too many resources so the red tape involved with projects like this are prohibitively long, thick, and virtually insurmountable.</comment>


Ask HN: I'm 23 and already feeling stuck in life - <AUTHOR> Seeking advice from anyone who's beyond this stage and found a "solution. "
The following realizations have placed me in an emotional spiral.
1. My job is not a good fit for me. Been working here as a software engineer for 3 years and 90% of the time, I'm bored and uninspired. Part of the reason is that I prefer coding stuff for people and not for businesses. I think that if I start working for non-profits or B2C companies it might solve this issue.
2. I love making an impact and helping others, and I'm not doing that in any capacity. Again, my job involves business software, completely boring to me. And volunteering opportunities in my areas of interests (voter rights, race relations, modernization of civic government technology) seem more challenging to come by.
3. I don't understand passions. For awhile, I've been running a blog simply cause it got me extra money but not because I actually liked it. I recently decided to finally stop it and haven't found anything to fill the void. I got sucked into all the entrepreneur porn and turned every hobby and side project into something that'll make money. Well now all of that has back fired cause I'm left with nothing I truly want to do. Even thinking of doing a side project will leave me uncomfortable if I'm not monetizing it.
4. I just want to relax. I'm jealous of those people who are perfectly content with the daily routine of life. Why do I feel like I need to change something? Do something big? Build something to change society? Why can't I just live the typical life and accept that as success? <comment><USER2> Not sure dude I'm 27 and in the same boat.

The relaxing part you can foster by meditating and getting outside of the evolutionary impulses to always achieve and do more and get more.

I think the solution is to realize that only you can unstuck yourself from life. Some people stagnate and then learn to like the stagnation (usually by picking up basic azz hobbies and buying new things for cheap thrills).

You can say f this, go for what you want and trying new things and take risks. If you fail (whatever that means) then you can go back to this rut but you know that you at least made an attempt to venture outside.

</comment><comment><USER3> I wish I could say I figured this out, but I haven't. While not exactly your same situation, most of those points hit home for me.

I think it's really good that you are realizing this now in your career, rather than toughing it out for a decade or more (like me).

Have you considered maybe software engineering isn't the right career for you? Perhaps you would find more meaning in another profession.

<comment><AUTHOR> > Have you considered maybe software engineering isn't the right career for > you? Perhaps you would find more meaning in another profession.

I have started to think about that. The thing is, I genuinely do love working on fun side projects and coding. Just when it's something interesting or affects people or a cause.</comment></comment>


US looking for revolutionary binary code system - <AUTHOR> http://www.networkworld.com/community/blog/us-looking-revolutionary-binary-code-system

<comment><USER2> The article title is bad and misleading. Here is what DARPA (not the US) is looking for:

A system to analyze legacy binary applications and "slice" out the functional components allowing them to be encapsulated and run separately as part of new more secure systems. It is assumed that the source code for the legacy system was lost long ago.

Specifically Darpa is looking for :

\- Automatically analyzing and identifying binary executable functional components.

\- Automatically slicing and extracting identified binary functional components into reusable programming modules, including defined inputs and outputs.

eg. performing a "projection" of the program. removing all instructions not related to calculating the inputs to the functional component. This is also sometimes called dependence analysis or taint analysis and has ~30-40 years of research. see: Frank Tip, "A survey of program slicing techniques," Journal of programming languages, vol. 3, 1995, p. 121–189.

\- Combining static and dynamic binary analysis to increase understanding and function of binary executables.

\- Exploring formal verification methods to prove functional component properties.

\- Developing intermediate representation language to support program slicing.

\- Developing core technology to enable exploration and research for the BET program.

<comment><USER3> and there are many other companies to benefit from this. reminds me a bit when i needed to reverse engineer a sourceless binary and write a wrapper to its important parts.

yes, the article title is bad.

</comment></comment><comment><USER4> Wouldn't be easier to have a more formal process for saving the source code? Like how real engineers maintain schematics and blueprints?

As an alternative, DARPA could prescribe that all the executables they commission come with embedded source.

<comment><USER5> Oh sure NOW you give us that great advice... :-)

I'm sure a lot of source does get saved. Nevertheless, if your task were to secure legacy government systems as quickly and strongly as possible, you're going to pray for a breakthrough like this. It's not practical to walk up to a PC and, even with full authorization, dig up all the source code to the software that's running on it.

Even then, some things really are more noticeable by looking at the executable and often this is the side the attacker will be looking at. If you don't have the same or better capabilities than your adversary to analyze this side of it, you're effectively blind to your backside.

</comment></comment><comment><USER6> A decade or two ago, someone proved that it was impossible to accurately separate code from data in general x86 (and then made a tool that sort of almost worked as best he could, with something like 99% accuracy). Does it scare anyone else that we are apparently in the position of putting forward grants to solve known-impossible problems? :(

</comment><comment><USER7> I would imagine that improved reverse engineering techniques would also help to dissect botnets, viruses, P2P networks, and other sorts of obfuscated software.

I'd rather believe that than believe that the DoD has lost a significant portion of its code base for its critical applications.

</comment><comment><USER8> Sounds like an exciting way to drag old working binaries into the modern age, but how will they overcome dynamically linked libraries? Wouldn't they basically just be reimplementing WINE? How old are these apps? Ada? Fortran? Cobol? Win32? Maybe I'm just very ignorant on this subject.

<comment><USER5> I imagine a lot of work will involve simulating the execution environment. A WINE-like infrastructure might be a component of that, but I also hear about people doing this type of thing at the virtual machine level.

</comment></comment><comment><USER9> A better way to encapsulate and componentize older binary-only software is to create VM for them. VM is so prevalent these days. It's much easier to build a VM for older software than reverse engineering the old software.</comment>


How to get your IP unbanned on HN - <AUTHOR> HN has a hair trigger about banning IPs that request too fast (sorry about that; we don't have a lot of spare performance), so I wrote something people can use to get their IP unbanned once if it gets banned by accident.
http://news.ycombinator.com/unban?ip=<ip address>
Obviously you have to use it from another IP address, like your phone. <comment><USER2> Use IPTABLES xt_connlimit to regulate overly aggressive client requests.

Since there are so few images on HN, there is no reason to have more than a couple connections per IP on port 80.

It will radically reduce your server load and there will be no blacklists/whitelists to maintain.

<comment><USER3> ...except people also browse HN from behind corporate gateway's/firewall's.

<comment><USER2> It won't ban them, it just throttles simultaneous connections from the same IP.

Unless there are dozens of people from the exact same IP and not an IP pool, it won't be a problem.

The worst case is they will see a longer delay for an initial page load in their browser by half a second. But it helps the server tremendously, especially since HN seems to use Apache.

<comment><USER4> In this age of NAT and IPv4 address exhaustion, it's not uncommon to have dozens of people from the exact same IP.

<comment><USER2> ...and if they are all hitting HN at the exact same millisecond, then their connection should be delayed

HN serves with connection-close, not keep-alive, so as soon as one request is done, the connection is freed for the next visitor on the same IP. This would just force them to be in single file on a very quickly moving line instead of requiring dozens of connections to be served all at the same time.

Think of grocery store with one super-fast express lane vs no express lane and a dozen very slow cashiers and people with full carts ahead of you.

Don't knock connlimit until you try it. Again, it's not a ban, just backlogs the requests.

<comment><USER4> That sounds _better_ , but it feels like a band-aid solution to me. For example, I worry about whether it will actually fix the load problems if a bad network has lots of requests, resulting in a very long queue and lots of open connections. It sounds like it's worth trying, at least.

</comment></comment></comment></comment></comment></comment><comment><USER5> pg: I have fair bit of lisp dev experience. If, as a weekend project, I modified the HN src to use postgres and memcache would you consider using it in production? Obviously, I don't expect carte blanche prior agreement, but I wouldn't want to invest the time unless I thought it was plausible the work could actually help.

I would expect it to solve most of your performance problems for the foreseeable future (at the very least, by letting you scale horizontally and move the DB, frontends, and memcaches to separate boxes - plus ending memory leaks/etc by moving most of the data off the MzScheme heap).

The obvious downside is that it would use your (or someone at YC's) time. First to merge the changes I make to <http://ycombinator.com/arc/arc3.tar> into the production code, then to buy/setup some extra boxes and do the migration. We're probably talking, roughly, a day. It also has the unfortunate side effect of costing HN's src some of its pedagogical value, since it adds external dependencies and loses 'purity'.

Been looking for an excuse to learn arc for a while now ...

<comment><USER6> I suspect there's good reason why HN is still using this old codebase. YC after all is not short of the cash needed for a complete revamp.

The site is very much _hacked together_ , but works... In a lot of ways, this reflects the hacker ethos of getting something up and running quickly at low cost while still producing value.

A revamp might have negative impact too by attracting a wider, more mainstream audience which could possibly dilute the purity of the community here.

<comment><USER7> > dilute the purity of the community here

Careful now :) It's not like there's anything stopping HN attracting a wider audience anyway; there's no restriction on who can register. Anyone can come and join in, which (in my opinion) is as it should be.

<comment><USER6> Of course. I'm not suggesting that there should be any limitations on who can join, but as the community moves more mainstream, quality will dilute. As the site is rather un-sexy right now, it seems to attract those who are genuinely interested. Remember what happened to Digg...

</comment></comment></comment></comment><comment><USER8> doesn't sanitize HTML fyi - may leave you open for XSS

<comment><AUTHOR> Ack, what was I thinking? Fixed. Thanks!

<comment><USER9> The same thing every smart developer who ever committed or deployed a line of vulnerable code thought: "I'm just trying to get this feature done, not write a formal proof". You're in good company.

<comment><USER10> It makes me think that one non-negotiable feature of any webapp architecture is to detect situations when inbound strings are placed in any context where they can be interpreted as code, and either refuse to run or at least spit out a severe warning.

And there are no webapp architectures which do this.

<comment><USER11> Yesod (a Haskell web framework) tries pretty hard. e.g. <http://www.yesodweb.com/book/shakespearean-templates>

<comment><USER10> Cool, thanks for that.

(My hobby: posting "nothing like X exists" in a Hacker News thread. :)

</comment></comment></comment></comment></comment></comment><comment><USER12> Do you have a rough set of guidelines for how fast we should request from HN? For a side project, I was thinking of writing something that scraped the HN frontpage and all the associated comment threads every 10 minutes or so, and I'd rather not cause performance issues or get banned. I'd be happy to rate- limit requests to whatever is convenient.

<comment><USER13> May be better to use the official API.

<http://www.hnsearch.com/api>

<comment><USER14> That's not an official API: <http://www.hnsearch.com/about>

Quote: "HNSearch was built by the team at ThriftDB to give back to the community and to test the capabilities of the ThriftDB flexible datastore with search built-in."

Interesting API all the same though.

<comment><USER15> Regardless whether it is official or not, it is pg's preferred api: <http://news.ycombinator.com/item?id=4694308>

</comment></comment></comment></comment><comment><USER16> I'm curious to why HN would be walking such a performance tightrope. I could speculate, but it would be uninformed rambling, so I'd love it if someone more knowledgeable than I could explain.

<comment><USER17> It's a side project by a couple of guys with full-time jobs, written in an experimental Lisp dialect and running on a single machine.

<comment><USER18> The last bit is key. HN is served off flat files, and caches state in-memory in global variables. That -- and not cost -- makes it hard to add a second machine.

<comment><USER19> It also makes it nearly impossible to slowly read one's own comment history, as the "next" pagination links are session data dependent and are garbage collected quite frequently.

This is, quite possibly, the worst webapp I use on a regular basis.

<comment><USER20> Thank you for explaining why the 'unknown link' happens at all. It's terrible - same with when you spend time thinking and formulating a response, only to see it disappear with the same error.

<comment><USER21> Back button usually helps in recovering the response.

<comment><USER18> Yeah, modern browsers are great at not losing form data. When I hit this error I hit back, then reload, then resubmit with full confidence that my comment will be unharmed.

So HN doesn't bother me so much. It's the #$%# smartypants webapps that try to reinvent textareas in javascript that piss me off. I'm looking at you, Quora and new Gmail compose.

<comment><USER22> > modern browsers are great at not losing form data

I wouldn't know. I had a bad experience with a lost webmail ~7 years ago. As a result, I ALWAYS copy form data to the clipboard before hitting Next.

<comment><USER23> Maybe it's time to let it go... 7 years ago is the dark ages in browser time. You are clearly the Adrian Monk of web users :)

<comment><USER22> If the old ways work well enough, why bother to change?

I still call my Windows scripts .bat files (instead of .cmd, that's clearly for OS/2 programs).

It was only in the last three or four years that I stopped naming my files with all-uppercase names not longer than eight letters, with an extension not longer than three letters, to be sure they would be compatible with a FAT16 filesystem.

I'm rather distrustful of GUI's for doing things like moving or copying files.

I never drag-and-drop files into programs, partly because I seldom use GUI file managers, but mainly because most programs didn't support the metaphor when Windows 95 first came out, and I haven't bothered to check if things have gotten better yet.

Given these facts, you might find it surprising to learn that my age is less than 30.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> Awesome. I've gotten my IP banned several times after the browser crashed and I reopened the tabs (I had too many HN threads open prior to crash, enough to trigger the ban)

<comment><USER25> Yeah... if I open Chrome I am pretty much guaranteed to be banned for days. :( The mechanism should really be changed to account for this: a ton of requests per second for only a few seconds should not trigger an issue, it should be a number of requests per second spike along with some sustained usage per minute. I actually made modifications to Chrome to change how it loads tabs mainly because of Hacker News' weird IP ban system, but I still got burned recently as I accidentally hit "undo close tab" one too many times, which reopened an entire window.

<comment><USER26> On firefox turn on the option "Don't load tabs until selected". I don't see this option in chrome.

It speeds up browser startup dramatically. Especially when you leave lots of tabs open as your "to read" list.

<comment><USER25> Yeah: I ended up figuring out a way to add it. I now generally like having the feature, but it was a complete necessity due to the Hacker News IP ban rules (although, as I mentioned, still doesn't solve the underlying problem for this site, which is incredibly touchy).

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

</comment></comment></comment></comment><comment><USER27> In my experience the banning is too strict.

It is triggered very quickly and it seems to last forever (maybe 15min would be better?).

I ask pg to kindly consider making it a bit more lenient.

I doubt HN goes under deliberate/malicious attacks, etc...

I'm making a HN extension that preloads some data such as the comments and the links on the next page (it's still with reasonable delays).

But at the moment it's impossible for it to function without risking the user getting banned.

<comment><USER28> I've no doubt that HN is under pretty much constant deliberate, malicious attacks.

Pretty much any site with decent traffic is under constant attack, and the high profile of HN means it'll be under far more scrutiny than others.

</comment></comment><comment><USER29> Repost from "Show dead" that relates to this issue:

 _[−]sunstone1 10 hours ago | link [dead]_

 _Well I never had my IP banned but I did have my account hell banned after about a dozen posts as you can see. Oh, actually no, you can't see, because it's banned. No, I never bothered to get another account, now I'm just a taker not a giver._

Most of the time it's clear why a user was banned, but looking at sunstone's history I don't really see a reason. While the algorithm will never be perfect, it would be nice if there was a clearer solution for misfires.

</comment><comment><USER30> Great news! I was banned last week (<http://news.ycombinator.com/item?id=4736919>), the bann was lifted in the meantime. But this will come in handy the next time I'll be developing an extension for HN and will refresh it all the time :)

</comment><comment><USER31> Oh! The benefits of dynamic IPs.. :)

</comment><comment><USER32> Well, I might as well try striking while the code is hot..

It occurs to me that I would like to interact with noprocrast in a different manner. Currently, I leave noprocrast disabled most of the time. I like to use longish minaway times (~day), but this makes me feel as if my first visit to HN will start the clock ticking, and I'd better be sure to get my HN fill before the timer runs out (yes, this is kind of ridiculous). So I only enable noprocrast (with a short maxvisit) upon realizing I'm stuck in a web loop.

The mechanism that I envision is either a button that immediately starts a one-shot noprocrast ban, or a page-count based maxvisit. The latter might be better since it could always be left enabled.

</comment><comment><USER33> Interesting fix. Is the trigger weighted based on request action type or user karma?

</comment><comment><USER34> Thanks Paul! I'm reluctant to try this in conjunction with developing any HN scrapers since I'm not sure what set it off in the first place and your language suggests it will only unban the IP once (I will, however, make sure the CMU IP I was using gets unbanned). It would be helpful to know what, precisely, that hair trigger is so we can make sure to avoid it.</comment>


Don't design your own REST back end - <AUTHOR> https://plus.google.com/u/0/+ÓlafurArason/posts/fCmaosPgmwN <comment><USER2> Still digesting this, but it doesn't pass the smell test. There are too many assumptions that are just plain... wrong.

For example:

There seems to be an implicit assumption that all of the REST endpoints are just maps to CRUD operations. Perhaps for the most barebones, basic API this is true, but service APIs are more than just CRUD ops. They're abstracted interfaces to a complex series of tasks (for the sake of argument, we'll call them 'orchestrations' ). Just because you're doing a "POST" to /user/foo doesn't mean that the service is only doing a simple insert. It might be looking up similar users, sending out notifications, validating data, de- duping, etc.

The more I think about this the less sense it makes. Perhaps I'm missing something.

<comment><USER3> It's clear the author doesn't understand REST - he thinks that it is a dumb wrapper over a relational database. It's not surprising that straw man burns so well.

<comment><USER4> I have yet to see a crystal clear definition of REST. Where would be the best one you have found?

<comment><USER5> It's a style, not an implementation. Highly opinionated definitions are the norm for REST.

<comment><USER3> It is defined very clearly. The fact that most developers don't know what it is does not mean REST is a subjective style.

</comment></comment></comment></comment></comment><comment><USER6> The main benefit of having an actual API layer is _decoupling_ \- between your front end clients and you back end service(s). This article seems to forget this major point.

Decoupling has loads of benefits - for example, it gives separate development cycles, and in this case provides a point of scalability too - not all REST dbs cache brilliantly or aggressively enough for all use cases.

The point about using delayed syncing between client and server is separate. I can see how it can help in certain use cases (Google docs doesn't auto-save every single letter you type in for example I suspect, but probably bulks them up into a save every x seconds) but at other times this kind of strategy sounds like it will add unnecessary complication.

<comment><USER7> The syncing adds unnecessary complication for desktop apps. For apps that needs to be accessible via mobile devices, it means the difference between whether or not your app is usable at all for a lot people. About 30%-50% of my commute is "dead zones" where I'm lucky to get GPRS speeds, and often have no signal at all... This is in one of the busiest commuting corridors in London....

Getting syncing right is tricky, though, because you do need to think through your possible conflict resolution issues in case the user moves from device to device, potentially while one or both devices lack a connection.

</comment></comment><comment><USER8> Explicitly linking database operations to API calls is idiotic for multiple reasons. First it creates tight coupling, second if you want to do multiple operations at once you have to make multiple calls to the API. That doesn't scale at all.

Everyone should be writing their REST back end and the API should be as specialized as possible. One HTTP call should give you back everything you need for a page/view w/e.

<comment><USER9> I agree the article is missing the abstraction all public apis need to offer non changing services.

Behind that public front everything can change and routes can be added, if things change majorly you version it. But never is it a good idea to map the db operations directly to the rest urls, so much more has to happen in production.

The public api layer is sometimes mapped more manual as auto generation rest apis rarely aren't leaky abstractions. ORMs, data layers, authentication etc behind the scenes may be generated or flexible to change.

Public apis might even have public objects that aren't objects from the database in full or at all i.e. meta/tracking fields, private info.

Public apis offer multiple levels of service: direct data/json, mvvm views, tools, syncing, per-view state (multiple objects), authentication etc. The term REST has colluded it a bit but ultimately REST is representational state transfer, it doesn't have to be web to db without an application layer.

An API is a public definition that should be as concrete as possible for the service use cases and public apis provide a flexible abstraction to expose a service to other consumers. So I will keep writing my public apis, I'll generate boilerplate behind that but I won't be locked to any implementation other than a uniquely designed api for my service, features needed and use case.

<comment><USER8> > it doesn't have to be web to db without an application layer

I don't even think it's possible to do that if you have a bit more complicated application. Because every API that does more than the very basic CRUD needs something else besides interfacing with the database.

<comment><USER9> Yes the only time I could see that being useful might be in a private api used by an admin application or similar. But for a public api, prepare for some pain.

</comment></comment></comment></comment><comment><USER10> This article is really making a lot of broad assumptions about what people are making APIs for and how people write code.

"Now you hit an API that has to do some async behaviour and now your screwed. There are some solutions for that but they make the code really complex, even Node.js."

What does that even mean?

<comment><USER11> I don't know what he meant, but we have a situation where our REST API needs to reply with "I see you want to get X. Come back and ask for X again when it's ready.". In our backend, we just add the task in message queue.

<comment><USER12> HTTP 202 Accepted [1] does the job.

[1] [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10...](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3)

<comment><USER13> Actually it doesn't. The "hard" problem here isn't telling the client to come back later, it is providing the client with a way to get the actual results later. So providing a request identifier that gets populated in a database when the task is complete may be one way to do that.

<comment><USER14>
      → POST /resource
      ← 202 Accepted
      ← Location: /jobs/XXX

<comment><USER13> Right but you need /jobs/XXX to return a response that is not 404. How you accomplish this is outside the scope of what 202 provides you.

</comment></comment></comment></comment></comment></comment><comment><USER15>
       > A lot of the Internet is going over unreliable wireless
       > technologies. So your beautiful REST calls are now riddled
       > with exception handling, because there are so many ways of
       > things going wrong.

Let me get this straight, you want do to representational state transfer (REST[1]), that is, keep all long-lived state on the server, and all (single) state changes confined to a single request - and you're worried about your clients intermittent internet connection?

You might have a problem with your architecture, but your architecture doesn't appear to be a REST architecture.

[1] [https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arc...](https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec%205_3)

</comment><comment><USER16> There is a core of truth to this article in that we're all reinventing the wheel trying to sync a client-side model with a server-side model (assuming your (web) app has client-side state at all, of course).

Indeed, CouchDB/PouchDB already solved this problem, and redoing it can be considered waste. I think the author cut a bit too many corners for the argument to stick, but in principle it's entirely true.

The "sad" thing is that if I'd use Couch for this, I'd get more than what I asked for: I also get a database, document-oriented, with a big map-reduce component, difficult to add custom queries, difficult to extract management information from, limited admin tooling. It might fit certain problems well, but it also fits many problems badly.

I'd love for a Couch/Pouch kind of tool for replication/sync that somehow allows me to plug my _own_ datastore on the backend and my _own_ model structure on the frontend. I'm not sure what that would look like - there's a good reason data storage and sync are so tied together in Couch. But still, "you shouldn't design your own API and the only way not to is to use this particular database here" just doesn't feel like we're done with this debate.

<comment><USER17> I just use elasticsearch to index couch, but that's also stricly on the server side.

there's rarely enough data in pouch for me to have to index that way though.

<comment><USER18> Aren't you severely limited in storage with pouch? I think best case with browsers is like 50Mb with the average being about 10Mb. I can't envision a situation where you could _ever_ index pouch.

</comment></comment></comment><comment><USER19> > You hopefully care about how the URL schema looks like

That's not REST, that's something else. Bit of a strawman.

> So then you don't have beautiful URLs right.

You never needed them.

<comment><USER20> This is a key point. HTTP states that URLs are opaque. Understanding that is important. Trying to leverage URL conventions is just asking for trouble. SEO complicates this a bit for crawled sites, but for web services it is a very different situation.

<comment><USER21> Beautiful URLs are convenient though. Not every API call is going to follow a succession of links from the main entry point. Do you really design opaque URLs on purpose? Does it work well for your clients? This is a genuine question, I'm quite seduced by the hypermedia story, but still wondering how it works in practice. It seems that for the most part, we don't really know yet.

<comment><USER8> > Beautiful URLs are convenient though

I think "beautiful" is the wrong word. It should be logical and should try to convey what it does. I don't care what an URL _looks_ like, as long as I can understand what it supposed to do.

APIs are for developers, not for search engines and definitely not for the end user.

<comment><USER21> Indeed, "descriptive URLs" is more what I had in mind.

</comment></comment></comment></comment></comment><comment><USER22> If you keep the data on client side for longer than trivial amount of time, wouldn't you have to deal with conflict resolution? This could be a big problem for many use cases.

<comment><USER23> Syncing and resolving conflicts is one of those things that everyone thinks is initially easy then realizes how difficult it is.

<comment><USER24> All I saw was the problems when he talked about that. The data will be a mess (if his database is in any way similar to the one I work on).

</comment></comment></comment><comment><USER25> I write my own REST APIs and I don't really run into problems like this. Removing REST isn't really the answer to the problem "what happens if clients disconnect?" You can write a layer in the client to deal with this gracefully and still use REST. I don't really get how the two concepts relate.

For anyone interested, I recently wrote a library called Hustle ([https://github.com/orthecreedence/hustle](https://github.com/orthecreedence/hustle)) which implements a beanstalk-like queuing system on top of indexeddb, allowing you to queue up writes to your local data to be synced remotely.

<comment><USER26> I also don't understand why any of this (OP's problems with REST) is the fault of REST or a database. To me this is 100% architecture woes. Lets of people use REST successfully.

</comment></comment><comment><USER27> What if someday, you decide that you want to change the database because CouchDB was bought by Oracle? You'll have to clone Couch's REST API or you may break your clients.

<comment><USER28> As others have noted, as an Apache project, the CouchDB project can't be "purchased by Oracle". Obviously you meant that somewhat metaphorically (and as a reference to MySQL), but it's worth noting:

MySQL was the product of a private company. It was always _possible_ for it to be purchased, and that eventually happened. The same is true for many modern databases, including most of the major NoSQL databases. CouchDB cannot be. Yes, there's risk of the project could die in a variety of ways, but there is an entire class of risks that CouchDB is not subject to, when most of its competitors are. If you really want to avoid having your DB purhcased and killed by Oracle, you'd actually _prefer_ CouchDB over, eg, MongoDB.

Beyond that, you say: "You'll have to clone Couch's REST API". That's actually the _other_ half of what makes CouchDB a safer bet: The HTTP protocol is itself open source, well documented, and has already been cloned repeatedly. It's used by quite a few different projects in different ways, including PouchDB, CouchDB, TouchDB, Hoodie.io, BigCouch, and CouchBase Lite.

If you're curious about the topic, I recommend this blog post: [http://caolanmcmahon.com/posts/couchdb_is_not_a_database/](http://caolanmcmahon.com/posts/couchdb_is_not_a_database/)

<comment><USER27> Thanks for the link. CouchDB really sounds more like a platform/framework. As for the points you mentioned, refer to my answer to janl.

</comment></comment></comment><comment><USER29> I don't know about everyone else, but the problems described in the article I encounter every day and so far I managed to beat it with solid Typesafe stack. Main components of my stack - Scala/Play/Akka/Slick/PostgreSQL. By changing few configs I can scale from 1 server to 10 just like that thanks to Akka.

<comment><USER30> Do you know of some tutorials or even better some examples for getting started with this stack? I know of this JHipster [1], but it's Java and doesn't use Akka AFAIK.

[1]: [http://jhipster.github.io/presentation/](http://jhipster.github.io/presentation/)

<comment><USER29> On [http://typesafe.com](http://typesafe.com) you'll find plenty examples using the whole stack. When I was learning Scala I found [http://twitter.github.io/scala_school/](http://twitter.github.io/scala_school/) best source to break into it. [http://playframework.com](http://playframework.com) is a good source of tutorials and docs for Play. [http://akka.io](http://akka.io) is the home of Akka and [http://slick.typesafe.com](http://slick.typesafe.com) is Slick's website.

<comment><USER30> Oh, that Scala School looks great, thanks! I also found this: [http://typesafe.com/activator/templates](http://typesafe.com/activator/templates) <\- some templates to get started with the Typesafe stack. I guess it's another weekend lost for me =)

</comment></comment></comment></comment><comment><USER31> For those of you using .NET I highly recommend ServiceStack:

[https://github.com/ServiceStack/ServiceStack](https://github.com/ServiceStack/ServiceStack)

[https://servicestack.net/features](https://servicestack.net/features)

Doesn't use ASP.NET. Runs on Mono.

Don't bother with WebAPI.

<comment><USER32> ServiceStack is great but the recent licensing change is irritating to say the least.

<comment><USER31> You can still use the v3 version for free.

I agree that for a hobbyist the new license fees are too high. For a company those costs are a no-brainer though.

What Demis has done with ServiceStack (and now having made it his full-time job after leaving Stack Exchange) deserves remuneration in my opinion.

</comment></comment></comment><comment><USER17> I love CouchDB so much.

90% of the time I end up just proxying connections to couch and doing sanitizing/filtering on the data on the fly.

The views are bit annoying, but I just plug in elasticsearch once it becomes even moderately complex. It just automatically indexes the data by listening to the _changes feed.

</comment><comment><USER26> This is a meandering tour of one developer's trials, not a solid discussion of REST at all.

I withdrew after "Whether that it's tried and tested of MySQL or shiny and new of MongoDB. This choice is probably going to affect how you scale." It was not worth continuing after that.

<comment><USER26> If you have already written a competent relational schema, written a SQL API on top of that, and mapped that API to a RESTful service successfully, this article is not for you.

</comment></comment><comment><USER33> > There are problems with your APIs losing data because of errors or downtime. > A lot of the Internet is going over unreliable wireless technologies. So > your beautiful REST calls are now riddled with exception handling, because > there are so many ways of things going wrong.

Couldn't this be easily solved by: a) putting the server behind nginx to terminate slow connections after several seconds, and b) adding retry logic to the client?

This isn't a rhetorical question - would this approach actually work if a client was part way through sending data when it lost network connectivity, or am I missing something?

</comment><comment><USER21> Despite the slightly ranty tone, this was an interesting read. The sync-first approach presented here may certainly have value in some contexts. Also interesting to hear of someone implementing backends with just CouchDB. Again one size does not fit all but it's always interesting to read another developer articulating his thoughts on the way he works.

</comment><comment><USER34> Does couchdb have something that provides fine-grained control over the db models, like flask-restless does([https://flask- restless.readthedocs.org/en/latest/customizing...](https://flask- restless.readthedocs.org/en/latest/customizing.html))? I didn't find anything in their documentation or on google.

</comment><comment><USER35> What if you want to plug in another DB for testing? When I use Peewee ORM with Python, I use Postgres in production and SQLite in-memory for testing. Is there a good way to do this when you put logic in the DB?

<comment><USER36> it's not quite there yet, but pouchdb.com with pouchdb-server (npm, gh) is the "SQLite to Postgres" in CouchDB terms :)

</comment></comment><comment><USER37> I'm a huge fan of CouchDB, but I think that CouchDB is the answer to his problem just as much as using some other database like Postgres is the problem to begin with. The problem with "REST" (oh yeah, baby, I'm getting the air quotes out) APIs to begin with is most of the time we heavily couple them to the fact that they will be consumed by a browser client. Design your REST APIs to stand by themselves and design them to be consumed by any client. There is no doubt that web browsers have special needs, address those special needs with a (hopefully) thin layer between your REST API and the browser.

</comment><comment><USER38> nobackend.org

</comment><comment><USER39> so how does using couchdb solve some of the pain points? by providing a user authenticated REST api out of the box? what if you need to write some server side business logic?

I read the article, it definitely sounds exactly like what I've been through. What I didn't get from the article is, what to do next? What is the right step to take here?

</comment><comment><USER40> Can't read easily on an ipad. Back button pressed.</comment>


Show HN: Our first Kickstarter - <AUTHOR> We are a small team committed to ship our first Kickstarter in about 3 months. We are starting from scratch designing a consumer device and are really excited to share our progress. Would anyone be interested in receiving weekly updates on our learnings and progress? <comment><AUTHOR> Or if you prefer, subscribe directly: [http://www.pixsso.com/](http://www.pixsso.com/)

</comment><comment><USER2> Sure! please add us to your list email@example.com

<comment><AUTHOR> Added you, we are just getting our dl going: [http://www.pixsso.com/](http://www.pixsso.com/)</comment></comment>


A great way to prepare for job interview - <AUTHOR> http://mockinterview.proudfolio.com <comment><AUTHOR> Hardest part about job interview is knowing what these interviewers are expecting. Many times, we know the answer but that doesn't exactly match with what interviewers were looking for. Consulting companies don't have real experience to tell what interviewers are really looking for. Best way to prepare is to get Mock Interview from real interviewers from the companies and get personalized feedback and mentorship. These people will tell you exactly what they were looking for and how can you approach the interview in the right way. MockInterview.Proudfolio.com is the platform for the same.</comment>


Living in 80 square feet (2010) - <AUTHOR> http://unschooled.org/2010/03/living-in-80-square-feet/ <comment><USER4> > _My current bedroom is ..._

Yawn.

This isn't living in 80 square feet. This is bedrooming in 80 square feet. There's a gigantic difference.

There's no mention of cooking, bathroom, or other shared space. Congratulations, you actually live in a much larger space than you admit.

My first apartment in Paris was ~118 square feet (11m2), but that was INCLUDING a kitchenette, an enclosed bathroom (toilet, shower, and second sink), and an inward slanting wall (it was inside the building roof) which eliminated maybe a good fifth of the volume, and also no closet.

And I lived there with my partner, so there were two people sharing that space, with two peoples' worth of clothing and coats and computers and other materials and dishes and pots and pans and luggage, and two peoples' worth of constantly being in someone else's way.

And only that last detail, the constant interminable contact with another person, was difficult.

But an 8x10 bedroom for one? So?

<comment><USER5> In Europe full featured apartments under 20m2 (~215 square feet) are pretty standard. I personally know quite a few people that are living in such apartments with kids. 11m2 sounds like standard European bedroom in apartment.

<comment><USER6> > In Europe full featured apartments under 20m2 (~215 square feet) are pretty > standard.

Seriously?

[http://ec.europa.eu/eurostat/statistics- explained/index.php/...](http://ec.europa.eu/eurostat/statistics- explained/index.php/File:Average_size_of_dwellings,_by_degree_of_urbanisation,_2012_\(%C2%B9\)_\(m%C2%B2\)_PF15.png)

<comment><USER7> This is average, there are huge houses where I live. But there's also tiny ones.

<comment><USER6> I am a statistics noob, but with this average and the tiny ones are standard the huge ones must be really huge, super mansion like huge.

</comment></comment></comment></comment></comment><comment><USER8> Until last December, I would live in rooms well under 100 square feet, for about four years. I won't go into details how I got there, but surprisingly, money wasn't the issue. Anywho. I kind of got used to it and it wasn't half bad in the end (Stockholm syndrome kicking in?). My 2c:

1\. Get systematic about tidying your room. A pile of clothes is a lot larger than a tiny column and it takes minutes to arrange. Also, clean up right after the fact (especially if it takes no time) and don't leave things for later - <USER2> case in point - food. If you eat in your room, take the plates and stuff to the kitchen ASAP, don't leave it be.

2\. Use shelves and boxes. I had most of my stuff in shelves above my table, but it soon got out of control. I got a few shoe boxes (for cables and stuff I didn't need to look at) and bought some transparent plastic boxes (for things I needed to glance at). Use lids for stuff you don't access often.

3\. Don't get rid of things you care about. I know, space is precious, I got rid of my lovely Dell computer monitor. But I never got rid of my books, even though they took up most of shelf space (and I read on my Kindle anyway).

4\. Cherish common areas. I presume you have a bathroom, kitchen and possibly a living room in the building you live in. Figure out when others are not using these areas and hang out there for a bit. Make your work/leisure station portable. I would often cook while watching YouTube lectures or listening to audiobooks (iPad with a kickstand, bluetooth speaker). Or would go to the living room to watch telly while catching up on email.

5\. Use your luggage. I would have a suitcase on top of my wardrobe. I would put my winter clothes during the summer there and vice versa. You'd be surprised how much that helps.

6\. Get an air freshener. Sounds a bit weird, but in such an enclosed space, any odour can get irritating, because it's everywhere, because everywhere defines quite a compact area :-) I got something from a Coop, a few quid, plugged in a few times a week.

<comment><USER9> > 1\. Get systematic about tidying your room.

Strong second. Clutter shrinks spaces.

</comment></comment><comment><USER10> 7.5m², to save the search.

I think that's even smaller than my room as a student in London.

<comment><USER11> I actually can't picture it. I mean, if you have a bunch of books, a bed, a computer, clothes, a kitchen, a washing mashine and a bit of storage...

<comment><USER12> Books? E-books take no space. Public library has vast storage on your behalf, free.

Bed? Futons are small. Air mattress rolls up tiny. Elevate a regular bed and all that space is available again.

Computer? Notebooks fold up to nearly nothing.

Clothes? 3-4 outfits fold to 1 cubic foot.

Kitchen? Hot plate and nesting pots take another cubic foot max.

Washing machine? Laundromat, or sink & clothesline.

Storage? Under other things, or hang from ceiling. Don't need much.

We're talking urban, not rural, so many services are normally available covering anything lacking for space.

Even if rural, note that some people go on 2000 mile backpacking trips, taking 6 months, carrying all their stuff totaling just 20-30 pounds.

<comment><USER13> However, at least here, the idea is that if you are cash-strapped (and thus you have to rent a tiny place), you need to save money in all possible ways.

This means that you need to cook your own food. I cook, and I tell you that i couldn't make it if i had only one hot plate. I would need at least a 3-burner kitchen with a stove. And a microwave. And you shouldn't put things on top of the microwave. Plus a reasonably sized fridge, because you save money by buying in bulk.

In the same way i definitely must have my own washing machine and -if drying space isn't available- a drying machine,

        > so many services are normally available covering anything
        > lacking for space.

otherwise spending on a cleaning service gets very expensive here, basically in two or three months the service costs you as much as a washing machine.

Of course, not cooking your food can make a big impact on your finances here. And mind you, this (Peru) is a country with cheap meals. But cooking your own is still cheaper.

As for clothes, i can't see how 3-4 outfits is enough. I work in business suit and I need at least 3 business suits, then add the regular/casual outfits and the sport outfits and you are counting about 9-12 outfits. Business suits shouldn't be folded.

<comment><USER14> There's a lot of foods you can eat without having to cook them, or that you can cook with just a single electric burner. You can buy a mini dorm fridge + small microwave if you really need one, but simply buying whatever is on sale like meat that is about to expire or very ripe fruit is a good way to still save money without needing a lot of space.

Washer and dryer uses a lot of electricity and water, so while it is more expensive to go to the laundrymat it's not as much as you might think, especially vs the savings of living in a very small space. Wearing your clothes more than once helps a lot, and even in a small space you can usually find somewhere to hang suits. Usually the back of a door is good.

There's a lot of people out there that make it work. :)

</comment></comment></comment></comment></comment><comment><USER15> The trouble with small spaces is that they cost unproportionally much to rent. I could probably fit my home life in a 80 sqft apartment but when they rent for much more than 1/10th of a 800 sqft apartment, it's very hard to justify the compromise.

<comment><USER16> ...unless you don't _make_ the money for that 800sqft apartment

<comment><USER17> Being willing to share space almost always ends up cheaper.

A bunch of students, for example, can generally outbid a family with 2 workers and 3 kids for a large place. And the students have way lower standards usually. No moral commentary there, just an observation. Fortunately they are generally not after the same spaces.

IMHO it actually sucks when property owners try to hoover up what I'd call the "space sharing discount" by renting out rooms on individual leases in a place where most of the space is shared. The culture (or not) is the thing which makes that arrangement work, and I don't feel like they should get to monetise that.

I believe there are an increasing number of startups operating on exactly this premise though :/

<comment><USER18> _IMHO it actually sucks when property owners try to hoover up what I 'd call the "space sharing discount" by renting out rooms on individual leases in a place where most of the space is shared. The culture (or not) is the thing which makes that arrangement work, and I don't feel like they should get to monetise that._

Culture? Nah, if there's a need people will adapt themselves. We rent individual rooms in a couple of 3-bedroom condos, and it's worked fine even as tenants rotated over the years.

Also, while we don't "hoover up" the discount (the total of the rents isn't higher than what we could get renting the whole place), I don't think it'd be wrong to do so, as the arrangement has extra benefits for the tenants: not having to find people to share, not having to worry about an increase on their rent if someone decides to leave or feel guilty about leaving the others with a higher rent, not having to get utility/internet contracts in their name, etc.

</comment></comment></comment></comment><comment><USER13> TL;DW:

EDIT: this refers to the video linked by another poster: [https://www.youtube.com/watch?v=TYVJbupG3Xg](https://www.youtube.com/watch?v=TYVJbupG3Xg)

House is 8m2, but it is a two level house so the bedroom is not taking up the ground space. She, apparently, lives alone.

She lives in tokyo. 2016 _minimum_ wage in Tokyo has been set to 932 JPY. For a 148 hour month, that's 137,936 JPY that currently means $1252 USD.

Her house costs her about USD $600/mo. So that's about 48% of minimum monthly wage. Assuming she is getting minimum wage, doesn't sound bad at all.

Now here's the deal: in my city the minimum wage is 850 PEN. 48% of that, is USD $123. With $123 here you couldn't afford to live alone renting any kind of house or apartment. You would have to rent a room. That is, no kitchen/washing machine/ clothesline, etc. And a very tiny one at that OR a well-sized one but located in a rather ugly part of the city. (Ugly as in, trash outside everyday, being robbed at gunpoint at night, etc.)

So I guess all is fine in Tokyo.

</comment><comment><USER19> Reminds me of this set of overhead photos of cramped rooms in Hong Kong: [https://petapixel.com/2013/02/19/cramped-apartments-in- hong-...](https://petapixel.com/2013/02/19/cramped-apartments-in-hong-kong- shot-from-directly-above/)

<comment><USER20> Sadly, Hong Kong can be way worse than these already super-cramped one-room apartments.

The apartments in your link are either tiny 1960s social housing, or subdivided apartments. With the ever-increasing rent, some of these have since then been subdivided further into single beds (a.k.a 'cages' or 'coffins', depending on how they're sealed):

[https://www.theguardian.com/cities/gallery/2017/jun/07/boxed...](https://www.theguardian.com/cities/gallery/2017/jun/07/boxed- life-inside-hong-kong-coffin-cubicles-cage-homes-in-pictures)

</comment></comment><comment><USER21> I gave up my flat and moved into a caravan. It's about 75 sq ft and less than 6ft high. Within that is a kitchen (I cook all my own meals, bake bread etc. despite only having gas burners and grill) and a tiny wetroom/bathroom which I built myself. I live and work from here (I make and sell art and store my A3+ printer which I'll be using again soon). 27" monitor, spare bed, work area..

I do my laundry by hand in a bucket. My water tap is operated by a foot pump lol. I do a tiny bit of web work (used to be an Actionscript dev but that career died with Flash, the remaining jobs in that tech don't appeal to me and my CV has such a huge chasm in it now that my professional programming life seems to be over). I'm incredibly poor financially but life is challenging and interesting, the miniature home suits me fine and it's really good fun optimising the space.. just requires an adaptable mindset!

</comment><comment><USER22> The US is now so crowded that there is only 3.5 million square feet per person.

<comment><USER23> For most of that, though, the roof leaks...

(That is: You're talking about the whole country, not about the space inside buildings. Most of your 3.5 million square feet is outdoors.)

<comment><USER22> And some is covered with water. Assume a third is unusable, at an average family size of 3 people that would still be nearly 7 million square feet each.

</comment></comment></comment><comment><USER24> I don't think small space is an issue by itself. It's very manageable if the building has good facilities (shared bathrooms, washing machines) and if you can easily eat outside. More problematic would be noisy environment or lack of window.

</comment><comment><USER25> I've been decluttering a lot over the past year and "Stop putting things away." is one of the things that took me the longest to get my head around but when I got used to it it made my life so much easier. Reducing the amount of effort it takes to get/store an item means you use it more (cleaning products) but also buy fewer yet nicer things.

Definitely recommend Marie Kondo, both her books take only a few hours to read. The joy thing, though initially weird makes complete sense once you've read both books and she insists that everything has a home in the house - <USER3> you don't follow that rule you'll quickly become overwhelmed.

</comment><comment><USER26> > Living in 80 square feet

So like billions do in the developing world?

<comment><USER27> or millions living in big cities, in London 100 square feet is pretty common

</comment></comment><comment><USER28> This is much less impressive with 10 or 11 foot ceilings than with 7 or 8 foot ceilings.

That said, even with more space, I think that effective use of space is a much better strategy than upgrading to a larger space. Stuff tends to have a quality to it that is similar to Parkinson's law - it takes up the space allotted to it. The authors techniques could still be useful in an 8000 sq ft mansion.

</comment><comment><USER9> The desk I built myself last month is a quarter the area of the room described, which actually just about matches what I could expect to get for the same rent that gets me a ~600sf apartment here in Baltimore. So I guess I'm never moving to New York!

The techniques described here are still useful, though. I've found the method of disposing of old clothes to generalize: if you have stuff you never use, put it in a box, write on the lid what's in it, and stuff it in an odd corner of a closet or somewhere else out of the way. If it's still untouched in a year, or when you find you need the space, take it to Goodwill.

Wall-mounted shelves are indeed a marvel. They're easy to build from lumber with hand tools, if you've got the space to do it; it takes time, but you can size them precisely to fit the space where you mean to put them, and for shelves of any size it's it's cheaper in the end than buying the prebuilt sort.

</comment><comment><USER29> I just stayed in a 8 x 5 sqft NYC hotel room (The Jane). The bed fills over half of it. It has a 3 foot storage place below the bed and shelf above. The wall away from the bed has 6 x 5 ft mirror making the room seem twice as large. It also has a flat screen TV at foot of bed and 2x 5 window. The walls were thick enough you really couldnt hearbthe neighbors except when closing the door.

What is amazing is that some of the same size rooms have a second bunked bed instead of the shelf. I guess you have to take turns using the stand up space.

<comment><USER30> > 8 x 5 sqft

That's 40 ft^4. The extra dimension must be handy for storing luggage :)

</comment></comment><comment><USER31> I just finished a book on this topic. Its a collection of case studies on small, well designed, incredibly liveable homes, I highly suggest it.

[https://www.amazon.com/Small-Homes-Grand-Living- Interior/dp/...](https://www.amazon.com/Small-Homes-Grand-Living- Interior/dp/3899556984)

</comment><comment><USER12> There's the popular "tiny house" movement in the USA - building complete homes on just 100 square feet.

</comment><comment><USER32> Why can't we find 80 square feet apartments for ~$300 in the USA/Canada?

<comment><USER33> In Canada, look for "rooming house". In parts of the States, it would be an "SRO". They're often paid for weekly rather than monthly.

</comment></comment><comment><USER34> I love how this story fits well into our currently economic ideology of vast wealth inequality, evaporating pensions, vanishing healthcare, crumbling infrastructure, labor with no pricing power, etc.

</comment><comment><USER35> my 'bedroom' is about four sq m. meaning it just about fits my bed. i share the rest of my appartment with others, but its still my appartment, so i can store my stuff wherever i want.

</comment><comment><USER36> How _actually_ living in 80 ft^2 looks (Tokyo).

[https://www.youtube.com/watch?v=TYVJbupG3Xg](https://www.youtube.com/watch?v=TYVJbupG3Xg)

<comment><USER37> This video is about 20x more interesting than the article, which I think is just getting votes because HN always upvotes anything about living in tiny spaces, even though there no insight or interest in this one.

</comment></comment><comment><USER38> For those of us with useful units: 80 feet^2 = 7.43 m^2

</comment><comment><USER39> As someone who has trouble throwing things out, taking a picture of it to retain the sentimental value has been a huge help.

</comment><comment><USER40> how do you have friends or visitors come over? or do you meet up at public places?

<comment><USER41> I lived for a few months in probably 30-40 square feet (2-3m^2), basically a hotel room with nothing but a bed and a window. Meeting up with friends was almost always out in public, except for some movie session every now and then in the room.

I didn't really mind it, but I probably won't ever go below my current 400sqft anytime soon.

</comment></comment><comment><USER42> [2010] should be added to title.

</comment><comment><USER43> det spiller bare</comment>


Failing for Fun and Profit - <AUTHOR> http://gregario.us/2012/06/failing-for-fun-and-profit/

<comment><USER2> Shows a Webfaction error page!</comment>


Brad Feld created a Hacker News-esque site, Startup Revolution - <AUTHOR> http://hub.startuprev.com/

<comment><USER2> Sorry, but no. While the content may be the same, the format is entirely the opposite of what I read HN for. Even given the same quality of discussion and links:

\- The thumbnails add nothing useful

\- Fewer headlines are visible without scrolling

\- Insipid 'social' functions showing me everything going on down the right pane

I read Reddit and HN, but I read them for different reasons. I'm not looking for a Reese's-esque solution, I would like my chocolate and peanut butter decidedly separate.

<comment><USER3> It's answers like this that make me wish for the karma/comment score system to be returned. I 100% agree - the "information density" is just digg-like and, as a result, I'm out. But if I just upvote you, so what? Maybe it floats to the top, maybe it doesn't. Who knows how many people agreed with you? You might get 150 votes but no one will ever know that 150 people agreed with you. And if I was the developer/Brad, I'd want to know that "150 people in my target audience agreed with this" vs. "This is the top commment as voted on by an unknown number of people".

<comment><USER2> Well, I appreciate your upvote ;)

More seriously, I think the tone of the comments on HN is not supposed to be binary: we don't aim for solely critical or supportive feedback. We try to improve things by offering suggestions. That my comment made it to the top means my suggestions were widely viewed as useful, or at least my criticism was accurate.

The magnitude of the negative sentiment isn't really important. It's the fact that, if the creator values HN's input, he should accept suggestions more-or- less from the top down, and weight them appropriately. If he scrolls to the bottom to see some generic 'Good work man, way to hustle', he doesn't really get it, does he?

</comment></comment></comment><comment><USER4> No disrespect to Brad, but just "Brad Feld" in the title as someone everyone should know? I can see that he's an insider and all, I just have never managed to hear much about him.

Should I be familiar with him?

The site looks great, though, although the white-to-pink contrast is pretty bad. The more HN alternatives, the better.

<comment><USER5> His reach is right up there with Fred Wilson IMO. He's a well respected guy in the entrepreneur/investment community. He also always answers his wife's phone calls, even in the middle of talks.

</comment></comment><comment><USER6> I doubt Brad spent much time on this. If you notice, it's powered by "SocialEngine", which got its seed funding from TechStars where Brad is a mentor.

<comment><USER7> HN isn't driven by a product YC or PG sells. To me, that speaks volumes.

SR (gotta refer to it by an acronym you know) is powered by SE. If it could handle HNish load, that would speak volumes about Social Engine, no?

Obviously there's a commercial interest (even if it doesn't drive decisions, it's still there)

</comment></comment><comment><USER8> Good grief that is a hideous website

<comment><USER9> How can we make it better?

<comment><USER10> copy news.ycombinator.com. differentiate yourself (if you want) with content (maybe geo-focused? hn might be comparatively weak on NYC, Boulder, Seattle, Austin content?), and/or add actual features.

It's not like the community even cares about "pretty" design, they want functional design, and HN is approximately as good as it will get. The things to fix about HN are the non-reversible actions, annoying link-timeout due to continuations (hint: don't use Arc, probably...), etc.

</comment></comment></comment><comment><USER9> Hey guys, I'm with SocialEngine - we are helping Brad build this community. First off, want to thank you all for the helpful feedback here.

\- We've toned down the colors. Look better? \- Sounds like you guys feel that the right-side gutter isn't serving a good purpose? Should we just ditch that? \- We are going to tone down the BigDoor plugin.

This is still, at its core, an experiment. It definitely isn't perfect yet - the underlying platform is only 2 months old - so your feedback is really helping us... please keep it coming!

<comment><USER11> As I wrote here (<http://news.ycombinator.com/item?id=4872853>) please fix the issue of enabling the user to edit posts after submission (in a time frame like 1 hour or 1 day). And enable users to delete their own submissions.

</comment></comment><comment><USER12> A superficial issue I'm sure, but the abundance of pink is somewhat offensive to the eyes, a lot of things really need to be toned down.

But content is what matters, and the content seems alright.

<comment><USER13> One of those few situations where color-blindness pays off, I guess.

Thanks, Mom!

</comment></comment><comment><USER14> Found two bugs in the sign up and took me 5 tries to get through the form:

1\. The about me field and uploaded image input reset themselves whenever your form is invalid.

2\. When signing up with Twitter, the form doesn't register that your image is already set via Twitter and forces the user to upload one locally.

<comment><USER11> I was able to sign-up via Twitter without that or any problem.

</comment></comment><comment><USER11> So far Startup Revolution is crap. I was neither able to edit my submission there (title,description) after posting, nor was I able to delete my own submission. And when posting the same link again, it wasn't detected as a duplicate and organized in such a way.

</comment><comment><AUTHOR> For those interested, there's also a post on Tech Cocktail describing Brad's vision for the community:

<http://tech.co/brad-feld-startup-revolution-hub-2012-12>

<comment><USER15> " _The audience is different – I'm focused on entrepreneurs who want to engage in discussions about creating the companies and startup communities, having an awesome life, and exploring better ways to be effective as entrepreneurs," Feld tells Tech Cocktail. "I'm less interested in all the current tech news / issues discussions._ "

Sounds like they are going to concentrate on what I would characterize as fluff stories. I realize those are important to a lot of people, but some day I would really like to discover a friendly hacker community where the focus is on, well, hacking and making things.

</comment></comment><comment><USER16> I'm having a hard time understanding how that website is any different from reddit.com/r/startups. Sure, it looks different, but the content is the same. The reason I visit HN is for the people commenting here, not the actual posts. Even the simplest thread can spark an interesting discussion from physics to business. I fail to see how that site will try to build such atmosphere. The desgin is also too busy, looks like a wordpress blog with one too many plug- ins.

</comment><comment><USER17> This is slightly offtopic but there used to be a clone of Hacker News that someone created. It was HN without all the startup stuff, instead focusing on hardcore technical topics. I lost the bookmark a while ago and have never found it again. If anyone has a link, it will be greatly appreciated!

<comment><USER18> Was it this? <https://lobste.rs/>

<comment><USER19> That's really interesting, thanks. Looks like I'll be frequenting that one.

By the way, the name reminded me of the uploaded lobsters from Stross' Accelerando.

</comment></comment></comment><comment><USER20> No. I hate x ways to do y articles (lists). Hate social media expert-esque posts.

</comment><comment><USER21> I don't know that I would have lead with "Brad Feld" while he's certainly a respected entrepreneur it takes away from the news-esque site that wants me to earn rewards. No thanks.

</comment><comment><USER22> For some odd reason, www.about.me/myusername is not a valid webpage. I'm a bit pissed with the sign up. Third time in a row I can't sign in.

</comment><comment><USER23> Why are there "rewards" and why can't I register?

<comment><USER9> What problem are you having with registration?

</comment></comment><comment><USER24> While I think HN could use some UX improvements, this attempt adds too much noise while adding little value.

<comment><USER25> Also, confusingly (after browsing HN), clicking the link title on the home page brings you to the 'Comments' page (just as clicking '# comments' will). Then, on that page, click the title takes you to the actual article/page.

Not quite what I'm used to.

</comment></comment><comment><USER26> Can't stand that pink for very long :(

</comment><comment><USER27> A "pink" revolution?</comment>


FCC proposes new fees for amateur radio licenses – KB6NU's Ham Radio Blog - <AUTHOR> https://www.kb6nu.com/fcc-proposes-new-fees-for-amateur-radio-licenses/ <comment><USER2> If the lower the GMRS fees maybe another person will get a GMRS license and they have a conversation.</comment>


Florida passes Amendment Four, restoring voting rights to convicted felons - <AUTHOR> https://www.yahoo.com/news/florida-passes-amendment-4-restoring-voting-rights-convicted-felons-020912594.html <comment><USER2> Until recently I had just taken it for granted that it was what we do, but after thinking about it, what's the rationale behind taking away the right to vote when someone is convicted?

<comment><USER3> Because democracy only works when the voters are good. If a large majority of voters were Nazis then a Hitler would be elected. Similarly, I wouldn't want people who are proven to do something criminal to influence who becomes my leader.

<comment><USER4> > Because democracy only works when the voters are good. If a large majority > of voters were Nazis then a Hitler would be elected. Similarly, I wouldn't > want people who are proven to do something criminal to influence who becomes > my leader.

Bringing up Nazis is a little more then ironic in this context. Considering the Nazi's passed laws to remove citizenship and prevent voting for a large portion of their population.

 _On September 15, 1935, at a party rally in Nuremberg, the Nazis announced two new laws that changed who could be a German citizen. The Reich Citizenship Law required that all citizens have German "blood." As a result, Jews and others lost their rights to citizenship, which not only stripped them of the right to vote but also made them stateless. This meant that they could not get a valid passport for travel between countries or acquire a visa to leave Germany._

Allowing everyone to vote is fundamental to democracy.

</comment></comment></comment><comment><USER5> This puts ~1.5 million voters back on the voter rolls in Florida. Will make for an interesting election next time around!</comment>


What do Instant Cake Mixes have to do with Travel Planning Products - <AUTHOR> http://blog.planmy.travel/post/65971193858/what-do-instant-cake-mixes-have-to-do-with-travel

<comment><USER2> ... except that this legend isn't true:

[http://www.snopes.com/business/genius/cakemix.asp](http://www.snopes.com/business/genius/cakemix.asp)</comment>


Aquaponics, a Gardening System Using Fish - <AUTHOR> http://www.nytimes.com/2010/02/18/garden/18aqua.html?8dpc <comment><USER3> The yields he's getting from this system (nearly 350 cherry tomatoes from one plant; 58 cucumbers per plant?) are incredible.

Wonder what kind of square footage you need of this setup to completely assauge the food requirements of one adult (minus, maybe, grains and fruit) - fish, beans and veggies.

Also wondering what it would take to set up something like this on a roof in brooklyn.. Ponderous!

<comment><USER4> The real question is what are the water, energy, and labor hour inputs.

Agricultural scientists and businessmen are no slouches. If this were truly an economical way to feed lots of people it would probably already be widespread.

Most "high yield" methods you hear about, like raised beds and square foot gardening, basically amount to upping the watering.

<comment><USER5> I don't disagree but the FA does say: "In Australia, where gardeners have grappled with droughts for a decade, aquaponics is particularly appealing because it requires 80 to 90 percent less water than traditional growing methods."

<comment><USER4> I didn't imply this in particular is water inefficient, just that it's probably inefficient in some way.

I suppose this system really amounts to scrap food recycling. You're feeding the fish various waste organic material that was already grown on a real farm.

The real question is probably: why not just feed it to pigs or goats, the traditional solution? Older folks tell me it was common for there to be residential garbage pickup, separate from trash. The garbage would be taken to farms.

<comment><USER6> We still have the in-ground iron slop bucket in our backyard. It has been filled with dirt, but the neighbor who has worked in this neighborhood since the 1940s (he's black, so back in the day he couldn't live here, but as a kid he pulled the white ladies' groceries in his wagon for tips), said that the farmers would contract for the slop and pick it up on a regular schedule.

</comment></comment></comment></comment></comment><comment><USER7> This should just link to the guys youtube channel, really neat stuff. <http://www.youtube.com/user/web4deb>

</comment><comment><USER8> Never thought I'd see this on HN.

If you want a better place to check out what I guess you would call "fish hackers" are doing visit:

<http://www.diyaquaponics.com/>

Lots of very cool stuff there. I have no connection with it. Aquaponics has always just fascinated me.

</comment><comment><USER9> So do the fish just eat the plants growing in the tank? Or are they fed human table scraps?

Edit: Feeding habits - Talapia feed primarily on plankton and small organisms living in or on bottom detritus; most common foods in the wild are detritus, algae, diatoms, and plant material. Age and growth - Grow rapidly for first few months, then slow somewhat but ultimately reach 5-6 pounds by age 3-5 yrs; fish weighing 2-4 pounds common; males being larger at each age than females.

</comment><comment><USER10> I think this is a great example of what pg wrote about in "The Power of the Marginal".

Link: <http://www.paulgraham.com/marginal.html>

I aslo like the quote from the article:

"There's alternate ways of growing food," he said. "I don't want to push it down people's throats, but if someone's interested, I'd like to show them you can do this with cheap parts and a little bit of Yankee ingenuity."

</comment><comment><USER11> a little snippet in the article about potentially building residential verticals/blocks with this kind of technology built in. now that would be ... tasty.

</comment><comment><USER12> This is really cool. I wonder if something like this could be used to supply food for space travelers.

<comment><USER13> I wouldn't doubt it; and I'd bet it would also work for apartment buildings. This is incredible -- where do the plants even get the energy to grow 347 cherry tomatoes in a year?

This would be a heck of a lot better for the environment, too, than the mess we've currently made of agriculture -- huge quantities of fertilizer producing algae-laden dead zones in the Caribbean. A flexible government not beholden to farm lobbies would subsidize this immediately.

Grow sugarcane in it, and we'd even have energy independence from Saudi Arabia! :)

<comment><USER14> You can grow a tremendous amount of food in a relatively small space. Square foot gardening is a good example of this (<http://www.squarefootgardening.com/>). The trick is in crop selection - <USER2> you grow things that do well near each other you end up with fantastic yields. The common example is the "3 sisters" method of growing - melons + corn + beans, for example. The melons provide a shade canopy at the soil level, the corn grows tall so it gets enough sun and the beans use the corn stalks as a trellis.

Of course, this isn't a method that scales up at all; machines can't be used in harvesting since you have mixed crops everywhere. Arguably they wouldn't be so necessary for community gardens though.

<comment><USER4> melons -> squash, at least for the traditional meaning.

<comment><USER14> Ah, you're absolutely right - that should say squash, not melons.

</comment></comment></comment></comment></comment><comment><USER15> I hate to always be the person to ask for things, but does anyone have good resources on how to get started with this kind of stuff?

<comment><USER16> From the second page of the article: [http://www.fastonline.org/images/manuals/Aquaculture/Aquapon...](http://www.fastonline.org/images/manuals/Aquaculture/Aquaponic_Information/barrelponics_manual.pdf)</comment></comment>


Grsecurity? Anyone use this? - Linux-Novice So, I've been doing some research and seeing that no OS is immune nowadays to external and internal threats, the only solution is SUID and strict compartmentalization of processes and memory usage. Upon doing some research on how best to achieve an optimal state of balancing functionality with security I found a group of dev's and some serious minded security experts releasing a project under the name of grsecurity. They've been operating for over 15 years now and are the gold standard in security for UNIX based systems. I find it incomprehensible that popular distro's don't include this kernel patch by default in their releases. I'm wondering about your thoughts on this and what can be done to raise awareness of utilizing and possibly funding this research group along with implementing it in popular Linux distro's.<p>Thanks. <comment><AUTHOR> It breaks some executables (like "denied RWX mmap"). Security costs usability in this case. Also it degrades performance.

<comment> Linux-Novice As a Linux-Novice (as the user name suggests), what would you recommend to maximize security? I don't feel like the Ubuntu dev's are focusing enough on security and simply banking or hedging on Windows being the main target for hacking. Ideally, I would want to know how to install grsecurity on a Mint distro and try and configure the settings myself.

Any tips appreciated.</comment></comment>


Machine Learning and Deep Learning Resource - <AUTHOR> https://github.com/ty4z2008/Qix/blob/master/dl.md

<comment><USER2> Is there something in english?</comment>


Show HN: Concurrency-safe file-backed element store in Go - <AUTHOR> https://github.com/sebcat/store

<comment><USER2> I like it, though I think it's likely to create a lot of garbage, what with spawning a goroutine on each Put, I suppose that's probably not an issue for most programs.

I find defer pretty expensive, I don't use them that liberally anymore, only when they're really called for.

Bug: defer fh.Close() without error checking in put(). This can result in data loss. It would also be nice to at least have the option of doing synchronous stores, possibly even with an os.Sync().

<comment><AUTHOR> > I find defer pretty expensive, I don't use them that liberally anymore, only > when they're really called for.

I use defer a lot so I decided to test your statement, and you were right. The testcase is not representative of the functionality in github.com/sebcat/store. here it is: [https://pastie.se/e4352d50](https://pastie.se/e4352d50)

BenchmarkNoDefer 10000000 177 ns/op

BenchmarkDefer 2000000 633 ns/op

ok foo 3.874s

</comment></comment><comment><USER3> What is an element store? An object store?

Unless I'm not understanding the use case, if this is a persistent object cache, defining an interface on each type you want to store sounds like a lot of overhead...

Why not implementing a persistent LRU cache map instead?

<comment><AUTHOR> > Unless I'm not understanding the use case, if this is a persistent object > cache, defining an interface on each type you want to store sounds like a > lot of overhead...

It's one of the things I feel I havn't gotten right yet. I've made a couple of different implementations of this functionality before (stor, elstore on my github profile). Neither of them "feels" good in the way they handle serialization and caching of different types. It comes down to the lack of generics maybe, but at the same time I can't help but thinking that there is a better, more idiomatic go way.

> Why not implementing a persistent LRU cache map instead?

What would be the difference from the current implementation?</comment></comment>