Lying and Procrastinating at Work - <AUTHOR> http://www.fins.com/Finance/Articles/SB126712529900951705/The-Upside-to-Lying-and-Procrastinating-at-Work

<comment><USER2> Everybody lies.

Someone does it better though. If you're a CEO or just some person who manages resources and is responsible for project completion - you will lie!

It's just better that way. Your employee doesn't need to know all the details, so he/she could concentrate on his work and client/employer doesn't need to know all the details so he didn't do any stupid things. Anyway you're responsible for a result, if it includes lying all the way ,then so be it.

<comment><USER3> I agree, everybody lies, it is human. Should it be expected?

Lying is far from the optimal way. When a company structure starts to mimic a hierarchical army structure then lying becomes one of the tools to maintain it.

If instead of having to lie you manage to create complete openness with people you work with and everyone has an interest in the projects success, lying is no longer a useful tool. Being honest with what you want out of something, what you expect from others and understanding what others need from you is a more optimal way to achieve your goals and keep a balance in your life. This requires complete openness, knowing everything about the business, about salaries, deals, expenses, expectations, capabilities. This means treating people like adults who can be informed of anything if they want to. No room for "on a need to know basis". This is hard.

When you feel the need to go to the park on a sunny day instead of compiling that much needed TPS report it is better to go to the park than pretend and lie you are doing the work. Everyone is better off acknowledging we are human and not mechanical beings.

<comment><USER2> >>This means treating people like adults who can be informed of anything if they want to.

This is where everything breaks. Most people are not willing to behave like adults, they lie about their illness, when they simply partied yesterday, every end-developer unwittingly lies about time to complete a task and you have to correct him and so on.

In and ideal world (or in some perfect company) maybe everything works as you described (e.g. complete openness and etc.), but in a real world everybody lies.

<comment><USER3> There are people who never grow up and behave irresponsibly. The first example, people who party and lie about being sick can easily be detected by their peers and removed from the group when their partying stops them from doing their share. If however they pretend to be sick or in any way evade some things at work, but do perform, it is not the worker who is the problem, but something in the way the company operates.

The other example on developers estimates has more to do with people being optimistic in estimates by nature. Another cause is misaligned interests where a developer gets payed the same if he is on time, misses a deadline or does the work before the deadline and gets more work for reward. When the incentive is direct, a customer gets his update on time and pays the next years support fee which in turn gets the developer more money and the developer can connect these, there is no problem with estimates or deadlines. This is ofcourse hard, but doable easily through openness.

It boils down to being surrounded by people you trust. If someone can't be trusted it is a huge waste to manage them. Finding responsible adults is hard, but in the long term brings more value, not just in terms of €€€ but in a better balance between work and life. Life is too short for squeezing productivity from losers.

<comment><USER2> Unfortunately life is to short to wait for a person you can fully trust and then starting your own business.

It is better to start with few people to be honest with and try to squeeze productivity from others than waiting through your life to find a enough good persons to work with. If you don't do nothing you usually do not meet much people and thus have a little chance of meeting someone valuable. But if you do work with what you have, you start getting publicity and more good persons visit your company, and you can pick. Even with that approach you cannot have a company of completely honest employees/partners, because even if you do think so one day, they can be the ones lying and you just didn't find that out yet.

</comment></comment></comment></comment></comment><comment><USER4> The real question is, does lying help lead one into positions of power? Or, as the study more strongly suggests, does power encourage lying?</comment>


Adæpt – Learning complex tools one nudge at a time - <AUTHOR> https://www.gaxun.net/ideas/ad%C3%A6pt/ <comment><AUTHOR> I'm still working on finding my voice in these idea posts. This is the second one and I'm hoping to do at least a few more over the next couple days. Any feedback on the writing style would be amazing.</comment>


Program Verification with F* (2017) - <AUTHOR> http://prosecco.gforge.inria.fr/personal/hritcu/teaching/mpri-jan2017/ <comment><USER2> Is somebody is wondering this is used in Project Everest ([https://project- everest.github.io](https://project-everest.github.io)) to provide a verified end-to-end, high-performance, standards-compliant, formally verified implementation of components in HTTPS ecosystem (including TLS).

</comment><comment><USER3> Looks too much like the best language ever. Please tell us about some of its problems too, not only the good parts.

</comment><comment><USER4> I have read title as [https://duckduckgo.com/?q=F***&t=ffab&atb=v138-4&ia=stock](https://duckduckgo.com/?q=F***&t=ffab&atb=v138-4&ia=stock) . I guess somebody was so disappointed by quality of code that have wrote language to fix that.</comment>


Trump ends DACA - <AUTHOR> http://www.politico.com/story/2017/09/03/trump-dreamers-immigration-daca-immigrants-242301 <comment><USER2> This is racism, pure and simple. The Deferred Action for Childhood Arrivals (DACA) program protected children brought to this country from being punished or having the only livelihood they've ever known taken from them because of their parent's actions.

But what's worse, is that this allows President Trump's administration and Immigrations and Customs Enforcement (ICE) to go down the list of every DACA recipient. All 800,000 or so of them. Their names and addresses are in a registry, and ICE will start knocking on their doors. What will we do with a million (or more) additional detainees? Many of them may not even know their country of origin, many are orphans placed in homes by the federal government. Will we detain them forever? Will we build our own gulags?

As the ACLU fights to protect the rights of immigrants from being abused[1] and ICE retaliates by seeking to purge records of detainee rapes and deaths[2], rest assured, this has the makings of something that looks _a lot_ like what genocides and purges look like in fascist regimes. We have an oppressed minority with limited freedoms, registered by the government, now open to being assailed at their home or work for committing no crime, and the government is seeking to cover up abuses committed against them while denying them legal counsel.

This is sick.

[1] [https://www.aclu.org/blog/immigrants-rights/immigrants- right...](https://www.aclu.org/blog/immigrants-rights/immigrants-rights-and- detention/ice-abusing-aclus-clients-because-they-are)

[2] [http://www.salon.com/2017/08/29/ice-wants-to-destroy- records...](http://www.salon.com/2017/08/29/ice-wants-to-destroy-records-that- show-abuses-and-deaths-of-immigrants-in-custody/)

<comment><USER3> > "This is racism, pure and simple."

No it isn't. This is immigration policy, pure and simple, but I'd wouldn't call this racism, that'd be a bit hyperbolic.

<comment><USER4> Bullshit.

Donald Trump and Jeff Sessions are racists, and their decision to put the lives of 800,000 people at risk is indeed racist.

You can call it "immigration policy" if it makes you feel better.

<comment><USER3> How exactly is it racist, care to elaborate?</comment></comment></comment></comment>


Show HN: Stripe SaaS-analytics bot for Slack - <AUTHOR> https://revealytics.com/slack <comment><USER2> This looks really cool, but this looks like it raises the same issues as some other Slack analytics integrations I've seen. Namely, if you have guest users in your corporate Slack (even if just relegated to specific channels), I've been told that Slack's permissioning via their API is pretty limited to the point where I'm guessing any Slack guest could use this service and gain access to sensitive info.

Not a dig against you per se, and companies with guests in their Slack may not be the target audience. I'm more just hoping for a solution to this so that the mere fact that we have Slack guests doesn't block us from using cool services like these.

<comment><USER3> From what I remember, you can give a slack integration "write only" access to a room which should alleviate some of that concern. If it can't read any content there isn't much to worry about.

</comment></comment><comment><AUTHOR> Guys, please check out our brand new Stripe SaaS metrics Slack Bot on ProductHunt today :) Thanks! [https://www.producthunt.com/search?q=revealytics](https://www.producthunt.com/search?q=revealytics)

</comment><comment><USER4> Guys, it is cool thing

<comment><AUTHOR> Thanks!</comment></comment>


Novel written by a Japanese AI bot passes first round of national literary prize - <AUTHOR> http://www.digitaltrends.com/cool-tech/japanese-ai-writes-novel-passes-first-round-nationanl-literary-prize/ <comment><USER2> This sounds more like an author developing brain-storming tools than like a bot writing a short story.</comment>


The Genetic Algorithm Explained - <AUTHOR> http://techeffigytutorials.blogspot.com/2015/02/the-genetic-algorithm-explained.html <comment><USER2> It's nice to see an article about GA, I've been working on them myself recently, fascinating stuff.

However the definition of Tournament Selection[1] is a little bit off. With tournament selection you don't take the fittest "k" individuals but you take a subset of "k" individuals at random and then apply proportionate selection.

[1] [http://en.wikipedia.org/wiki/Tournament_selection](http://en.wikipedia.org/wiki/Tournament_selection)

<comment><USER3> An important distinction. A lot of implementation bugs I saw when researching GA/GP were related to this slight misunderstanding.

<comment><USER4> Tournament Selection in Genetic Programming is predominantly:

1\. Choose n individuals at random. 2\. Return the individual with best fitness in that set.

i.e. no proportional selection within that set.

</comment></comment></comment><comment><USER5> For those interested, here is Jori Liesenborgs' thesis, "Genetic algorithms for the non-parametric inversion of gravitational lenses".

[http://research.edm.uhasselt.be/jori/phd/phdthesis_jori_web....](http://research.edm.uhasselt.be/jori/phd/phdthesis_jori_web.pdf)

</comment><comment><USER6> I have always heard that a focused gradient descent outperforms genetic algorithms in every application domain.

<comment><USER7> That is absurd. Gradient descent assumes you can compute the gradient of your objective function. For a great many functions you cannot define the gradient: indeed you can't even define the objective function well.

Genetic algorithms belong to a family of _metaheuristics_ , algorithms designed to tackle such ill-defined functions where gradient descent is simply impossible to use.

My concern with this webpage is that it is a _far_ too simplistic treatment of genetic algorithms, to the point of being misleading, and has quite a number of outright errors. I wouldn't use it.

<comment><USER8> Totally obsurd. Gradient descent will 'almost' always get stuck in a local optima. The point of evolutionary algorithms, or any naturally inspired algorithm for that matter, is that it does not tend to converge upon local optima and has the possibility of moving out of this space towards the global optima. The fact that most problems it is applied to are NP-Complete means that it is unlikely it will find the optimal solution in polynomial time.

<comment><USER7> > Totally obsurd. Gradient descent will 'almost' always get stuck in a local > optima

Well... just as evolutionary algorithms are essentially elaborate versions of hill-climbing which enable global search, likewise there are many well- established forms of gradient descent which are global searchers as well.

I think the key distinguishing feature is that gradient descent makes strong assumptions about the nature of the space being searched; and metaheuristics make much more general assumptions.

<comment><USER9> Good point. This is key, as you say.

Meta-heuristics have the flexibility of providing good performance on all Combinatorial Optimisation Problems.

But meta-heuristics, can also be given domain knowledge. and/or be combined with a a heuristic. E.g. Ant Colony Optimisation techniques for Travelling Salesman Problems that combines ACO with Local Search.

</comment></comment></comment></comment></comment><comment><USER10> A couple more points. Depending on how diverse the population is, a high mutation rate may not help when selecting the fittest children. There is also a chance that you will find a local maxima, and not the best solution overall. Introducing a concept of multiple "species" to the population will sometimes help finding other solutions outside the local maxima, but then this complicates the crossover phase. If the "genes" are of equal length and therefore closely related species, you may be able to generate some offspring in the crossover phase, but then you are usually introducing another species at that time. Depending on the solution you are trying to find, this may or may not be appropriate.

</comment><comment><USER11> I wrote a toy program that takes a source string and uses a genetic algorithm to transform it into a target string. It only took about an hour and was a fun process. I ended up adding in different types of crossover and trying to figure out which would solve it in the fewest generations on average. Fun stuff. Highly recommend it as a quick project for anyone.

</comment><comment><USER12> My favorite genetic algorithm implementation, [http://boxcar2d.com/](http://boxcar2d.com/)</comment>


We Need a New Username System - <AUTHOR> http://venturebeat.com/2016/04/02/we-need-a-new-username-system/ <comment><USER2> Blizzard's Battle.net has an interesting naming system which a few others have adapted.

You can pick any username you want. But the username is appended with a pound sign and a 4 digit number. (for example, my Battletag is minimaxir#1667)

Everyone wins the branding wars. Presumably, there aren't 10,000 people who want the same name.

<comment><USER3> And what's the practical difference between minimaxir#1667 and minimaxir1667, other than there's no "minimaxir" with no numbers?

<comment><USER2> Numbers _are_ allowed in the username ([https://us.battle.net/support/en/article/700007](https://us.battle.net/support/en/article/700007)) so using a pound as a delimiter is necessary to separate numbers at the end of a Battletag and the unique identifier.

</comment></comment></comment><comment><USER4> Like all things in life the username scarcity problem can be solved with gamification. Initially all users are assigned a unique number as their username. By reaching various predefined goals users can earn new characters to use in their username. For simplicity's sake I'll restrict my examples to ASCII characters. Made your first 20 comments? You've earned a random character. It'll be like opening a pack of Magic cards. Will you get a highly desirable 'e' or much less useful 'Z'? Created your first 3 posts? Get another random character!

You'll be able to trade your characters with other users. You need a 'Y' to form "YoloSwaggins", so you trade your desirable 'e' for a 'Y' and a 'g' (you need 2 'g's). You can also sell characters you have no need of or buy ones that you want, all through the website's online marketplace that takes a modest cut for themselves of course.

You can't just change your username at any time though. Each character change requires a special character change token that has a small chance of dropping with each achievement. Or you can buy character change tokens in packs of 3 from the online shop.

<comment><USER5> Have you considered that this introduces a huge amount of complexity to a practically trivial issue?

</comment></comment><comment><USER6> Slow day on HN I guess?

Instagram isn't one of the offenders, like you say. Usernames can be changed at will and logins are done through email.

I regularly change my username to a beer-pun when I've had enough of the current one.

I also don't really like your gamification grand plan. Names are too common for that to work. You'd be in the same position you were in before with a name like "Adam" because you'd be competing with "Adam Sandler" for example and he'll whoop your ass on "most pins/tweets/likes/friends/wins".

<comment><USER7> But that's exactly the point -- it makes a lot more sense for someone like "Adam Sandler" to have "Adam", rather than someone less popular. So it's not at all the position you were in before -- this is the whole improvement!

<comment><USER8> What if there's a more popular Adam than Adam Sandler? And does this mean I need to reserve the name "Adam" on my service, so that one day when Adam Sandler comes along, he'll be able to get the name I assumed he wants?

</comment></comment></comment><comment><USER9> A "username" should be a uuid. The user should be able to put a string of their chosing next to it (an alias, real name, etc), and a service like gravatar can be used to distinguish between users who have the same string.

<comment><USER10> Right? Lets look at mature-er systems like Linked-In. There's plenty of "John Smith" or "Jane Kim", but they're all represented as different people. No stress, ugh.

<comment><USER2> LinkedIn allows users to choose a username for a unique link to their profile (e.g. [https://linkedin.com/in/minimaxir](https://linkedin.com/in/minimaxir) ), which is subject to the same rules as normal usernames.

<comment><USER10> True. And that username is not in the main pipe for searching.

</comment></comment></comment></comment><comment><USER11> Each service is the sole owner of their own namespace.

If you want to solve this, go distributed and own your own namespace.

Instead of ${walledgarden}, run your own GNU social instance and federate.

</comment><comment><USER8> The "minimum length" idea is sort of interesting. But is this _really_ an issue? Many early Twitter users with one-letter names still use the service. Not all early adopters want a "one night stand" with your product -- many want to _adopt it early_. Also names aren't universally unique, and this often causes people to get more creative with their handles, which I think is a good thing.

I've been building a no-sign-up product, and now I'm getting ready to launch accounts. So recently I let existing users reserve their usernames in exchange for some feedback on the product thus far. I got some great feedback, and now they get an awesome permanent URL on the web. They deserve it, because without the early adopters, there are no _late_ adopters.

</comment><comment><USER12> I recently bought a domain name under one of the newer TLDs. I hadn't really paid much attention to how these work, but the registry is Donuts and they seem to be using some kind of market-based pricing scheme. As a result the names I wanted were available on namecheap.com, they cost significantly more than what a .com or .org would have cost, but were not unaffordable. That seems to be working to diminish squatters, since it's too expensive to buy a bunch of names and then hope you can resell them.

</comment><comment><USER13> I feel like icq got this right, no one had a name, just an identifier of n digits. If we all used some central service that provides ids, user profiles could be linked between services.

<comment><USER14> Because numbers are impersonal and the shorter and "nicer" they are, the easier they are to remember, market for short ICQ numbers was huge and phishing and hacking for these went rampant.

It was a terrible system, the worst, really.

Usernames aren't a problem, discoverability is. Vanity IDs aren't a problem as well, but an opportunity and they are being sold either for money (registered trademarks, "lucky" phone numbers, short or custom license plates) or engagement (Facebook's vanity URLs for pages).

Vanity id shouldn't affect discoverability and it really doesn't these days. Do Nimble CRM's customers have confusion by @nimble on Pinterest being taken by the Author? Don't think so. pornhub.com ha more traffic than sex.com and doesn't seem to be bothered.

</comment></comment><comment><USER15> All the solutions he mentions (including the Blizzard system) is just a more complicated first-come-first-claimed. Gamification to get a shorter name, is the same system with a slightly more complicated process of the registration after-first-registration. Blizzards idea that you always see the username and not the uid identifier is probably as human-friendly as it can get.

</comment><comment><USER16> It's surprising that the solution of simply sharing usernames between websites wasn't mentioned, so that everyone only has to get their preferred username once -- something like [https://onename.com/](https://onename.com/).

<comment><USER17> And if different sites have different people with the same username?

For example, on various gaming sites I use, there are different longstanding members with the username 'Mario'. So who gets it with that sort of system?

How about two companies with the same name in different fields? Apple computer vs Apple records?

<comment><USER16> There'd be conflict over usernames, but the conflict would only happen once ever, instead of happening once on every new site someone wants to sign up on.

</comment></comment></comment><comment><USER18> "First-come, first-served originated with domain name registrations" \- what!? That's not even wrong, so far as I can tell - it is an answer for some entirely different question. Perhaps this author does not understand that usernames existed long before the Internet did?

</comment><comment><USER19> The proposed policy of shorter username requires more investment (time and activity) strikes me as being somewhat like the amateur radio handle scheme: the shorter (and more desirable, especially for morse code) handles require a higher license class.

</comment><comment><USER20> Why would I take advice on naming from someone who wrote (twice!) that names are subject to copyright? And even if I did, why would I take legal advice from this person?!</comment>


OpenStarts looking for non-technical cofounder - <AUTHOR>

OpenStarts.com is looking for a business development cofounder role.  No experience necessary, just drive.  Email: email@example.com <comment><AUTHOR> Clickable link: <http://www.openstarts.com></comment>


Is jsdelivr cheating on requests served number? - <AUTHOR> https://www.jsdelivr.com/?docs=wp <comment><AUTHOR> in the page, there is one section show the requests served since user opened the page. the number seems dynamic updated, while when check the network in developer console, there is no requests was fired to get the data. Have any idea?</comment>


Today we released the 1.0.0 version of django-background-tasks - <AUTHOR>

Today we released the 1.0.0 version of [django-background-tasks](https://pypi.python.org/pypi/django-background-tasks) which is an adopted and adapted version of the outdated and unmaintained [django-background-task](https://pypi.python.org/pypi/django-background-task) repository from John Montgomery.
To avoid conflicts on PyPI we renamed the package to django-background-tasks (plural). For an easy upgrade/migration from django-background-task to django-background-tasks, the internal module structure were extened but the API left untouched.
The new package has a full Django compatibility from version 1.4 LTS up to the new 1.8 LTS (Python 2 + 3) through [django-compat](https://github.com/arteria/django-compat).
All relevant Pull Requests from the original repo where merged and new features added.
Please feel free to file any issues on the [Github project page](https://github.com/arteria/django-background-tasks) or contribute in any other way. <comment><USER2> [https://github.com/lilspikey/django-background- task/issues/1...](https://github.com/lilspikey/django-background- task/issues/13)

<comment><USER3> I see a communication glitch happened. There was a mention of creating a new organization and an offer to join, but the issue was closed simultaneously - meaning perhaps you never saw it. This seems like a surprise to you.

@philippeowagner: I think it'd be appropriate to see you both share and organization if you both intend to participate. If I was lilspikey, I'd _feel_ my project was hijacked.

I assume good faith in you Philippe, but I don't think lilspikey knew your intentions since the issue was closed.

</comment></comment><comment><USER2> Hey - outdated and unmaintained seems a little harsh!

Not quite sure why you couldn't have submitted a pull-request for this...</comment>


The Distance using Haversine Formula - <AUTHOR> http://blog.ksetyadi.com/2012/09/the-distance-using-haversine-formula/

<comment><USER2> The general topic here is Calculus of Variations, and the question is: what is the shortest distance between two points on a surface.</comment>


Did your mother influence your entrepreneurial spirit? - <AUTHOR>

<comment><USER2> Absolutely.

My mom opened a furniture store when I was about 10, and gave me my first paying job. Seeing her work for herself, successfully, for years, gave me the stubborn will to be an entrepreneur I have today. (She's not the only entrepreneur in my family...my dad had an electronics shop, my dads mom owned a thrift store, and my moms dad owned an auto body shop.)

Entrepreneurialism is seemingly either genetic or picked up from parents, because my sister also owns her own business, and I'm on my second (or third, if you count my computer repair business when I was in middle and high school).

I think it was my dads idea to make me earn half of any major purchase (like bikes, guitars, computers, etc.), which I suspect was also instrumental in my becoming an entrepreneur.

</comment><comment><AUTHOR> Just read this post from Guy Kawasaki:

<http://blog.guykawasaki.com/2007/05/just_in_time_fo.html>

It got me thinking about my mother and the sacrifices she made in bearing us and bringing us up. Looking back, I definitely can see how she influenced me and helped give me the confidence to seek adventure and take risks.

For example, one time I decided to experiment with cooking and decided to make a dish concocted of orange-wedges, cheese, lemon juice, and some other random ingredients. My dad was concerned that I would waste the food (he was right) but my mother insisted that I be able to try it out for myself. It was the most disgusting food ever! I tried to eat as much of it as I could, but it was a good lesson that cheese and oranges aren't a great combination!

As I look back, I can remember countless examples of her encouragement to pursue new ventures (even when it was obvious I would fail). I can't recall her ever expressing doubt that I would succeed. And I guess she was right if you look at failure as a success in learning.

Anyway, thanks Mama! Happy Mother's Day!

</comment><comment><USER3> Yes, she's still bitchin' most of the time. ;)

One of the reasons I keep holding on is to proof her wrong. When I started my first business (working on my second now) she disapproved it from before I even started: "it won't work", "it will only cost you money"... When I finally did start (with some help from my (now-ex-)girlfriend who motivated me a lot) she was all like "Yeah, you can do it". She seems to be like that: supporting me when it's "too late". Like those kind of friends you never see, until you suddenly have money.

My dad on the other hand, .. Well, he can be a critic too, but he can set me back on track sometimes and gives me advice.

So yes, she did influence it (still does), but not in the way you probably meant.

</comment><comment><USER4> Richard Branson talks alot about how his mother influenced him in his biograhy - "Loosing my Virginity"

</comment><comment><USER5> I'm sure she influenced it -- she's a great mum (NZ spelling). But when I was growing up, Dad was always the I-have-a-brilliant-idea person.</comment>


Crypto prices suffer as Korean government announces new regs, potential ban - <AUTHOR> https://techcrunch.com/2017/12/28/korean-government-crypto-prices/ <comment><USER2> For crying out loud the prices are _higher_ than they were a few days ago when everyone freaked out about the "Bitcoin crash."

The media is really doing cryptocurrencies a disservice by reporting on every up and down of their _prices_ , especially when it's the "tech media" doing it, and not say stock-related media. Not to mention sites like TechCrunch basically have little clue about what is going on so they don't always report accurately what happened or what will happen.

I've also always said that I don't think price-related stories belong on HN. If the price skyrockets, then everyone who has invested in the cryptocurrencye just wants the stories to be seen as much as possible here and everywhere else, so the price can rise even further. If the price crashes, then everyone who has said that "Bitcoin is like the tulip mania" wants to show everyone else how "right they were" because "Bitcoin is finally crashing." (spoiler: so far, it's usually been proven they weren't right a few months later).

Anyway, I guess what I'm trying to say is that 99% of the price-related stories are either _hype_ or _FUD_ and they are _worthless_ in essence.</comment>


Head of U.S. cyber agency resigns suddenly - <AUTHOR> http://www.reuters.com/article/2011/07/25/us-usa-security-cyber-idUSTRE76O5RH20110725

<comment><USER2> The press release statements from DHS were bizarre. Is it my imagination, or does the DHS combine the worst traits of a government agency, and a giant corporation? It manages to be banally evil, slow-moving, self-protective and incomprehensibly verbose.</comment>


Rise of the yimbys: the angry millennials with a radical housing solution - <AUTHOR> https://www.theguardian.com/cities/2017/oct/02/rise-of-the-yimbys-angry-millennials-radical-housing-solution <comment> some-guy Slightly-off topic rant, but as a Bay Area millennial in the tech industry, I find it completely preposterous just how much even us with six-figure salaries are _willing to spend_ for the opportunity to live above their favorite brunch spot in the Mission District.

A lot of fresh grads in the industry think that spending 50-70% of their net income on rent is a completely reasonable thing to do. Though my observations are unscientific, plenty of my friends are living paycheck to paycheck, eating out all the time, constantly travelling, _by choice_ because their friends are doing the same. They don't want to take the extra 15 minutes on a train to visit their friends by living in a more affordable area. When I lived in Oakland for instance, my friends in SF would almost never visit me because it was just a bit too far even though I'm walking distance from the Oakland City Center BART station.

This insatiable desire for young techies to spend a stupid amount of their money to be part of this elite club is astounding.

<comment><USER2> I mean, first it was Noe Valley... SF is gentrifying. The Mission isn't necessarily immune to this. People will be pushed out East down the Bart lines. Also I'm surprised East Palo Alto hasn't gentrified completely.

<comment><USER3>
      Also I'm surprised East Palo Alto hasn't gentrified

I don't think parents want to be in the Ravenswood school district, for one.

<comment><USER2> You can do an inter district transfer, Zuckerberg and Chan have some initiatives going and I believe the high school kids go to me li-atherton.

</comment></comment></comment></comment><comment><USER4> This scheme is doomed to fail. 51% of the people will vote for rising house prices because that's their greatest asset. When highly geared property doubles in value, the owners can make 5 or 10 times their initial investment. They don't think about the other 49% of the people -- that's the result of governments chosen by democracy. And to make the prices go up, boost the demand and restrict the supply. So governments bring in long-term visitors to boost the demand: immigrants, international students whose parents buy apartments for them, and guest workers to rent the houses. But governments, especially local ones, also restrict the supply: many regulations to slow down new development, rules against long-term hotel stays, and crackdowns on campervan living in urban areas. The people fighting the yimbies have cash flows and retirement nest eggs to protect, and that's the main decider on which way they vote. The yimbies are fighting a losing battle.

<comment><USER5> > This scheme is doomed to fail. 51% of the people will vote for rising house > prices because that's their greatest asset. When highly geared property > doubles in value, the owners can make 5 or 10 times their initial > investment.

You are correct that people think like that. But it is nearsighted because even if the price of your home goes up, you cannot sell it because you need a place to live. It is a lose/lose. It takes away a significant part of purchasing power. Money that could be spent on shopping, entertainment, etc is used to pay the mortgage. Younger people are even more screwed, it is a tax from the young to the old.

<comment><USER6> > But it is nearsighted because even if the price of your home goes up, you > cannot sell it because you need a place to live. It is a lose/lose. It takes > away a significant part of purchasing power. Money that could be spent on > shopping, entertainment, etc is used to pay the mortgage.

It is forced savings for retirement. Most people downsize once their kids leave home, cashing out their equity (as long as you haven't cash out refi'd your home to buy cars and vacations).

<comment><USER7> _> Most people downsize once their kids leave home_

Except you can't do that in California, because then you're walking away from your Prop 13 "rent-controlled" property taxes.

</comment></comment></comment></comment><comment><USER8> In Mountain View, home to Google, there are over 2000 luxury apartments and condos under construction. The situation is similar in several other Silicon Valley cities. This is a huge increase in apartment construction since 2010.

It is a similar pattern to San Francisco and other big cities mentioned in the Guardian article. The new construction is aimed toward generally young, generally single, tech workers at Google, Apple, Facebook and other employers within easy commuting distance of Mountain View. Many existing apartments have remodeled and boosted rents, effectively evicting many people with lower paying jobs. There is minimal construction of apartments for lower paid folks.

Google has the political clout in Mountain View to get more apartments for its tech employees despite the NIMBYs. Rental costs are a major negative for Google since the high cost means California tech salaries are actually among the lowest in USA adjusting for local cost of living. The disparity with the Plano Texas region (so-called Telecom Corridor) is astonishing.

People with lower incomes who are disproportionately Hispanic in California don't have a powerful force like Google to stand up for them.

There was a rent control measure (Measure V) passed in Mountain View about one year ago and remarkably actually enforced despite legal challenges.

[https://mvtenantscoalition.org](https://mvtenantscoalition.org)

<comment><AUTHOR> More units, even luxury units, are good for everyone, even lower income people. The people trying to advocate for lower-income people by blocking housing are making it worse for the very people they're trying to help!

<comment><USER8> That is not necessarily true. Under some circumstances it can be true. For example, if a community builds more luxury apartments entirely in addition to existing apartments, then yes some well paid people will probably move out of the existing apartments into the new luxury ones, making apartments available to the lower paid.

However, if inexpensive apartments are either bulldozed or remodeled to become luxury apartments, eliminating inexpensive options for the lower paid. That has been happening in Mountain View and probably in San Francisco which the Guardian article directly discusses.

<comment><AUTHOR> That is not "more units."

</comment></comment></comment></comment><comment><USER9> i agree in principle to the yimby movement, but i don't agree with some of the antagonism described in the article against the mission's latino population.

isn't there a compromise to be reached between the two groups?

latinos want to stay in the neighborhood but can't afford $4K rents (who really can? or should? $48K in rent, yikes!). yimbys want more units. so give developers a sweetner so they can be profitable but also build more affordable units. i know it's harder than it sounds, but it's been done many times before, so it's achieveable. but when it starts becoming us-vs-them, that just makes it so much harder.

<comment><AUTHOR> The fundamental disconnect is there's a (large) group of people that think building expensive housing is bad for the housing crisis. This is 180 degrees wrong: what's needed to solve the affordability crisis are more units.

Below market rate units ("affordable" units) are by definition always in short supply.

</comment></comment><comment><USER10> Sounds more like YIYBYs to me. Doesn't have the same ring to it tho.

<comment><USER11> Fair point, I had that thought myself.

If you'd permit me to add another couple letters, though, I might call them YIMAYBY (yes in my and your backyard).

</comment></comment><comment><USER12> Finally, someone gets it. People are finally starting to see the light. This is encouraging.</comment>


Infographic – How to create a mobile app? - <AUTHOR> http://blog.venturepact.com/how-to-create-a-great-mobile-app-infographic/

<comment><USER2> 'hire someone' XD

still some valuable info for idea guys, but link has little to do with 'how to create a mobile app'</comment>


Doom on the Commodore VIC-20 - <AUTHOR> https://github.com/Kweepa/vicdoom

<comment><USER2> I think this is a video of it: <http://www.youtube.com/watch?v=Y7h3H-_8N_o>

If that really is vic-20 hardware... that's amazing!

<comment><USER3> I think the biggest constraint on a vic-20 would have been memory. The apple II had the same CPU with some fairly impressive 3D-esque games.

<http://www.youtube.com/watch?v=aQLFwUu5cTY>

...but yeah, I actually knew someone with a VIC-20 and the software for it was truly abysmal even at the time.

<comment><USER4> The Vic20 had some really good software. I still remember Gorf on it. I had a skiing game that was quite impressive for a game that used less than 3.5KB of RAM (yes that is 3.5 kilobytes).

<comment><USER5> I think the first electronic circuit I ever designed from scratch was an in- line "autofire box" for my VIC-20 joystick so I could kill at Gorf ;)

</comment></comment></comment></comment><comment><USER6> More VIC-20 coolness: Anything by Viznut/PWP. Check out one of the demos, keeping in mind this runs on unexpanded hardware with less than 4KB of _RAM_ : <http://www.youtube.com/watch?v=OaFPU6oRXJ8>

Some interesting write-ups about VIC-20 oddity exploited by the demoscene:

[http://www.zimmers.net/anonftp/pub/cbm/vic20/programming/vic...](http://www.zimmers.net/anonftp/pub/cbm/vic20/programming/vic20frontiers.txt)

<http://www.pelulamu.net/pwp/vic20/waveforms.txt>

<comment><USER7> Wow. The vic-20 was my first computer, and I did not think tht was possible on it. At the time I remember thinking I should have asked for a Spectrum instead but I didn't think my parents would take it seriously :-)

<comment><USER8> Check out: <https://www.youtube.com/watch?v=2SdGkkp1aq8>

(h/t Nate Lawson, who sent this to me last night).

</comment></comment></comment><comment><USER8> I would happily read a whole book about what went into this.

<comment><AUTHOR> Me, too. Maybe Fabien Sanglard can do a code review of it? I love his blog for that.

</comment></comment><comment><USER9> I had a VIC-20 back in the day and I never thought something like this would be available on that type of machine. It was soooo limited, even compared to most of its peers at the time. It was also cheap, that's why I could afford one on a paperboy's salary. :)

Later I upgraded to a C-64 and was blown away by how much better everything was. This VIC-20 project makes me wonder how much a C-64 would be capable of today with modern software tools and methodologies and dedication. I'm betting you could approach Amiga 500 territory with it.

<comment><USER10> The C64 has constantly been pushed and this his how demos look today: <http://www.youtube.com/watch?v=SGJ1Mpqp94w> <http://www.youtube.com/watch?v=bzvMYE3PUn4>

I recommend all the demos from Oxyron and Booze Design.

</comment></comment><comment><USER11> Vic-20 wow...those graphics are mind-blowing. I have some great memories of the random sentence generator, filled with every bad word several twelve-year- olds could think up. Good times. ;)

</comment><comment><USER12> Doesn't this feel more like Castle Wolfenstein than Doom?

</comment><comment><USER13> Wow, DOOM! I had some nice memories to talk about: where as a newbie, I found a way to beat gurus and chased after them in deathmatches. Maybe a blog post in the weekend.

</comment><comment><USER14> wow! long time has been passed from this :_)</comment>


MMO xkcd WebSockets fixed by PubNub - <AUTHOR> http://www.pubnub.com/static/pubnub-xkcd/index.html Hello all hackers from HackerNews.  We notice a new MMO was released by n01se and xkcd yesterday (September 26th, 2012) with multiple users flying around with a balloon figure.  If you got stuck, you can click your balloon guy and turn into a ghost to seamlessly move through the landscape unhindered by mortal barriers like trees and hills.   There was a problem however with the scaling of users on the system.  The max concurrency could only be 20 users at a time leaving many wonder where the MMO part of the MMO was.  We ripped out the non-scaling Node.JS code.  ENJOY.<p>Enter the xkcd World with Friends: http://www.pubnub.com/static/pubnub-xkcd/index.html <comment><AUTHOR> Hello all hackers from HackerNews. We notice a new MMO was released by n01se and xkcd yesterday (September 26th, 2012) with multiple users flying around with a balloon figure. If you got stuck, you can click your balloon guy and turn into a ghost to seamlessly move through the landscape unhindered by mortal barriers like trees and hills. There was a problem however with the scaling of users on the system. The max concurrency could only be 20 users at a time leaving many wonder where the MMO part of the MMO was. We ripped out the non-scaling Node.JS code. ENJOY.

Enter the xkcd World with Friends: <http://www.pubnub.com/static/pubnub- xkcd/index.html>

<comment><USER2> Any reason you copied the files manually instead of forking on github? The link to <https://github.com/n01se/1110> was right there on the main page.

<comment><AUTHOR> Hi Chris! We ment to fork it. Just forgot. We included the link on our README.md, Game Page itself and the blog.

</comment></comment></comment><comment><USER3> Neat and your service looks interesting, but I don't call this 'fixed' yet. It did not seem to scale well.

Everyone is spawning at the same point. I just see a flood of dead users. Some jerk around a little and appear and disappear. But very little interaction.

Is it possible to multiple spawn points when demand is high and separate channels/servers for various areas that you switch as you move? (like Second Life)

I believe a node.js (or something else) version could be federated, and/or clients connect to various servers as they travel.

I know this is just a toy, but it would be interesting to see this work well at a large scale.

<comment><AUTHOR> Hi JTxt. Good points regarding the fix. In fact the system is scaling great and you can see a lot of people on the screen. The issue is in drawing that number of players on the client computer. We have improved the source code just a moment ago and now you can see disconnected users in a stopped state and live users are actively moving around. It was wonderful to see this earlier this morning with about 2K active live users all in the same world. Updates have been posted. Enjoy.

<comment><USER4> Actually, I've done some analysis of the stream of messages and it appears the current problem is that the vast majority of messages never arrive (even as of 7:30am CST). You can verify this easily by connecting with two browser windows. The first time I tried it took almost 30 seconds before my second tab even saw my other character even though I was moving both around. And the name in the second tab was never updated even after a minute.

The second time I tried, my first player window saw the other player fairly quickly, but it never registered the change to a ghost or my name change and it just showed the second player as a balloon guy floating up forever (even after the second client window disconnected).

I did this testing at 7:30am CST. There were about 90 other players that I was getting updates from. However, this is the same type of behavior I've seen whenever I have connected since it went live. And friends in other locations see the same behavior so it's not just my environment.

</comment></comment></comment><comment><USER4> I think your service is having some trouble. The updates appear fairly smooth because the client continues rendering the last vector seen for each avatar. However, when comparing with several friends also connected it's clear that very few of the messages are getting through and sometimes only in one direction.

Also the dynamic poll/sample interval you implemented seems to hit 1000ms (1 second) and stay there.

<comment><AUTHOR> Hi Kanaka! Good question regarding sample rate. We auto-scaled the sample rate based on number of occupants. It is currently at 1000ms top peak because there are so many of you! If there were only a few, it would go to 50ms.

<comment><USER3> Is it possible to divide the world into multiple channels?

So I only see updates from those in my area. Then change channels as you move?

And start users in different spawn points when usage is high?

<comment><AUTHOR> Hi JTxt! Yes this is possible! Just update the channel value in this line here from "/xkcd" to "/whatever_you_want" and you can take on new parallel worlds. The source code is here that you need to change: [https://github.com/pubnub/pubnub- xkcd/blob/master/network.js...](https://github.com/pubnub/pubnub- xkcd/blob/master/network.js#L4)

<comment><USER3> Thanks for responding!

I'm talking about dividing the map into multiple channels so that users only receives updates from those around them, and hopefully make it more responsive.

So for 1000x1000 areas, if I'm at "x":3033521.3,"y":-3025356.4, my client subscribes to /xkcd_x3033_y-3025

And adjoining area/channels if they're close to a border. (but only sends updates to the current area/channel.)

...IF it's easy enough for the client to dynamically change channels, and be subscribed to multiple (up to 4) channels.

Then combine this with multiple spawn locations at other interesting locations when demand is high. But they can still explore and meet others.

So it should more responsive and less data sent than everyone getting updates from everyone.

<comment><AUTHOR> Hi JTxt, This is a fantastic idea for resource saving. Also streaming all the data to the clients, while possible with PubNub slows down the clients as they are busy downloading the streams from all player movements on the screen. Would you be able to work with us and coordinate a way to work this? Here is the starting line to segregate channel data - [https://github.com/pubnub/pubnub- xkcd/blob/master/network.js...](https://github.com/pubnub/pubnub- xkcd/blob/master/network.js#L4) see the "xkcd2" at the end. This is the CHANNEL ID. You can take that and change it based on the Region of the world. You can even use the names of the world splices such as <http://www.pubnub.com/static/pubnub-xkcd/images/1n1e.png> \- 1n1e "1 north 1 east". So the channel name would be "1n1e".

<comment><USER3> Sure, I'll try to play with it this weekend. I'll have some questions for you if I can work on this. Thanks!

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> Great use of a marketing opportunity. This actually runs very smoothly. Well done!

<comment><USER6> Agreed. It would be nice to see running charts or stats showing # of users online, average messages/second, and average $/hr at $1 per 1M rate.

<comment><USER4> For our original server, after the first full day after the HN post, we racked up an AWS bill of about $1.62. Most of that was in the first few minutes after the announcement before we implemented the user cap.

From earlier today for about 20 hours of run time: we had 13,000 successful connections to the server, 22,000 failed attempts to connect. The server is averaging about 100k per second outbound when fully loaded with 20 clients. With the quick improvements we made after the HN flood we got the CPU down to about 1-5% on a t1.micro when 20 clients are connected and interacting. The real issue for us is the bandwidth.

The server and protocol could be MUCH more efficient (visibility pruning, binary messages, etc). But it was something chouser and I hacked up over the weekend and it's now working quite well within the cap.

<comment><USER6> Your stats are inline with what I expected. Thanks.

What I was actually interested in was PubNub stats to see how such service can help with apps like yours and to help in figuring out how much it'll cost.

</comment></comment></comment></comment><comment><USER7> I like this a lot. But I wish it had some physics added to it. Maybe that will be my fork.

</comment><comment><USER8> I'm running Chrome yet it's still long-polling instead of using websockets.

Why?

<comment><AUTHOR> We fixed using a reliable transport communication which Bundles, Compresses and Delivers the data more efficiently. Check it out! <https://github.com/pubnub/pubnub-api/tree/master/websocket> \- PubNub WebSocket Emulation PubNub offers full RFC 6455 Support for WebSocket Client Specification. PubNub WebSockets enables any browser (modern or not) to support the HTML5 WebSocket standard APIs. Use the WebSocket Client Directly in your Browser that Now you can use new WebSocket anywhere!

<comment><USER8> While emulating WebSocket on non-supporting browsers is definitely awesome, the point I am making, is I am using a websocket-supported browser yet it's just doing a series of non-stop HTTP requests.

Shouldn't the emulation only occur when necessary and be a graceful degradation not forcing all clients to downgrade to a less efficient transport?

</comment></comment></comment><comment><AUTHOR> Added iPad and iPhone / Android Support with Touch! - <http://www.pubnub.com/static/pubnub-xkcd/index.html>

</comment><comment><USER9> "No server required courtesy of PubNub."

There most definitely is a server, so can anyone explain what they meant by that instead?

<comment><USER4> They mean that you don't have to run a server yourself, instead you use their PubNub messaging service (which has a free tier but costs after that).

</comment></comment><comment><USER10> Okay, I could probably answer this if I read all the old WebSockets posts, but how can you have people communicate without a server?

<comment><USER11> From what I understand, PubNub provides servers around the world who take care of the heavy lifting and all you have to do is deal with publishing / subscribing messages.

So there are servers, you just don't run any yourself and it is all abstracted away by their API.

What they did, in this case, is mock the WebSocket interface (so that they didn't need to rewrite the whole original app) and make it use the PubNub API internally. See [https://github.com/pubnub/pubnub- xkcd/blob/master/websocket....](https://github.com/pubnub/pubnub- xkcd/blob/master/websocket.js)

<comment><AUTHOR> Excellent investigation! You are correct thank you for the explanation here on this thread. Check it out we also needed to remove the server.js file too. No more node needed now. Enjoy!

</comment></comment></comment><comment><AUTHOR> <https://twitter.com/PubNub/status/251440715572326400/photo/1> \- Team Photo [IMG]

</comment><comment><AUTHOR> Recorded a video - <http://vimeo.com/50320757> \- [VIDEO] of live action during the early moments of the release.

<comment><USER3> Nice work. It's an interesting problem but I don't think it's solved yet.

In the video and from my experience I see a bunch of dead users spawning from a single point making a 'pillar of death' and a few users moving that are skipping around, but none in any kind of fluid motion.

Perhaps have multiple spawns, offset by a small random amount.

Not sure how your system works but perhaps have areas in separate channels, and users only subscribe to updates from that area?

I'd rather see a few users in my area that can interact with me quickly than a flood of non-responsive ones.

<comment><USER4> JTxt. We had a similar problem (but for a different reasons) with the original (1110.n01se.net) when the initial rush from HN happened. After a few minutes we moved the server to an AWS t1.micro instance (our previous hosting company didn't like CPU intensive processes and was killing the server).

However, one of the problems with a t1.micro server on AWS is that the hypervisor will detect heavy load and start throttling the VM using a heavy handed approach which basically just pauses the VM for several seconds. This would cause buffers to build up and when the VM started running again you would have a burst of traffic.

The symptom was that you would see other avatars stop moving for a few seconds and then suddenly jump around and then be back to smooth. All clients would still receive all the updates (WebSockets is reliable over TCP), but they would come in bursts whenever the VM was throttled. So a few minutes after moving to the AWS server we realized what was happening (we use AWS for development and knew to recognize the behavior) so we implemented a few easy fixes to the server (such as change deltas and doing JSON of the data once instead of per client, etc) to bring the CPU usage down to a reasonable level so that it wouldn't get throttled. Combined with the 20 connection cap that resulted in a very smooth and low latency experience for the players that were able to connect.

One thing we are considering with the original is what you suggested where players only get updates for things that are visible to them. However, this means more processing on the server because each client gets a different data set which has to be generated. So it's sort of a tradeoff between decreasing bandwidth and increasing CPU (surprisingly often the case in the real world). If the CPU increase causes throttling then we would start encountering burstiness again. So it might be worth it or it might not.

Anyways, if we have some free time we may play with some ideas. One of the first things is being able to simulate load manually. Doing a mad dash to try and implement improvements while thousands of HN users are trying to connect (we didn't know that a friend had posted it there) is certainly an adrenaline rush but not the most ideal way to do development :-)

Another solution would be to use a larger AWS instance. Right now on the t1.micro with 20 users the CPU stays around 1-5% (which is a safe zone for throttling). Larger instances don't have the throttling problem so in addition to more horse power we would be able to use a much higher percentage of it. However, it's just a spare time project for us and I'm still trying to figure out to explain to the wife why we are paying (mostly bandwidth) for other people to play an online game. :-)

And surprisingly AWS doesn't seem to have a way to accept donations or gift cards for AWS costs. Seems like a logical for encouraging free and open source development projects like this.

<comment><USER3> Thanks for getting this going and sharing your experience. It's really fun when it's interactive.

I'd like to hope having 1000's in the same map with fast updates, without being a huge burden to any one person is possible.

Perhaps run a master instance at 1110.n01se.net Invite others to run a slave instance that is configured to connect to your master, report health, and serve areas as directed.

The master serves the client and assigns a spawn point to the client to other interesting locations when load is high. It also manages the list of slaves and the areas covered and updates it with clients as it changes.

(But there's a potential bottleneck here. Not sure how to do this yet...

Also how do you subdivide the map so high traffic areas are smaller? I'm guessing Quadtrees so the subdivide data can be very small.

How well can clients be connected to multiple servers?

And is a master/slave relationship needed?)

Well I'll leave it there. It's an interesting problem and I think it's part of what node.js is trying to become.

</comment></comment></comment></comment><comment><USER12> Cheers! We're using PubNub in production and it's been great so far. We were one of those noisy customers that wanted the presence API. :)

</comment><comment><USER13> Nice work guys.

<comment><AUTHOR> Thank you Carimura! Enjoy.

</comment></comment><comment><USER14> Awesome!!!

<comment><USER15> +1</comment></comment>


1.0 Is the Loneliest Number - <AUTHOR> http://ma.tt/2010/11/one-point-oh/ <comment><USER2> Thanks for the post, I read this in the Techstars book as well. I can't be reminded enough however to get a version 1.0 out there - this is especially timely for my startup, because we are about to begin beta testing, and it is EXTREMELY tempting to add "one more thing" before the beta.</comment>


Show HN: Wooey Web UIs for Python Scripts - <AUTHOR> http://wooey.martinfitzpatrick.name/

<comment><AUTHOR> This a link to a live demo of a recently developed Web UI for Python scripts. It consists of three parts a) the `ArgumentParser` reader that exports the command-line definition from a Python script to JSON, b) the web front-end which turns this JSON into a web form and handles submissions, c) the runner which is a basic worker process that takes submitted form data and passes it back to the scripts to execute. Output is displayed back in the job viewer.

The use case for me was a quick way to get data-processing scripts (scientific research stuff) online with minimal fuss, but it can also handle anything else.

Manual definition of command line arguments is supported (e.g. for non- argparse scripts) and support for alternative command-line formats is planned.

Source and some brief documentation is available on [https://github.com/mfitzp/Wooey](https://github.com/mfitzp/Wooey).</comment>


Chrome hack prompts users to download 'missing font' to install malware - <AUTHOR> https://thenextweb.com/security/2017/02/21/chrome-missing-font-hack-malware/ <comment><USER2> Isn't there any way that browsers/OS could signal "this dialog you're seeing right there is from us and not from the website you're visiting"? Most people know to look for the lock icon in sensitive pages, so it could be extended to that as well.

<comment> angry-hacker A lot of content is not from the sites you visit. Ads, often videos, things that your cdn hosts etc.

You can use css to draw anything on the screen. Inside the viewport of course. The garbled text us clever but otherwise it's just a typical scam to make you install Spyware.

Heck, majority of ad networks run these things. You have 5 viruses, download this thing.

<comment><USER2> > A lot of content is not from the sites you visit. Ads, often videos, things > that your cdn hosts etc.

Yes, that's why I'm asking about a way to unequivocally recognize that a dialog _is_ from the browser, for example, drawing things completely outside the viewport (without overlapping it) or changing the browser chrome's colors.

<comment> angry-hacker Maybe something like Windows UAC alert then. Disable all the background and dim it.

<comment><USER3> > Disable all the background and dim it

Surely this is trivial to reproduce with css in the webpage, and is in fact what the images show here</comment></comment></comment></comment></comment>


How to get rid of Apple censorship, or an open letter to Spotify - <AUTHOR> https://dev.to/uyouthe/how-to-get-rid-of-apple-censorship-or-an-open-letter-to-spotify-51h3 <comment><USER2> Isn't saying "go build yourself a PWA" about as helpful as saying "Learn to Code"? It's said in the same basic spirit. Not in all circumstances, etc. but in terms of attitude.

It seems like that is a somewhat tone-deaf answer to an article that was pretty reasonable in how it laid out its actions, Apple's reactions/proactive actions, and the timeline of events that followed. Spotify is in a tough spot here, and we can revisit the 'walled garden should be regulated' conversation here as well, but I'm just getting that I'm not sure building a PWA is a relevant suggestion.

I can be wrong of course, but the thesis seems a bit myopic.

</comment><comment><USER3> When I get into my car, I expect Spotify to resume playing where it left off last time. I don't want to unlock my phone, or even take it out of my handbag. I certainly don't want to open the web browser for this to work.

How is a web app supposed to achieve that on iOS?

Edit: grammar</comment>


Instance Model Programming in C - <AUTHOR> http://slkpg.byethost7.com/instance.html <comment><USER2> Drifting from the topic, but I never understood this urgent need for so much _inheritance_ when doing OO, especially when using languages that don't natively have it, like C and JavaScript.

I really like OO programming (i.e. I'm particularly not one of the functional- fundamentalist OO-haters here on HN), but as I've grown more experienced, I've started to use inheritance less and less, and composition more and more. This is trivially supported in C structs, and you don't need any fancy approach for it, plus you can do with way less void pointer casting, which means less runtime errors.

Inheritance is very useful for a small set of relatively complex problems, such as language parsing or UI frameworks or particle simulations. For many other problems, including most _applications_ (as opposed to libraries), however, my experience is that you can do fine without. This holds especially these days, when many of said complex problems are solved in excellent freely available open source projects, in nearly any language.

<comment><USER3> That is far from an uncommon idea. The phrase to search for to learn more about this is "Composition over Inheritance". That leads you to e.g. [http://en.wikipedia.org/wiki/Composition_over_inheritance](http://en.wikipedia.org/wiki/Composition_over_inheritance) or, combined with "site: c2.com" to [http://c2.com/cgi/wiki?CompositionInsteadOfInheritance](http://c2.com/cgi/wiki?CompositionInsteadOfInheritance) or [http://c2.com/cgi/wiki?UseCompositionAndInterfacesWithoutCla...](http://c2.com/cgi/wiki?UseCompositionAndInterfacesWithoutClassInheritance).

In some sense, deep inheritance hierarchies were a thing of the 80's, when inheritance was new (at least, in the mainstream), just like the <blink> tag was a thing of the '90s (or was that the 00's?). Now, deep hierarchies are a code smell.

<comment><USER4> 80's!?!

OO only started to get into the enterprise in the 90's.

</comment></comment></comment><comment><USER5> Advising anyone trying to make object oriented programing in C to read Object- Oriented Programing With ANSI-C [0][1]. The book more clearly explains how to make classes, inheritance, dynamic type checking. Don't follow the instruction to the letter, but try to understand and write your own version. ( Not for beginners in C though )

[0]: [http://www.cs.rit.edu/~ats/books/ooc.pdf](http://www.cs.rit.edu/~ats/books/ooc.pdf)

[1]: [http://www.cs.rit.edu/~ats/books/ooc-02.01.04.tar.gz](http://www.cs.rit.edu/~ats/books/ooc-02.01.04.tar.gz) ( source code)

</comment><comment><USER6> Much of C++ made more sense to me when I read _Inside the C++ Object Model_ by Stanley Lippman[1]. It helped me internalize the fact that C++ was originally implemented as a preprocessor transformation into C (Stroustrup's Cfront). Thus many C++ mechanisms can be understood as elaborate syntactic sugar.

[1] [http://www.amazon.com/Inside-Object-Model-Stanley- Lippman/dp...](http://www.amazon.com/Inside-Object-Model-Stanley- Lippman/dp/0201834545)

<comment><USER4> Another good read are _The Annotated C++ Reference Manual_ [1] and _The Design and Evolution of C++_ [1].

They help understand all design compromises that were done to keep compatibility with C, which is was part of what brought C++ into the mainstream, but also the main cause of many of its warts.

[1] [http://www.amazon.com/The-Annotated-C-Reference- Manual/dp/02...](http://www.amazon.com/The-Annotated-C-Reference- Manual/dp/0201514591)

[2] [http://www.amazon.com/The-Design-Evolution-Bjarne- Stroustrup...](http://www.amazon.com/The-Design-Evolution-Bjarne- Stroustrup/dp/0201543303)

<comment><USER7> > Another good read are The Annotated C++ Reference Manual[1] and The Design > and Evolution of C++[1].

Annotated C++ Reference Manual as well as D&E is _severely_ dated. Quite a while back there was some talk of stroustrup co-authoring a revision of the reference-manual with andrew-koenig, but it never came to fruition...

<comment><USER4> That is true, but the point here is to learn how C++ got designed in first place, you can't update that.

</comment></comment></comment></comment><comment><USER8> Also worth checking out is _Open, extensible object models_ [0] which brings prototypal inheritance and message-passing semantics to C. Along with a well- detailed paper is a very digestible example implementation.

[0]: [http://piumarta.com/software/id- objmodel/](http://piumarta.com/software/id-objmodel/)

</comment><comment><USER9> This is pretty awesome. GNOME itself is all written in pure C using glib, which also contains GObject, a beautiful OOP approach for the C programming language. It has a dynamic type system, supports meta programming...

Very few people know it, but GNOME's GTK interface is fully object oriented, and BTW when you click a GTK button you are clicking on an instance of the class GtkButton that inherits from GtkBin which inherits from GtkWidget. it's a beautiful thing!

Also because GObject is based on a lot of conventions it makes really easy to generate bindings to other programming languages automatically, so basically you can write you library in C with OOP approach using GObject, and for free you get your library easily bound to python, ruby, js or any other language.

[https://developer.gnome.org/gobject/stable/](https://developer.gnome.org/gobject/stable/)

<comment><USER10> GTK is often used as the example of what not to do when designing interfaces. A better pure C example would be Wine's implementation of the Win32 API (specifically take a look at user32.dll). Or the Tk toolkit.

<comment><USER9> I disagree that GTK is an example of what NOT to do when designing interfaces. But anyways I just mentioned GTK as an example of GObject usage, which was my original point.

GObject is independent of GTK.

Also here is the link for the introspection tool that generates bindings to other languages: [https://wiki.gnome.org/action/show/Projects/GObjectIntrospec...](https://wiki.gnome.org/action/show/Projects/GObjectIntrospection?action=show&redirect=GObjectIntrospection)

</comment></comment></comment><comment><USER11> The simplest way to do OOP in C is to create modules with opaque handles.

Below shows how i use string and string list "classes" in C.String list "class" inherits string "class" seamlessly.

[https://github.com/mhogomchungu/zuluCrypt/tree/master/zuluCr...](https://github.com/mhogomchungu/zuluCrypt/tree/master/zuluCrypt- cli/utility/string)

respective easier to read header files are below:

[https://raw.github.com/mhogomchungu/zuluCrypt/master/zuluCry...](https://raw.github.com/mhogomchungu/zuluCrypt/master/zuluCrypt- cli/utility/string/String.h)

[https://raw.github.com/mhogomchungu/zuluCrypt/master/zuluCry...](https://raw.github.com/mhogomchungu/zuluCrypt/master/zuluCrypt- cli/utility/string/StringList.h)

</comment><comment><USER12> isn't this just the normal approach used in complex c code, as described in, for example, "c interfaces and implementations" by hanson? a struct with function pointers and state (plus, optionally, macros to sugar away the repetition).

i don't understand what's new here. anyone?

<comment><USER13> It's similar to most of the complex C code I have been exposed to except for one thing: namespace prefixes. Almost all reusable C components have to have a name prefix or risk name collisions with other code.

</comment></comment><comment><USER13> > Except in a database, the data in most programs is a minor player.

I guess that depends on what your definition of "most" is. A large portion of C code either depends on hardware interfaces or is intended to be optimized. In both cases, the layout of your memory (data) is extremely important to an implementation.

One of the biggest criticisms of OOP is that it tends to obscure data layout, which isn't always an implementation detail. Interestingly, the patterns described here are subject to the same criticisms.

<comment><USER14> Also from that same paragraph:

> The design and implementation of algorithms constitutes the vast bulk and > difficulty in developing software.

That's just a crazy statement to me. In my experience, the bulk of developing software is _anything but_ the design and implementation of algorithms. And I've worked on some pretty algorithm-heavy projects!

I don't even know where to start rebuking the rest of this article's discussion of data and I suspect that the author and I simply have dramatically different definitions of the word.

Regarding your comment:

> One of the biggest criticisms of OOP is that it tends to obscure data > layout, which isn't always an implementation detail.

I'd argue that OOP obscures data representations more broadly than just data layout. Encapsulation is great, but it's simply the wrong default: Representations and the scope of their exposure should be carefully considered. Further, immutability _greatly reduces_ the value of encapsulation.</comment></comment>


Deploy multiple ASP.NET web apps to a single AWS instance - <AUTHOR> https://github.com/ServiceStack/ServiceStack/wiki/Deploy-Multiple-Sites-to-single-AWS-Instance

<comment><USER2> Were are using this setup, but instead of AWS, we are deploying to Rackspace. The TeamCity-Octopus combination works brilliantly together.

We also use FluentMigrator.net to migrate databases automatically throughout our environments: [https://github.com/schambers/fluentmigrator](https://github.com/schambers/fluentmigrator)

You can also use Octopus to run Powershell scripts. You can deploy one off tasks or re-runable tasks to your entire server farm with one click.

I can recommend [https://twitter.com/DevOpsGuys](https://twitter.com/DevOpsGuys) to help you get this setup.

</comment><comment><USER3> I previously tried helping a software team deploy their .Net app on Windows VMs. As a Linux engineer, I was shocked at the lack of built-in remote deployment/management options, especially those able to be automated. FTP and SMB shares, the built-in options, are not appropriate for the Internet. Why does Windows Server not ship with an SSH/SFTP server? I ended up deploying a Windows build of OpenSSH just to get remote access parity with Linux servers. Unless things have changed recently, Windows really needs a better out-of-the- box application deployment story.

<comment><USER4> There's a built in deployment method called "msdeploy" that makes it super easy to deploy a website. It's either one click from visual studio, or highly scriptable from the command line. My company hasn't manually deployed code in years, it's one click in team city to build and deploy.

</comment></comment><comment><USER5> nice post. we do something similar, except using MS Web Deploy. We also explored Octopus but wanted an agentless mechanism. We're also keeping our eye on Desired State Configuration

<comment><AUTHOR> Yep, I think the nice thing about using purpose-specific tools like OctopusDeploy is that it lets you escape Cloud/Platform specific deployment tools making it easier to switch between cloud providers if you want to.

i.e You can save money later by moving off the Cloud once you have a better idea what capacity you need to handle your load, and then deploy to better value hosting providers like [http://www.hetzner.de](http://www.hetzner.de)

</comment></comment><comment><USER6> Is there much benefit to using Octopus as opposed to an extra MsBuild step that does a publish?

I've had TeamCity set up to do continuous integration/deployment without much pain so I was wondering if I'm missing out on something or it's just a different way to the deployment/publish step?

<comment><AUTHOR> You can easily configure different things of IIS/ASP.NET like Port Bindings, App Domains, Config Transforms, SSL Sites, etc. We also use it to bundle and deploy out-of-project artefacts.

One nice feature is that it keeps all your releases and can easily redeploy a previous known working configuration.

<comment><USER2> Don't forget rollback. That has saved us a number of times.

One of the things I like about Octopus is rather than deploy over the existing instance it deploys a version alongside. Then if everything is hunky-dory with the deployment process it simply tweaks IIS to point at the new deloyment folder. I don't believe that MSDeploy does that. I think it just overwrites the existing source. Also, can MSDeploy deploy to multiple servers?

Anyway, Octopus is very neat and tidy. We also recycle app pools and restart windows services using Powershell scripts as deployments out of Octopus for some legacy apps that don't support distributed caching and the cache is stale. It's quick an dirty but it works.

</comment></comment></comment><comment><USER7> what is the advantage in comparison to just use azure?

<comment><AUTHOR> We've found AWS has a richer ecosystem for the things we want to use, e.g. We're using PostgreSQL RDS for our managed RDBMS.

It's also nice to be able to point your deployments to any server instead of being coupled to Cloud-specfic tooling. i.e. If Cloud costs ever get out of hand we can point to the better value and performing dedicated hosts like hetzner, with minimal migration effort.

<comment><USER6> I assume you could just deploy to an Azure/Rackspace/Other VM or to a physical server rather than an AWS VM if you decided to, there's nothing PAAS specific here. Is that correct?

<comment><AUTHOR> Right, it can point and deploy to any Windows Server that has an OctopusDeploy tentacle (deploy agent) installed on it.</comment></comment></comment></comment>


Notable Books of 2014 - <AUTHOR> http://www.nytimes.com/2014/12/07/books/review/100-notable-books-of-2014.html

<comment><USER2> I was happy that "The Martian" won sci-fi book of the year on goodreads [https://www.goodreads.com/book/show/18007564-the- martian](https://www.goodreads.com/book/show/18007564-the-martian)

It is well worth a read and I think HNers and fellow geeks will find it interesting

<comment><USER3> I got my copy today! Ordered it after reading a related comment on a previous HN discussion. I have high expectations with this one especially after reading the reviews on Goodreads.

</comment></comment><comment><USER4> For those of you who may have trouble viewing this, I hacked together a little Selenium script to scrape this for you[1].

[1] [https://gist.github.com/anonymous/84449fe7860e292e904f](https://gist.github.com/anonymous/84449fe7860e292e904f)

The list:

Category: FICTION & POETRY

1\. 'All Our Names' by Dinaw Mengestu

2\. 'All The Birds, Singing' by Evie Wyld

3\. 'All The Light We Cannot See' by Anthony Doerr

4\. 'American Innovations' by Rivka Galchen

5\. 'The Assassination Of Margaret Thatcher: Stories' by Hilary Mantel

6\. 'The Ballad Of A Small Player' by Lawrence Osborne

7\. 'Bark: Stories' by Lorrie Moore

8\. 'The Blazing World' by Siri Hustvedt

9\. 'The Bone Clocks' by David Mitchell

10\. 'The Book Of Strange New Things' by Michel Faber

11\. 'The Book Of Unknown Americans' by Cristina Henríquez

12\. 'Boy, Snow, Bird' by Helen Oyeyemi

13\. 'A Brief History Of Seven Killings' by Marlon James

14\. 'Can't And Won't' by Lydia Davis

15\. 'The Cold Song' by Linn Ullmann. Translated by Barbara J. Haveland

16\. 'Colorless Tsukuru Tazaki And His Years Of Pilgrimage' by Haruki Murakami. Translated by Philip Gabriel

17\. 'Dept. Of Speculation' by Jenny Offill

18\. 'The Dog' by Joseph O'Neill

19\. 'Euphoria' by Lily King

20\. 'Everything I Never Told You' by Celeste Ng

21\. 'F' by Daniel Kehlmann. Translated by Carol Brown Janeway

22\. 'Faithful And Virtuous Night' by Louise Glück

23\. 'Family Life' by Akhil Sharma

24\. 'Fourth Of July Creek' by Smith Henderson

25\. 'A Girl Is A Half-formed Thing' by Eimear McBride

26\. 'I Pity The Poor Immigrant' by Zachary Lazar

27\. 'The Laughing Monsters' by Denis Johnson

28\. 'Lena Finkle's Magic Barrel' by tten and illustrated by Anya Ulinich

29\. 'Let Me Be Frank With You: A Frank Bascombe Book' by Richard Ford

30\. 'Lila' by Marilynne Robinson

31\. 'Lovers At The Chameleon Club, Paris 1932' by Francine Prose

32\. 'The Magician's Land' by Lev Grossman

33\. 'The Moor's Account' by Laila Lalami

34\. 'Motherland Fatherland Homelandsexuals' by Patricia Lockwood

35\. 'My Struggle. Book 3: Boyhood' by Karl Ove Knausgaard. Translated by Don Bartlett.

36\. 'The Narrow Road To The Deep North' by Richard Flanagan

37\. 'Nora Webster' by Colm Toibin

38\. 'Panic In A Suitcase' by Yelena Akhtiorskaya

39\. 'The Paying Guests' by Sarah Waters

40\. 'The Poetry Of Derek Walcott 1948-2013' by ected by Glyn Maxwell

41\. 'Redeployment' by Phil Klay

42\. 'Remember Me Like This' by Bret Anthony Johnston

43\. 'A Replacement Life' by Boris Fishman

44\. 'Song Of The Shank' by Jeffery Renard Allen

45\. '10:04' by Ben Lerner

46\. 'Thirty Girls' by Susan Minot

47\. 'Those Who Leave And Those Who Stay: Book 3, The Neapolitan Novels: "middle Time.' by Elena Ferrante. Translated by Ann Goldstein

48\. 'The Wallcreeper' by Nell Zink

49\. 'We Are Not Ourselves' by Matthew Thomas

50\. 'When Mystical Creatures Attack' by Kathleen Founds

Category: NONFICTION

1\. 'American Mirror: The Life And Art Of Norman Rockwell' by Deborah Solomon

2\. 'Being Mortal: Medicine And What Matters In The End' by Atul Gawande

3\. 'Building A Better Teacher: How Teaching Works (and How To Teach It To Everyone)' by Elizabeth Green

4\. 'Can't We Talk About Something More Pleasant' by tten and illustrated by Roz Chast

5\. 'China's Second Continent: How A Million Migrants Are Building A New Empire In africa' by Howard W. French

6\. 'Cubed: A Secret History Of The Workplace' by Nikil Saval

7\. 'Deep Down Dark: The Untold Stories Of 33 Men Buried In A Chilean Mine, And The Miracle That Set Them Free' by Héctor Tobar

8\. 'Demon Camp: A Soldier's Exorcism' by Jennifer Percy

9\. 'Duty: Memoirs Of A Secretary At War' by Robert M. Gates

10\. 'Dying Every Day: Seneca At The Court Of Nero' by James Romm

11\. 'Eichmann Before Jerusalem: The Unexamined Life Of A Mass Murderer' by Bettina Stangneth. Translated by Ruth Martin

12\. 'Elephant Company: The Inspiring Story Of An Unlikely Hero And The Animals Who Helped Him Save Lives In World War Ii' by Vicki Constantine Croke

13\. 'Embattled Rebel: Jefferson Davis As Commander In Chief' by James M. McPherson

14\. 'The Empathy Exams: Essays' by Leslie Jamison

15\. 'Factory Man: How One Furniture Maker Battled Offshoring, Stayed Local — And Helped Save An American Town' by Beth Macy

16\. 'The Fame Lunches: On Wounded Icons, Money, Sex, The Brontës, And The Importance Of Handbags' by Daphne Merkin

17\. 'Fire Shut Up In My Bones: A Memoir' by Charles M. Blow

18\. 'Forcing The Spring: Inside The Fight For Marriage Equality' by Jo Becker

19\. 'Gandhi Before India' by Ramachandra Guha

20\. 'Geek Sublime: The Beauty Of Code, The Code Of Beauty' by Vikram Chandra

21\. 'Hotel Florida: Truth, Love, And Death In The Spanish Civil War' by Amanda Vaill

22\. 'The Human Age: The World Shaped By Us' by Diane Ackerman

23\. 'The Invisible Bridge: The Fall Of Nixon And The Rise Of Reagan' by Rick Perlstein

24\. 'The Invisible Front: Love And Loss In An Era Of Endless War' by Yochi Dreazen

25\. 'The Invisible History Of The Human Race: How Dna And History Shape Our Identities And Our Futures' by Christine Kenneally.

26\. 'Just Mercy: A Story Of Justice And Redemption' by Bryan Stevenson

27\. 'Limonov' by Emmanuel Carrère. Translated by John Lambert

28\. 'Little Failure: A Memoir' by Gary Shteyngart

29\. 'The Madwoman In The Volvo: My Year Of Raging Hormones' by Sandra Tsing Loh

30\. 'Napoleon: A Life' by Andrew Roberts

31\. 'No Good Men Among The Living: America, The Taliban, And The War Through Afghan Eyes' by Anand Gopal

32\. 'Not I: Memoirs Of A German Childhood' by Joachim Fest. Translated by Martin Chalmers

33\. 'On Immunity: An Inoculation' by Eula Biss

34\. 'On The Run: Fugitive Life In An American City' by Alice Goffman

35\. '100 Essays I Don't Have Time To Write: On Umbrellas And Sword Fights, Parades And Dogs, Fire Alarms, Children, And Theater' by Sarah Ruhl

36\. 'The Parthenon Enigma' by Joan Breton Connelly

37\. 'Pay Any Price: Greed, Power, And Endless War' by James Risen

38\. 'Penelope Fitzgerald: A Life' by Hermione Lee

39\. 'Pro: Reclaiming Abortion Rights' by Katha Pollitt

40\. 'The Short And Tragic Life Of Robert Peace: A Brilliant Young Man Who Left Newark For The Ivy League' by Jeff Hobbs

41\. 'The Sixth Extinction: An Unnatural History' by Elizabeth Kolbert

42\. 'A Spy Among Friends: Kim Philby And The Great Betrayal' by Ben Macintyre

43\. 'Stuff Matters: Exploring The Marvelous Materials That Shape Our Man-made World' by Mark Miodownik

44\. 'The Teacher Wars: A History Of America's Most Embattled Profession' by Dana Goldstein

45\. 'Thirteen Days In September: Carter, Begin, And Sadat At Camp David' by Lawrence Wright

46\. 'This Changes Everything: Capitalism Vs. The Climate' by Naomi Klein

47\. 'Thrown' by Kerry Howley

48\. 'The Trip To Echo Spring: On Writers And Drinking' by Olivia Laing

49\. 'The True American: Murder And Mercy In Texas' by Anand Giridharadas

50\. 'World Order' by Henry Kissinger

<comment><USER5> Is Selenium better than other scrapers?

<comment><USER4> I can't speak on too many scrapers, but Selenium offers a whole lot over just Web scraping. It's a wonderful tool to automate functonal tests, perform monotonous tasks, and other handy things.

If you do any sort of Web development, I would recommend writing tests using it. It's quite easy to pick up, and is available in different languages, and for different browsers.

</comment></comment></comment><comment><USER6> They forgot this one: [http://www.orbooks.com/catalog/when-google-met- wikileaks/](http://www.orbooks.com/catalog/when-google-met-wikileaks/)

</comment><comment><USER7> Nassim Taleb said this about the NYT list: "There is close to ZERO probability that a "Notable book" in the NYT will be discussed in 5-20 years. Look at 1990-2009 lists."

<comment><USER8> OK, but what's the value in that statement–what does "discussed" mean for him? Looking at the 2009 list, there are plenty of books still circulating in discourse. Asterious Polyp and the Dan Chaon, Margaret Atwood and Jonathan Lethem novels are still quite talked about. Without context, I'm going to assume that is this just an acerbic, arms-crossed way to snub a popularly considered list.

</comment></comment><comment><USER9> My personal favourite: 'Information doesn't want to be free' by Cory Doctorow

[https://www.goodreads.com/book/show/20763766-information- doe...](https://www.goodreads.com/book/show/20763766-information-doesn-t-want- to-be-free)

</comment><comment><USER10> They should let you filter by genre.</comment>