Nextdoor ends its program for forwarding suspicions to police - <AUTHOR> https://www.bloomberg.com/news/articles/2020-06-19/why-nextdoor-cut-its-forward-to-police-tool <comment><USER2> I live in an immediate suburb of Boston, and joined Nextdoor and joined to see what features were attracting so many folks to a new social media platform. Wow! Anyone with a tattoo, going to your door for any reason was considered "suspicious" and reported. One alarming thing, is that NextDoor is feeding on our fears about outsiders who look different, and creating a loop out of this for higher engagement when people post pictures and engage their camera feed.

It's too bad, I think idea of organizing a social network based on proximity and centered around community information is a viable idea, It's just that NextDoor is doing that with our worst instincts.

<comment><USER3> > I think idea of organizing a social network based on proximity and centered > around community information is a viable idea

NextDoor and Craigslist and Reddit's /r/{city} communities just prove that it may be viable but it's pretty undesirable. I think it's best to not give the most neurotic, ill people of your community the loudest voice, but these social networks also create this neuroticism and illness.

You also create a scenario (NextDoor especially) where all the sane people are driven out by the crazies. Back when NextDoor was new, after a year it would come up in conversation and sure enough, anyone normal would admit they tried it and had to delete it.

Social media is messing us up. I don't think we're missing some new take on it that's going to make it all better. I think the vestigially tribal parts of our brain make it a non-starter. We need to get back to the face-to-face -- it seems to be the only way we keep in mind that there's a human at the other end of the line, not some nebulous automaton that we craft into everything we hate in the world.

<comment><USER4> People behaving badly doesn't always imply they have mental illness. In my experience people with and without mental illness can be quick to be suspicious of others, hold prejudices, and involve law enforcement in the face of people just trying to go about their lives

I agree that the behavior being capitalized on here is pathological but using the terms "neuroticism", "illness", and "crazies" here unfairly and wrongly stigmatizes people with mental illness when in practice people with mental illness are more likely to be harmed by these suspicious posts and behavior nextdoor had been encouraging

<comment><USER5> I agree with your analysis. It's better to not think of such behavior as a result of a real illness of the mind, but a metaphorical illness of the heart. There's a certain sickness element to it, as well as an element of social contagion, so I understand the words used, but disagree with how they were used.

</comment></comment></comment></comment><comment><USER6> Hah. East Germans know exactly what this sort of thing will lead to: selective enforcement against those that the police wish to target anyway. Nothing like a bit of good old snitching to the authorities. Too bad if you're not lily white and walking around in a posh - or not so posh - neighborhood past what others think should be your curfew.

Of course, if you are witness to a serious crime you should report it. But if someone waters their lawn, sleeps in their car, or pees in their garden then that's their business and usually not yours so as long as you are not inconvenienced you should mind your own business lest one day the tables are turned and you forget to bring in your garbage container. And that's before we get into reporting people 'walking while black', those things might actually be against a law.

If you're breaking N laws per day think about what the effect would be if those were _all_ enforced. Do not do unto others... And don't give racists even more tools for harassment.

<comment><USER7> One thing I've learned over the years is that many people perceive:

\- themselves as perfect but making the odd honest mistake every now and then

\- others as fundamentally flawed, persistent rule-breakers who Need To Be Punished

Even if they're broadly the same or worse. This is true on the road, in college or writing code. A lot of people will be unable to look at their own tiny little infractions and see them as equivalent to the flagrant disregard for the rules that they observe in others.

<comment><USER8> Close, but it's more like "people perceive themselves _and their ingroup_ as perfect but making occasional honest mistakes" and perceive their outgroup as flawed, persistent rule-breakers. And guess who the outgroup tends to be in racially homogeneous neighborhoods.

<comment><USER9> It's not unlike HN when the topic of discussion is politics. Flip a variable or two and most humans behave similarly, thanks to evolution.

</comment></comment></comment></comment><comment><USER10> The vast majority of nextdoor posts in my area are people asking whether a snake is a copperhead or not and then arguing over whether or not to kill it. Followed by people complaining about X (speeders, dog poop, roaming cats, etc). Also a lot of folks looking for miss-delivered packages.

It's useful for borrowing a car seat, getting recommendations for plumbers, electricians, etc, advertising extra garden produce we wish to give away, and so forth. Otherwise, I stay off of it.

Also from a technical and UI perspective, the web site is atrocious. It loads terribly slowly on a current generation iPad, constantly tries to route you to its app, makes it way too easy to accidentally interact with a post or comment, defaults to "top posts" instead of "recent activity" and on and on. It's barely any better visiting on a desktop.

I much prefer the sub-reddits, city-data forums, and even FB groups for my area for keeping in touch with what's going around me.

<comment><USER11> Same here, although within the last 24 hours, my neighborhood's chat is starting to look like a Twitter-ish hate-fest. If they don't stop, I'm going to chuck it in the same dumpster as Twitter.

</comment></comment><comment><USER12> I think the problem with such tools is that the technology disconnected our societal checks to make sure that such tools are used correctly. Or didn't consider the need for that function at all as this new online capability was created. It was just some developer+PM saying, "what if we offered this?" And it just appeared, a new feature in the world.

Now, maybe I will be downvoted for saying (in this climate), but the ability for people to see something suspicious and do something about it _is important_. You would have the pendulum swing the other way and have people actively tell themselves to ignore potential crime / bad actors, or be unable to report something legitimate?

But the point is that up to recent years, your interactions with police were not anonymous, and you had to (generally) put your name and reputation (or phone number and your voice) behind things that you asserted were true. There was an element of credibility verification in the reporting.

Today, anonymity on the internet, and the ease of creating false (or biased) reports has unleashed a tidal wave of noise and bad information, with no repercussions (reputation-wise, or cost) to the persons creating it. And the effects are all externalized to those who wrongly come under suspicion.

There are some things that need to have a barrier to being done, and taking it online lowers that barrier. Until we figure out what that caused, and how it's to be handled correctly, it's right that these portals disable the features that are causing us these kinds of societal mistakes -- and we actively should choose to slow down our adoption of things that we don't yet understand the full implications of.

<comment><USER13> The ability to report dangerous things to the proper authorities is one of the ways you know you live in a functional society.

That said, this whole topic brings up the question of "At what cost?" We won't see the macroeffects these have on our communities for quite a while. Our base insticts when it comes to how we should react when we see something off, are slowly changing.

</comment></comment><comment><USER14> I just logged into NextDoor today after years of inactivity because I wanted to see if there were resources about how to dispose of bulky trash items.

Wow, what a mess! Standard lost dog fare, but also a lot of busybodies nitpicking about neighbors' municipal code violations, suspicions of people who don't look like they "fit" the neighborhood, and general bickering in every comment thread.

NextDoor seems like a good idea, until you execute and it turns out the power users are busybodies holed up at home who have way too much time to micromanage the goings-on in their neighborhoods.

<comment><USER15> My neighborhood in Nextdoor was actually pretty non-toxic until recently. It has become overrun with lost/found/who owns this cat posts and people complaining about fireworks and dog trauma. (Since we had riots fireworks have been a constant presence)

</comment></comment><comment><USER16> Some of the things on Nextdoor remind me of "Snow Crash" sometimes.

"Fairlanes, Inc. is laying new ones all the time. Have to bulldoze lots of neighborhoods to do it, but those seventies and eighties developments exist to be bulldozed, right? No sidewalks, no schools, no nothing. Don't have their own police force — no immigration control — undesirables can walk right in without being frisked or even harassed. Now a Burbclave, that's the place to live. A city-state with its own constitution, a border, laws, cops, everything."

"MetaCops Unlimited is the official peacekeeping force of White Columns, and also of The Mews at Windsor Heights, The Heights at Bear Run, Cinnamon Grove, and The Farms of Cloverdelle. They also enforce traffic regulations on all highways and byways operated by Fairlanes, Inc. ... MetaCops' main competitor, WorldBeat Security, handles all roads belonging to Cruiseways, plus has worldwide contracts with Dixie Traditionals, Pickett's Plantation, Rainbow Heights (check it out — two apartheid Burbclaves and one for black suits), Meadowvale on the [insert name of river] and Brickyard Station. WorldBeat is smaller than MetaCops, handles more upscale contracts, supposedly has a bigger espionage arm — though if that's what people want, they just talk to an account rep at the Central Intelligence Corporation. And then there's The Enforcers — but they cost a lot and don't take well to supervision. It is rumored that, under their uniforms, they wear T-shirts bearing the unofficial Enforcer coat of arms: a fist holding a nightstick, emblazoned with the words SUE ME. ... These Burbclaves! These city-states! So small, so insecure, that just about everything, like not mowing your lawn, or playing your stereo too loud, becomes a national security issue."

</comment><comment><USER17> As someone who is trying to run a vaguely similar service (streetmates.net) I'm wondering how communities can be guided to be constructive and pleasant.

Or maybe people are just people, pleasant and unpleasant and everything else, and it can't really be helped?

It seems like putting something on the front page like "hey don't be a racist busy-body" isn't really enough. And at the other end of the extreme you've got Facebook employing organisations that filter sensitive content - with fairly horrific outcomes for the individuals who do the monitoring.

HackerNews is a pretty good example of getting a certain standard of behaviour out of people en masse. I wonder what the secret sauce was?

</comment><comment><USER18> Nextdoor just seems like another 1984 esq system especially because of their ties to the state through the Police. This will never be making its way into my home. It honestly astounds me that people buy into these things especially with potentially petty neighbors you're one bad day away from being the person who "doesn't belong" in the neighborhood.

</comment><comment><USER19> [https://archive.vn/hFSCI](https://archive.vn/hFSCI)

</comment><comment><USER20> heh yeah i get lots of "beware of this suspicious person" messages that turn out to be hte mail man on Next Door. However, it is very useful for lost pets. IMO they need to expand on that utility, i routinely see lost/found pet posts were the owner and pet are eventually re-united via Next Door.

</comment><comment><USER21> See something, say something

</comment><comment><USER22> When will Ring step up?

</comment><comment><USER23> Fuck you, Nextdoor. Not. Enough.

Nextdoor is known to be platform that enables bigotry and perpetuates racial stereotypes. Nextdoor, not forwarding bullshit suspicions to the police, is the least they could do since they created the fucking problem to begin with.

It encourages one to view everyone who you don't immediately recognize as an outsider, causing you to fear them, and then share that fear with others so they too can be afraid. It's absolute madness, and I haven't ever heard a good thing in the real world about Nextdoor. I have had people assume my race incorrectly though, and gleefully admit their racist usage of it not knowing what they were about to say would be considered so fucking awful...

<comment><USER24> I don't use nextdoor so I don't know, but how much is caused by the platform's design and how much of that is just "these suburbanites are racist"?

<comment><USER15> Racism is only one annoying persona.

The big advertisers have been Ring and security companies, so they tend to attract people worried about other people. They suppress things like political posts, so there really isn't anything to do but worry about lost cats or busybody crap.

</comment></comment></comment><comment><USER25> > Civil rights and privacy advocates have raised concerns about how the > feature streamlined the reporting of suspicions about minor offenses, > encouraging police to follow up on what would have otherwise been casual > observations on social media.

Why is this a problem? Minor offenses are still offenses and they can often be very frustrating and problematic. They still deserve police attention where they constitute a violation of the law. Streamlining the process is a positive not negative, and the framing here just seems like these activist groups don't want people to be held accountable.

<comment><USER26> >Why is this a problem? Minor offenses are still offenses and they can often be very frustrating and problematic. They still deserve police attention where they constitute a violation of the law. Streamlining the process is a positive not negative, and the framing here just seems like these activist groups don't want people to be held accountable.

Be careful of what you wish for. You might wish to look at your local municipal/county/parish/state laws. I likely break dozens of laws/ordinances every day and I'm very positive you do as well, without even knowing it.

I am very saddened that I have to spell this out. I don't know whether you use NextDoor, throwawaysea. Would you be willing to post this under your real name in NextDoor and share the link here?

<comment><USER27> >I likely break dozens of laws/ordinances every day and I'm very positive you do as well, without even knowing it.

Okay but then isn't that the real problem? Of not regularly weeding out laws against things that people don't really feel need to be banned? It's kind of clumsy to take the approach of, "We're going to keep dubious laws on the books, and also have ultra-random, haphazard enforcement of all laws regardless of how merited."

<comment><USER28> We can do both.

Non-enforcement of bollocks laws is a _feature_.

Most people will not ever interact with law enforcement over bollocks laws.

There will always be bollocks laws.

Your wider point stands though, we should do some pruning, but that takes time, whereas non-enforcement is instantaneous.

Do both.

<comment><USER27> Yeah, but "bollocks" is a four-letter word (metaphorically) -- the feature doesn't first establish consensus on what laws _are_ bollocks. What you call a bollocks law, I might call "reasonable one that ensures people aren't screaming outside my window at 1am".

<comment><USER29> You're absolutely right, I don't understand why you're being downvoted.</comment></comment></comment></comment></comment></comment>


Warming Up to Unit Testing - <AUTHOR> https://www.junglecoder.com/blog/warming-up-to-unit-testing <comment><USER2> The article doesn't mention the single most import reason for unit testing: to enable you to refactor your code.

Without a suite of unit tests, there's no way to know that your refactor hasn't introduced bugs of some kind. A suite of tests won't necessarily catch every bug you'll introduce, but it will catch many of them. I've seen this repeatedly.

I've had many conversations with developers who claim they don't need unit tests. When I ask "How do you refactor?" the answers is usually some variant of "I don't."

<comment><USER3> I keep running into the exact inverse: people who seem to believe they _only_ need unit tests (i.e. no functional/integration tests). It's insane. If I had to pick one, I'd go with the more "live" multi-component tests and ditch the unit tests. Unit tests still have value, as a lightweight way to catch dumb errors in future refactors. That's fantastic. Love it. As soon as they cease being lightweight (and the norm seems to be more effort spent creating mocks/stubs than the actual tests) then they fail even in that purpose and just become another impediment to useful work. I'm all for unit tests as part of a full testing meal, but a whole plate full of nothing _but_ unit tests makes me want to throw up.

<comment><USER4> I think mocks in unit tests are a code smell, that indicates that the business logic has not been correctly isolated from the rest of the code, or that the code shouldn't be unit tested at all, and should instead be component/integration tested.

<comment><USER5> Most architectural guidance encourages separation of concerns into layers (handler, controller, gateway, etc). Each layer consumes the next. You will be hard pressed to _unit_ test one layer without injecting a mock of the layer below.

When the layer is essentially pro forma and has no logic of its own, this is excruciating, but the line coverage number rules all.

<comment><USER4> Yeah, I think this separation of concern misses a step.

Let's say you have controller -> Business logic layer -> Data access layer.

The controller takes in some input, validates it, passes it to the business logic layer. The business logic layer retrieves some data from the DAL, does some logic, maybe writes data back to the DAL, and passes the data back up to the controller. The problem is that the business logic layer is usually doing two things at the same time, in the same function: the 'plumbing' (calling other things and passing data round), and the actual business logic.

When you try and define a boundary around the code, it gets messy, because what you want to test, the business logic, is mixed in with the plumbing so you have to use either dependency injection or mocking to force a boundary. This makes your tests more brittle as changes in things you don't want to test (your dependencies) affect your tests.

If you pull out the business logic into its own modules, and instead have a function that orchestrates the business logic (i.e. tell the database what data you want, tell the business logic functions to perform an operation on the data), you end up with a nice clean boundary around your business logic, which can be unit tested easily without mocks.

You then test the 'plumbing' part by using a component test that checks that the inputs and outputs of the component as a whole (business logic + plumbing + data access) are correct.

<comment><USER5> I think what you're describing is what we would call a controller, and management / senior ICs would still demand 90% line coverage by unit tests.

</comment></comment></comment></comment></comment></comment><comment><USER6> Bit of a disappointing read for me. Given the title, I was expecting more "meat" to the topic, like more details about _why_ and _how_ the author is now warming up to unit tests, anything to get the article beyond a surface-level summary of events. Right now, it simply reads "I didn't previously unit test, then I read some books, and now I do".

Seems to me writing like this is best served with a few book recommendation tweets and doesn't really make sense in this format.

<comment><AUTHOR> (author here)

Why:

Mostly, I think it's down to having a better understanding of where to try to break dependencies, specifically trying to abstract away from the outside world (akin to how they did it in the Moonpig billing system).

The how is still in progress. Perhaps the most notable instance I can think of it is that recently, due to work on breaking dependencies, I was able to stub out a RabbitMQ connection for an in-memory class, so that I was able to easily test how two components interacted without having to stand up an external service.

For me, looking back, I think it was the Moonpig article that's had the most influence on how I think about things.

Do you have any other questions?

</comment></comment><comment><USER7> We started using doctests to do our unit testing: [https://github.com/supabase/doctest- js/blob/master/README.md](https://github.com/supabase/doctest- js/blob/master/README.md)

This was a good way to get our coverage up. Something about writing the 'test' in the context of the function makes it seem easier. Also it helps that you get tests + docs + intellisense all in one fell swoop.

</comment><comment><USER8> I admit I still haven't really latched onto unit testing. I gave it an honest effort about a year ago, but the amount of time I was spending to mock out the inputs and then actually writing the test was absurd and I didn't feel provided enough benefits for the time out took me away from "productive" coding.

Maybe I'm doing it wrong, who knows...

<comment><USER3> Maybe, but there are a couple of more likely explanations.

(1) You're working on a system that is poorly structured for testing.

(2) You're trying to make a unit test do an integration test's job.

Both are incredibly common. In particular, if you find that you're spending a lot of time creating mocks/stubs to support unit tests you'd probably be better off finding a way to inject errors in an integration test. Error injection can be done at any level, works even when the code structure makes mocking difficult, and exercises code paths that cross multiple components in their "final" close-to-production form. IMX most of the people who go crazy about unit tests just haven't thought deeply enough about the problem to realize that error injection is strictly better (and a lot easier) most of the time.

<comment><USER8> #1 is very likely. However if it is extremely common to do unit tests "wrong", then that would mean I would need to find a testing guru to learn from in order to do it "right", and do a great deal of study to learn myself. The possibility of that happening is very low.

Does this not give credence to the notion that there may in fact be something wrong with unit testing in general? Is it not just compounding the problem?

I'd rather spend my limited cognitive currency and time in the system itself, not in mastering the art of unit tests... Unit testing should be a tool not an art. If a tool doesn't simplify my life, it has limited utility.

<comment><USER3> I don't exactly disagree with you. I've been on many projects where unit tests failed to justify the time spent writing them (including mocks) and dealing with spurious failures. I believe they _can_ be beneficial, but only if people understand their limitations and play to their strengths. I'll gladly use them to vet code that implements a completely self-contained data structure or algorithm with no dependencies, and I've done so to good effect many times. Otherwise, I'd rather write a proper stub/simulator that can be used in integration tests to exercise multiple components at once than waste time with single-purpose mocks.

> I'd rather spend my limited cognitive currency and time in the system > itself, not in mastering the art of unit tests

That's not quite an either/or. Over an entire career you'll probably work on many systems each requiring their own specific knowledge. Knowing one system is great as long as you're working on that system, and mostly useless thereafter. Knowledge of how to write good tests (unit or otherwise) is much more transferable. _Every_ team can use somebody with those skills.

</comment></comment></comment></comment><comment><USER9> Still my favourite source on unit testing and mocking: [http://www.growing- object-oriented-software.com/](http://www.growing-object-oriented- software.com/)

</comment><comment><USER10> When you first hear about unit tests it seems like the greatest idea ever. Automation of a process you already do manually makes that process repeated- able and quick. When I was a junior programmer I was all over it.

Over the years I have come to reject some things that are seemingly fundamental to software engineering in the industry. One of them is unit testing. I don't believe that unit testing is harmful in itself, but excessive use of it is a sign of weakness in another area.

\- if your code relies on unit testing for correctness than your coding methodology (or language) is error prone. A good programming methodology where the domain is well understood usually does not need a single unit test.

\- If your code base utilizes dependency injection to make the code more "testable" with mocks, you are making the code 10x worse. There are other ways to make your code more modular without injecting new scope, logic and apis into an object.

This logic sort of applies integration tests which is basically testing the same thing as unit tests but touching functions that have IO. However it is a little different. If your program does Not need unit tests but needs integration tests it means things like:

\- your type checker does not extend across systems

\- the programming methodologies become more error prone as you move to other systems and you have no control over it.

\- you lack understanding of the foreign system.

The thing with integration tests is that all of the above is largely inevitable and integration testing really becomes the only way to correlate (not verify) the entire system with correctness when you lack the integrated approach of a single programming language. Therefore because of this I am not against integration testing.

I recently green fielded a small micro-service at my company and I did not write a single unit test. It had one logic error and that was largely due to a flaw in the type checker. I can imagine many engineers being aghast at the whole concept.

So essentially I've had the opposite conclusion. Unit testing to me is a symptom of bad engineering practices. If you rely on it, something is wrong.

<comment><USER11> > If your code base utilizes dependency injection to make the code more > "testable" with mocks, you are making the code 10x worse.

I don't know that I'd word it exactly like that, but one thing I've found over the years is any tests we have that rely on mocks basically just don't test anything at all.

If your whole test is "This gets called, then that, then that", you aren't actually writing a test. You're repeating what the code already says.

<comment><USER10> Well, "something" is being tested as your code is verifying that an input produces an output.

But your philosophy is correct and we are in agreement on that.

The thing I was referring to is the abstraction of dependency injection itself. It leads to code that is over complicated as the abstraction itself is not only pointless but adds unnecessary layers of complexity.

There are ways to target the philosophy of what dependency injection for unit testing is trying to accomplish without introducing the side effect of unnecessary complexity that comes with dependency injection. It's as simple as just separating IO functions from core logical functions. Don't bundle these two things together into an object or a single function, that's it. (Also don't use objects period, but that's another topic.)

<comment><USER12> I like dependency injection even when I'm not writing tests (which I usually skip for side-projects.)

I find it natural and convenient to think about "What dependencies on other parts of the system does this code have?" Expressing those dependencies explicitly feels like it reduces complexity, not adds it.

But, I'm not talking about pulling in a big fancy DI framework, just making dependencies explicit in your function/class parameters.

I will say that DI is sometimes used as a tool in overly-abstracted systems. An example that comes to mind is the ASP.NET MVC framework -- with DI and inheritance, literally _any behavior_ can be overridden in fairly opaque ways. Trying to suss out the concrete behavior details is like swimming in quicksand. (Or it used to be that way, haven't touched ASP.NET in a while.)

As an aside -- I'm curious about your programming language of choice. I think DI is a lot more useful in some PLs than others. For example, I find JS code often uses imports to create complex graphs of implicit dependencies, and DI can help tame that complexity. But for other PLs like Python or Clojure, I basically don't use DI at all.

<comment><USER13> Javascript doesn't "need" dependency injection because modules are objects, and you can mock those directly by replacing what they reference to. Very similar story in python. You could say people do DI in these dynamic languages without calling it DI.

Now Java and C# are different because they are compiled. You need a DI tool to do dynamic dispatch if you want to mock.

<comment><USER10> It's all aspects of the same thing.

You can't inject a nuclear reactor into a burrito in any language untyped or not because it will lead to an error.

The only difference is python/js the error will happen at runtime while in C$/java the error happens at compile time.

The main difference is the type. In typed languages you need describe am interface or a class of types if you want to do mocking or dynamic dispatch while in dynamic languages you don't need to explicitly define this as a type, the definition exists in how you use the object that is passed in.

Either way DI, however universal, in any language is bad practice.</comment></comment></comment></comment></comment></comment>


Ask HN: When to settle down (as a guy)? - <AUTHOR> So here's the thing. I have an online business is doing $xM/y. I have lots of friends and I travel a lot. But I just turned 30.
Now I know time is limited etc. But I don't feel like starting a family or anything like that yet. I have the freedom to do anything, go anywhere. On the other hand, I don't want to miss out on the window of opportunity and be 50 and childless and lonely.
I kinda just wanna keep doing whatever I want. Meanwhile all my friends are moving in together, getting babies etc. Am I fucking up here? Hasn't time changed though?
Or do I have severe Peter Pan issues? It's not like I'm not responsible though, I take care of myself, my finances, my friends and family (that is, my parents!). I feel like if you don't do it, society sees you as a failure but I don't think I am?
I hear so many nightmare stories from married friends with babies etc. Divorces. Breakups. Also good stories. But mostly it seems people around me aren't that happy with the choices that "happened to them". I'm like rationally wondering if that's really a smart choice when I'm in a pretty ideal situation now. It doesn't seem like a choice for most, and it also appears like it's mostly women making the choice for them (if I ask my guy friends).
I mostly wonder how long I should prolong it before I do it to optimize my usage of (life) time. <comment><USER2> Well, for one thing, settling down isn't something you can go out and buy or manufacture. Finding the right person and the right time is hard and also a bit of luck.

One thing I would consider, though, is that the older you are, the harder kids become and the less of their life you'll get to see. I was 37 when my kid was born and I wish I'd had her a bit earlier.

<comment><AUTHOR> Thanks! How did you approach the process of finding the right person? As a purposeful thing or just let it happen by serendipity?

<comment><USER2> I had no approach, it just happened. But you have to be out and doing things for it to happen, they're not going to show up on your couch one day while you're playing video games or watching TV, that is for sure. Well, unless you order a bride or something.

</comment></comment></comment><comment><USER3> The question is, do you have meaning in your life? Romantic marriage is just a way to find meaning, by devoting yourself to someone else. If that sort of meaning appeals to you, then be open to marriage. If that doesn't appeal to you, or you aren't willing to make other meanings in your life secondary, marriage probably isn't going to work out.

Regardless of what you decide, don't be one of those people who is looking for someone to marry. For it to work, marriage really has to be a natural evolution of the relationship.

</comment><comment><USER4> To offer a little context, I am not someone who has ever done things the "right," or "normal" way. It doesn't matter if it's school, career, relationships, whatever, I have always done things that feel right to me for me. I am 38 and I have been married for ~2.5 years, no kids. Marriage was never a priority, nor were children.

Getting married for societal acceptance, or FOMO are not good reasons.

Marriage has been one of the most rewarding experiences of my life. Before I was married I would ask people why they got married, or what was great about it. Often the response I got was, "you won't know until you do it." Once I got married my response was the same. Now, I think I understand that it is similar to having children. In my mind, marriage is about being committed to a person in a way that I was only ever committed to myself. I always put my wife first and this is a healthy exercise. It's similar to having children in this way, children forces you, or should, to put someone else ahead of yourself. This helps by presenting new perspectives that allow us understand ourselves, our value and our position in new ways. I have said elsewhere that I think this is part of what makes us fully formed people rather than remaining entitled children. I'm not saying this is the only way, but appears to me to be a very effective method of resetting our egos and expanding our understanding - marriage and children.

Furthermore, I think it's worth mentioning you don't have to give-up any of your drive, pursuits or determination to commit to another person. We are a team. I am trying to launch a startup, which is relevant for many others here. It's been a long, difficult few years. My wife has made all the difference. I am a solo founder and we are each other's support team.

Most importantly the type of marriage you have is entirely up to you. My wife and I operate on a clear system of brutal honesty and communication. I think that if you put the team ahead of yourself, and your partner does the same, it's just a matter of negotiating details. We haven't been married long, and regardless of what the future holds, I have already realized more value in being married than if I had not done it.

Finally, I am not selling marriage, it's not for everyone. However, I had similar thoughts at around your age and no one offered this perspective. I hope you find it helpful.

<comment><AUTHOR> Thank you! That's a great perspective. What did you do in the mean time between 30 and 38? Did you date many people? What made you settle down with the person you're with now. Was is time/age? The right person?

How do you know if it's the right person (I know, big questions here haha!)

<comment><USER4> Between the ages of 30 and 38 I have been focused on my career primarily. I am interested in building and creating and that has always been my focus.

I have dated a bunch, but I am not a fan of it. For me, my comfort level requires some time, so I have always preferred a relationship as opposed to a couple of months here and there dating. I don't think there is a right or wrong there, it's entirely personal preference. I will say that between 15 and 35 I got everything out of my system. When I got married I was not worried about anything I hadn't done yet. I am originally from the Midwest and I have lived in Los Angeles and Manhattan multiple times, and traveled internationally, so my experiences have been diverse.

There is no right person, age or time. I appreciate that you are looking for an answer, but I think it comes down to faith. I mean this in the most non- religious way possible, but I am not sure how else to describe it. When you believe things are going to work because you believe you and your partner have the same understanding and objectives regarding the relationship, and you believe your partner has the same belief, I think that's as close as you can get to knowing the answer to any of those questions about right person, time or age.

I was not looking and I was surprised with who it was, as well as when and where I found my wife.

</comment></comment></comment><comment><AUTHOR> P.S. I have no big trouble dating, I've also had 3Y+ relationships. Just didn't feel like I was ready to give everything up and settle down.

</comment><comment><USER5> It's too late! Seriously. The worst advice parents give to children, is to wait before settling down and having children. To wait for anything: having fun, studies, carrier, whatever the reason.

On the contrary, parents should help children to get married and start making babies as soon as possible once they're adult.

Because otherwise, as you mention it, you get to hear what's really like to have a family, and the more time passes, the more you come to realize what a crazy thing it would be, and the less you become inclined to do it. No, this is something that should be done before you come to your senses, while you're still a crazy young adult yourself! And also, while you still have the energy to have three lifes at the same time!

Soldiers are sent to wars in their twenties. They shouldn't be sent there without having a wife and one or more babies already. Therefore people should marry very early, so they're ready to be sent to wars and be possibly killed, with their children already born!

Economically, it makes also much more sense to have babies early. Imagine you have a son at 20, then you study till 24, start your business and develop it. 16 years later, your business has grown, like your 20 years old son, who can then start working with you in the family business. 20 years later, your grand-son is ready to start working with your and your son in your business, and you're not even thinking in retirement yet!

So, you're 30. That's not too late, but I would say hurry, because soon you'll start to feel tired, and also it will become more and more expensive, for a guy, to find a woman in age of having babies about your same age: you will have to find younger and younger a woman, and this is expensive. (Despite menopause age being about 50 years old, women often cannot make healthy babies after 30 or 35 years old).

So hurry! And good luck!</comment>


67% of ASP.NET websites have serious config related security vulnerabilities - <AUTHOR> http://www.troyhunt.com/2012/04/67-of-aspnet-websites-have-serious.html

<comment><USER2> This would be a symptom of developers also being the sysadmins.

On another note, Microsoft typically has good documentation but I feel that they need a very simple 5 page 'Owners Guide' for some products that goes over the most important topics in a simple manner. We can't assume that only experts will use said products so at least provide a dead simple 'This is how to not screw yourself' guide.

The custom errors issue the article talks about is an insanely basic configuration error that is NOT the default. Someone started tinkering with a setting without realizing it's full extent.</comment>


Student Debt Bondage Becoming More Widespread - <AUTHOR> https://www.nakedcapitalism.com/2018/10/student-debt-bondage-becoming-widespread.html <comment><USER2> What's even more shocking to me is when someone graduates from a B.A., manages to pay the $35,000 debt or so, and then immediately signs up for $100,000+ in professional graduate debt, specifically MBA or Law programs.

Most medical programs have a decent ROI, but many MBAs and JD programs add questionable value.

For many, the debt becomes a 20 year ROI curve. After just 7 years in industry, I can't imagine being forced to make decisions based on debt rather than desire.</comment>


About the Security Content of iOS 12.2 - <AUTHOR> https://support.apple.com/en-al/HT209599 <comment><USER2> Looks like a lot of them would not have happened, if they had used Rust in the First place!

<comment><USER3> 29/51 appear to be memory unsafety [https://twitter.com/LazyFishBarrel/status/111032101282489958...](https://twitter.com/LazyFishBarrel/status/1110321012824899584)</comment></comment>


Voice Recognition Company LavaRock for Twilio Voice Apps - <AUTHOR> http://lavarockhq.com

<comment><USER2> Hopefully this gets added to the Twilio API some day, but in the mean time, this looks like a good service.

</comment><comment><USER3> congrats to LavaRock! This could be huge for Twilio since many people I speak to seem to view voice recognition as an adoption hurdle.

</comment><comment><USER4> Yay, how cool!

</comment><comment><USER5> nice!</comment>


Havarti: a self-hosted pip proxy/cache - <AUTHOR> http://www.jakebasile.com/projects/havarti/

<comment><USER2> I feel like I just earned a life achievement, seeing something I made on HN.</comment>


Sorting a million 32-bit integers in 2MB of RAM using Python - <AUTHOR> http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html

<comment><USER2> Yes the question is bogus since 1 million 32bit integers require 4MB storage.

Here is my solution. Select the 500.000 smallest values, sort them using an in place sorting algorithm and spit them out, then select the 500.000 biggest values, sort them and spit them out.

The problem then boils down to select the n/2 smallest values of the list. To do this I store the n/2 first values in the 2MB buffer. I then organize them into a heap with the biggest at the top. I then process the remaining n/2 values. When one of these values is bigger than the heap top value, it is skipped. If it is smaller, the heap biggest value is replaced with the smaller value and the heap is restored to get the biggest value at the top. When all the n/2 values have been processed, the 2MB buffer contains the n/2 smallest values of the million integer list.

Since it is already organized as a heap one can use heap sort to sort it. Pick the biggest value at the top and swap it with the last value of the list and restore heap to get the next biggest value at the top. Swap it with the last unsorted value and proceed until the heap length is reduced to one element.

Apply the same algorithm with the n/2 biggest value but using a heap with the smallest value at the top.

This algorithm requires two passes over the million integer, and uses nothing more than the 2MB buffer.

The complexity is O(nlog).

<comment><USER3> I am in the process of writing a program to sort one million 32bit integers in 2MB in RAM.

The trick is to notice that sorting the numbers loses information. One million sorted numbers take (in theory) log_2 (1000000!) less bits to store than the same numbers shuffled randomly. That's around 18488884.82 bits.

So you get an ideal storage requirement of +32000000-18488884=13511116 bits. That's about 1.6MB (thus less than 2MB). If you're clever you'll stay close enough to the theoretical limit in your implementation.

Strangely bz2 seems to be able to compress my list of random numbers (in a binary file) to 164KB. That's even less than what my theory says.

At first I suspected my pseudo-random number generator (/dev/urandom on a recent Ubuntu) my produce hidden patterns. But I since tested it on true random numbers from random.org. Same result.

I'll investigate.

<comment><USER4> I believe your ideal storage requirement, but what's the time complexity of your algorithm, and could you describe it in more detail than "clever"?

I'm pretty sure random reads and writes on any compressed form will be worse than O(1), and I'm pretty sure your sort will do O(n log n) of those, so I believe your algorithm is asymptotically (and in practice for n = 1 million) slower than chmike's two-pass algorithm.

<comment><USER5> I was thinking along eru's lines. The specifics I came up with: 1) Compress sorted lists by encoding the differences between successive numbers using a code that's shorter for smaller numbers. 2) Use in-memory merge sort. That way you don't need random access to the lists, and it's overall O(n log n). 3) In order to merge large lists when memory is already almost full, divide the lists into blocks, allocate blocks for the merged list while you're deallocating blocks from the two source lists. 4) To do this in Python, use the "array" module.</comment></comment></comment></comment>


Dap: A new mobile scheduling startup - <AUTHOR> https://www.facebook.com/video.php?v=423602807789220&set=vb.384377941711707&type=2&theater

<comment><USER2> I am not affiliated, but In the video they show this link.

[http://signup.dap.today/](http://signup.dap.today/)

<comment><AUTHOR> Thanks for putting out I completely forgot.

</comment></comment><comment><USER3> Can you re-submit the actual startup? The link goes to a video on Facebook and requires FB login.

<comment><AUTHOR> What do you mean with the actual startup? The only thing that we have is the signup from the post above. If you signup we will send you a link to download our alpha prototype.</comment></comment>


Harvard Engineers Develop Robot to Help Fight Malaria - <AUTHOR> http://www.bostonglobe.com/business/2014/05/07/mosquito-harvest/Qxto58qtpGHhRVfliT6aHI/story.html

<comment><USER2> From the headline I imagined autonomous drones sucking mosquitoes into traps, or perhaps mosquito-sized drones interfering with their reproduction somehow.

I did NOT expect a Kickstarter campaign to fund a robot that beheads individual mosquitoes and extracts their salivary glands in order to manufacture a vaccine.

The world is truly becoming stranger than we can imagine.

<comment><AUTHOR> Yea man, this Nature article about the vaccine seems as surprised as you [http://www.nature.com/news/zapped-malaria-parasite-raises- va...](http://www.nature.com/news/zapped-malaria-parasite-raises-vaccine- hopes-1.13536)

</comment></comment><comment><USER3> This is an awesome project. Deserving of one's donation far beyond 99.9% of the other crowdfunding projects out there.

But why isn't the NIH or FDA or NSF or even the WHO funding this? Has government funding for health care dried up to this degree?

<comment><AUTHOR> They posted a video response on their Indiegogo: [https://www.youtube.com/watch?v=rgPbBAa6dj0](https://www.youtube.com/watch?v=rgPbBAa6dj0)

As I understand it, there are two reasons as to why they've turned to crowdfunding. One, large funding bodies are more concerned with the vaccine's clinical trials right now, and will worry about scale up of vaccine production when the time comes. Two, with respect to reason one (and the ignorance of the aforementioned funding bodies), Sanaria wants to do all it can to keep vaccine production costs down and vaccine supply high so that the eventual price/dose in a developing context is as low as possible, hence the development of a dissection robot.

The CEO has also mentioned on various interviews/IAmA that the price/dose for the US Military and avg. Western traveler will be significantly more expensive in order to help keep the price down for underserved populations. ([http://www.reddit.com/r/IAmA/comments/1k164k/iama_stephen_l_...](http://www.reddit.com/r/IAmA/comments/1k164k/iama_stephen_l_hoffman_the_ceo_of_sanaria_inc/))

</comment></comment><comment><USER4> This is truly awesome!

If anyone wants, I have the schematics for a bat chirper (pretends to make bat sounds) to keep mosquitos away and attract bats.</comment>


What I Learned Co-Founding Dribbble - <AUTHOR> https://medium.com/dribbble/what-i-learned-co-founding-dribbble-8680f6816e3d <comment><USER2> Previously on Lost: [https://news.ycombinator.com/item?id=20294464](https://news.ycombinator.com/item?id=20294464) (link to his personal blog rather than Medium)

<comment><USER3> yuck, since when medium added paywall?

<comment><USER2> Yeah, been going a bit downhill recently.

</comment></comment></comment><comment><USER4> I don't understand why people publish paid content. How the hell are we gonna read it. BTW, I've read the article and is not that worth subscribing medium.

<comment><USER5> Do you prefer ads? Or you just don't think writers should get paid?

<comment><USER6> Are you suggesting that Dan wrote this article to make money?

</comment></comment></comment><comment><USER7> It's for their paying subscribers. Welcome to monetization of content.

<comment><USER8> Welcome to a world without ads. Don't like ads? Get use to paywalls.

<comment><USER9> This shouldn't get downvoted. If you don't like paywalls, and you don't like ads, what business model exactly should websites like medium follow?

</comment></comment></comment><comment><USER10> Most things are very generic and not any different from the million other blogs on "How to make your startup successful". This does not justify being behind a paywall.

But I don't fully agree with "Don't take funding" as generic advice. I mean, sure, if you can afford not to, do so by all means. 90% of the founders don't have another choice. So, you will end up being dictated by the VC.</comment>


The rise and fall of MySpace - <AUTHOR> http://www.ft.com/cms/s/2/fd9ffd9c-dee5-11de-adff-00144feab49a.html <comment><USER2> _Former MySpace executives say News Corp dragged its feet over implementing Ajax, a program that allows users to send a message, an e-mail or to post a comment on their friends' pages without having to open a new browser window._

That's one way of defining it I guess.

<comment><USER3> I'm a technical guy, that description is accurate. Minor terminology changes to be spot on:

 _Former MySpace executives say News Corp dragged its feet over implementing Ajax, a [set of libraries] which allow users to send a message, an e-mail or to post a comment on their friends' pages without having to open a new browser [page]._

The real problem is the hard link between page views and ad revenue. That leads to quotes like this: "We went to News Corp and said: 'We want to change this but in the short term our revenues will drop.' It became a long back and forth."

Bickering like that kills time and blinds you to other uses of Ajax, such as how Facebook lets users rate ads, each click loading up a new ad without another page view.

<comment><USER4> The way I look at it is that if you are already doing the work to implement AJAX and remove the need for more page views to submit comment forms or do other things, why not go a little farther and write code to load new ads at the same time? There shouldn't be any reason why AJAX would reduce ad revenue if you simply made each major AJAX call change the ads.

<comment><USER5> My guess is that their existing ad contracts would forbid that. The contracts were probably worded to have an ad displayed for the entire duration the page was open.

<comment><USER4> Ah, that makes sense. Thanks for clarifying.

</comment></comment></comment></comment></comment><comment><USER6> Somehow I find it hard to imagine that even if the new management and technical team had gelled that they would have been able to keep up with Facebook. Their codebase was a flaming hulk of crap to start with, and you can just imagine how much improvement it would get from a biz guy "hiring a team to clean it up". Compared to Facebook which is one of the most amazing engineering organizations of all time.

The only opening would have been if MySpace was somehow smarter about what users wanted, but outside of customizable profiles and music they didn't have any new tricks.

<comment><USER7> I think Facebook architecture is bloated as well ... /home.php? come on ...

<comment><USER6> Is the critique that they are using PHP or that they aren't using some kind of extensionless routing?

Either way it's silly to use superficial factors like that to judge large websites. Given the performance profile, data interconnectedness, complex public API, and interface richness of Facebook, the rate at which they push changes (small changes daily, weekly major pushes) and advance the product is _astonishing_.

</comment></comment></comment><comment><USER8> At the end of the article, FT has the usual "share this" links, letting the reader share the article via email, Twitter, Digg, LinkedIn, Yahoo! Buzz, Delicious, reddit, Mixx, Facebook, stumbleupon, or Viadeo.

Notably absent: MySpace

</comment><comment><USER9> MySpace may have become irrelevant as a social website for ordinary users, but it is easiliy the most important site for web sites for musicians: _everybody_ who remotely means anything in modern music, has a (heavily personalized) page up on MySpace, with a few mp3 files up for streaming; sometimes whole songs, sometimes just 30 second samples.

<comment><USER10> True for modern music as you say, but for people like me, who like classical music, MySpace has little pull if it doesn't want to play the game of competing with FB as a general-interest social networking site.

And, as the FT noted earlier, Myspace has given up competing with FB for #s.

<comment><USER11> And most classical musicians don't need the pull of a social network to gain traction - they have a track record in symphonies, typically a strong network of other musicians from a strong music school, mentors and so on and so forth. Meanwhile, someone trying to "break in" to any non-classical genre, be it pop, rock, metal, synth-groove, indie-emo-core, anti-folk, shoegaze, etc, needs the help of a social network to garner excitement about their particular brand.

You don't need a brand as a classical musician, as you're usually just playing someone else's tune. (Unless, of course, you're both a musician and a composer, and so on and so forth)

So, of course it's not going to be much of a use to you, as you completely disregard most changes in musical style and composition (I personally love classical music, but that doesn't preclude me from loving other "modern" styles) over the past century or so. Your stubbornness in not exploring new aural sensations eliminates you from their target niche, just as the discouraged unemployed are eliminated from the unemployment statistics ;)

</comment></comment></comment><comment><USER10> What got me was another FT article (linked to from this one) noting that MySpace/News Corp is wasting $1-2mil per MONTH for unused office space: <http://bit.ly/5wfL2V>

(They committed to the lease before deciding not to move there. Now they can't sub-lease it because of the economy, but still have to pay.)

</comment><comment><USER12> If any thing the myspace story demonstrates how important the technology underlying your web prescence is. MySpace used to be held up as a poster child for how little the Technology and presentation mattered. Now though it's obvious how much it did.

The article doesn't come right out and say it but you could see hints that the technology was a barrier tucked in here and there. I almost feel bad for the News Corp execs cause it sounded like they inherited a crappy technology platform and the myspace execs fought them tooth and nail when they tried to fix it. That combined with a misunderstanding of how web advertising works (Murdoch still doesn't get it even now) and Zero empowerment for the MySpace engineers is what caused MySpaces fall.

</comment><comment><USER13>
      "There was so much data about each MySpace user, which Rupert got immediately,"
      says Levinsohn. "What would you pay to get someone's name, age, geography?
      With MySpace, you would also know what car they drive, what music they
      listened to, their favourite movie star."

I know this but it still sends a chill down my spine. Even Rupert Murdoch got it.

</comment><comment><USER14> Honestly, the only thing that's stopped me from deleting my MySpace account is the fact that I have to log on to MySpace to do it.

</comment><comment><USER15> It's almost a shame this degenerates into an overview of how management and communication collapses in a corporation, but at the same time it's a positive reminder that growing a 'Web 2.0' business doesn't automatically exclude the risks of Business 1.0.

</comment><comment><USER16> the message i'm taking away from this is: no matter how much your acquirer assures you that they won't interfere with your business, eventually they will.</comment>


Ask HN: Remote workers, how do you show your work? - <AUTHOR> When I was working remotely as a dev, I found one of the hardest problems was communicating what I was working on with my team.
My parents always taught me to be modest when speaking about myself, and to let my results speak for itself. However, I found that in a team environment, proactive communication works much better.
How do you share your day to day with your team? What tools, methods, or habits do you use to solve this problem? <comment><USER2> I am working remotely for the last 5 years and currently working at GitLab which is a remote only company. Here are my humble advices for you.

\- Always check in with your manager. Let them know your status before they ask.

\- Make sure to deliver your stuff on time. If you can't do it, let your manager and other related team members before it's too late. Explain the reasons why you failed and learn your lessons. Try to avoid the same situation happen to you again. If it's your fault, accept it and move on. Try to do better next time.

\- Share big and important updates with your team. It can be something simple like "Hey everybody, I did this and here you can take a look". If you use Slack you can post this to a public channel or you can send it via email.

\- Add screen recordings to your Merge Requests. You can use Gif tools like, LICEcap or recordit.co.

\- Be responsive to your mails, issues, TODOs, Merge Request comments etc.

\- Always make sure that you have assigned with something to work on and you know what to do next.

\- Try to be available when someone needs your help.

\- Last one, maybe the most important one is doing a weekly meeting. If you don't have a weekly team meeting, you should tell your manager to start doing one. It's the most easiest and productive way to share important updates and sync up with other team members. At GitLab, we have a shared Google Doc and everyone can add their items to that list. Then people talk about their items then pass it to next person. You can also do daily stand-up meetings. It should be something quick and every team member should have 1-2 minute to talk about their updates and answer the questions below. You can also do this in async way by posting answers of these questions to a Slack channel.

I. What did you work on yesterday?

II. What will you work on today?

III. Is there any obstacles?

<comment><USER3> I wish some of my remote team would read this message. Though I'm not sold on this one:

\- Add screen recordings to your Merge Requests. You can use Gif tools like, LICEcap or recordit.co.

Also, that last meeting you talk about is usually called a stand-up meeting and when using Scrum project management it is supposed to be every day. I don't think I've ever heard of it being done once a week. Not that it is abad thing, I'm curious if some other companies are only doing it once a week.

<comment><USER4> > I wish some of my remote team would read this message.

To be fair most workers are never going to do on their own what the business wants or what is good for the team. They don't understand it well enough as they are neither business people nor managers and it's not up to them.

<comment><USER3> I know it's four days later but this might be one of the most condescending arrogant things that I have every read on Hacker News.

Really? Business is so magical that someone with a Computer Science degree couldn't possibly understand business.

As a manager or CEO it is your job to make sure everyone in the company understands the mission and what is needed to get there. And that everyone is empowered to act on a daily basis to move that mission forward.

A leader realizes that the people on their team have insights and knowledge that they do not. A good leader empowers not dictates. You sir, have some lessons to learn.

There is a reason so many great companies are founded by software engineers. Based on your logic those should all fail because Software Engineers should just stick to coding not thinking about what is best for the business.

</comment></comment></comment></comment><comment><USER5> It always helped me to be proactive, which meant basically something like a quick status report to everyone on the team (not just superiors) every few weeks, whether they asked for it or not.

It's always short, maybe around 3-5 bullet points, with a link to something showing the end result of the task. (Github is good enough for a technical audience, but you probably want to link to the actual end-result for nontechnical audiences)

The big thing though, is the attitude you have towards yourself and your teammates when presenting this stuff.

You _shouldn 't_ be presenting it as proof that you're working and not sitting at the beach or something. You also _shouldn 't_ present it as some sort of validation, like "Bob got praise from the CEO, I did good stuff too, I want praise!". Instead, you should approach it as "I've been working on this thing that's related to what you've been doing. I kind of feel like you might not know about it, or not know the extent that it impacts your work. Here's some info. If it's old info, I've wasted the minimum amount of your time I can. If it's new, I've just made your job that much easier".

And just send them out when you feel that disconnect. More often than not, your instinct is right and the other team members really could use that info.

To date, I've only ever received positive feedback on these sporadic unscheduled status reports :)

<comment><USER6> We do this as a weekly team practice, remote or not (our team is mixed). It's quite good, especially if tasks get captured in JIRA or GitHub or some other linkable manner if people want to dig deeper.

It's particularly valuable when meetings that happen entirely in one office get the result shared out to remote folks who might not have even known it happened. The biggest complaint we have from remote workers is FOMO, and often just a one-liner about a meeting's result puts a lot of that to rest.

</comment></comment><comment><USER7> I have this problem too - both as an employee and as a remote-only employer. I work as QA - not as a developer, though. I also work in a different timezone. I have found people start paying attention and valuing you once they start seeing you as a normal human who happens to work elsewhere and not as a "remote entity". I have tried these adjustments and I think they help:

a) make an effort to share things other than work - interesting articles you read, participate/respond in watercooler chats, post side-projects you may be working on, your favorite hobbies, post when you are stepping out and are back again, etc. This is counter-intuitive and not a direct solution, but you end up seeming like a human rather than some remote contractor. Once that happens, people start taking more interest in your work automatically.

b) get to know your colleagues, start meetings with a little bit of small talk, explicitly ask for feedback and don't hesitate to speak up if your team takes a decision that is not very remote-friendly (I've messed up plenty here!). Many teams will go out of the way to integrate you if you tell them how.

c) try writing summaries at the end of each day, week ... even if nobody is paying attention initially. Daily summaries are private and for standup while I record weekly updates on some internal wiki. I like cartoons, so I typically include some cartoons in my weekly summaries.

d) attend standup and come prepared. Your updates should be much longer and much more detailed than someone who is not remote. Days you miss standup, you should try posting your update on Slack.

e) turn on your camera for all meetings. It's another one of those habits that make remote workers much more 'real' and relatable.

f) make sure you have good audio/video and Internet connection.

</comment><comment><USER8> Just the same way I would if I wasn't remote. When working in an office, it's not like people come looking at my screen behind my shoulder anyway (I would hate it).

Basically my activity is visible on the source tracker through the PR is submit and review, the bug tracker, Slack discussions, and we have a daily team meeting where everyone shared what he/she's doing.

We also have a Geekbot on slack so everyone can share what he's done in the day and what he's planning to do the next day.

<comment><USER9> This, plus in preparation for a worst case scenario, I use Toptracker which records screenshots and logs hours

[1]: [http://tracker.toptal.com](http://tracker.toptal.com)

</comment></comment><comment><USER10> Our team has a daily standup call where we discuss what we've been up to (we're remote but in compatible timezones); where appropriate this will include screen sharing to demo a feature we're working on.

We have automated slack notifications for GitHub commits, and the team leader and all other developers have full access to the git logs to see what each of us has done. We also use Trello to keep track of tasks.

</comment><comment><USER11> As a frontend dev, GIFs of the piece of functionality you've implemented in a PR are a godsend. A good practice to get into even if you're not remote.

<comment><USER12> What do you use to generate them?

<comment><USER13> I do the same and use LICEcap: [https://www.cockos.com/licecap/](https://www.cockos.com/licecap/)

Some teammates use [https://github.com/phw/peek](https://github.com/phw/peek).

<comment><USER14> Why this over a browser extension?

<comment><USER14> How does a simple and valid question get a down vote?

</comment></comment></comment></comment></comment><comment><USER15> Everywhere I've worked has had a weekly/bi-weekly showcase where the developers show any work that they'd completed since the last one. If this wasn't in place I think it would be hard for even onsite developers to keep everyone up to speed with what they're doing.

</comment><comment><USER16> A few ways:

\- Asynchronous standups with Geekbot in Slack ([https://geekbot.io/](https://geekbot.io/)). Any shared doc will do here, really.

\- Occasional demos over video chat of new functionality to internal teams. It helps that my entire team attends.

\- Our API has a chatbot that we can use to query it, so I can show new features for that part of the infrastructure directly in our team channel.

\- Ask people for code reviews, and rotate who you ask.

\- Ask people to pair program with you over a screen share, or offer to pair with them.

It helps if your team is 100% remote. If it isn't, maybe talk with your team about trying to get people to be more disciplined about making decisions via chat or team meetings rather than only with the people in the office. One thing a few coworkers and I did when we were 3 out of 8 who worked in the office was catch everybody up on IRC whenever we had a side discussion. It's unrealistic to expect _everything_ to happen over chat mediums with that kind of team, but something like that can help.

(edited to fix formatting)

</comment><comment><USER17> After working remotely for years I found a system that worked for me. I would email, or send a slack message, to my direct manager every single day. It really helps especially when you're working asynchronously and you're not online at the same time.

Here's the template:

Hey {{ manager.name}}, here's my status update for today.

1\. I got the free email, created, scheduled, and ready to be sent. 2\. I fixed the job creator bugs related to the timezone issues 3\. I added a few dynamic rules to the email creator to make things easier in the future.

 _Here's the document where I document those dynamic rules_ : {{ link }}

Tomorrow, I'm going to implement the automatic country-tagging based on the user's timezone.

\---

A simple daily summary like that really helped increase my communication with my manager and help keep us on the same page. I even ended up creating a #status-update channel on the Slack we use.

</comment><comment><USER18> In our team we use Wrike for project management. Each team member customizes their workflow and makes their project/task list public for the most part; completion is seen at a glance and project leads are added as default collaborators. Project leads can also tag tasks from users into separate folders for critical items, and do assignments and update due dates if needed.

The gantt charts and reports allow each member to ensure they can validate their work progress, and the project manager/leads being able to visualize it as well at any time.

Myself and two others also use Jira/Jira Core separately for operations and software issue tracking.

Wrike and Jira both integrate with Microsoft Teams as functional, browsable tabs and serves to provide connected dashboards in real-time.

We have team members across four countries so weekly meetings involve screen sharing, annotation, and task creation/assignment in Wrike done on the fly as well.

Regardless of your software choices, my tip is to ensure you have a way of reporting/visualizing progress and being able to integrate the project management tool with your communication tool of choice.

</comment><comment><USER19> I started working remotely a couple of years ago and I found this immensely challenging. I always felt like I was behind the rest of the team since they could all see what each other was doing, but I felt like I was in my own little bubble. It didn't help that I was working on a totally separate part of our app that no one else was really involved with. As time went on, my manager made it pretty clear that he was happy with my progress and I realised that this was the only real important thing.

Since then, I've moved onto a totally different area of work, and if I'm doing my job right, my work should be almost imperceptible to the rest of the team. Occasionally I have to ask the team to adapt to a new process, etc. which isn't helpful since they only really see the negative aspects of my role, but again, my manager is happy, so I'm happy.

You asked about tools, etc. and I'll cover that, but I wanted to share that I don't think it's of vital importance that everyone knows what _you_ are working on. It's understandable to want to know what everyone else is working on, and if that's the case, bring it up with your manager. Let them know that you'd like to know more about the rest of the team and work out a solution with them. However, it will never be perfect.

So, in terms of tooling for us, we use Slack for day to day communication (somewhat ironic considering we work on an email client), and we have a few different channels for our work. The two most important one are our general one for the app where we can ask questions, share advice, etc. The other is our "syncup" channel where we post update of what we are working on, what we worked on, etc. It's basically a standup channel. The hardest part is remembering to update it regularly. In addition, we have a full team meeting once a week via video call.

So, basically, use Slack/Hip Chat/email/whatever for regular updates with everyone, and for the bigger picture stuff, you only need to convince your manager that you are getting everything done.

</comment><comment><USER20> I am team lead for a 100% remote consulting team. My observations mostly match what's already been posted, but let me reiterate what I see from a level 1 manager perspective.

If using agile, create work items/PBIs for everything and document decisions in your tool (or, less optimally, in slack/teams/other persistent group chat tool). I obsessively look in these tools to understand what my team is doing/ has done.

Go through work items/PBIs as a team frequently (we nominally do daily, it's more like every other day) to update remaining work. If I as the L1 manager see your work melting away I'm happy and you have great evidence of productivity.

Communicate what is happening in the rest of your life. If I know my team member has family visiting or a sick kid I can mentally process that better than a simple "my productivity will be down for a few days". Even worse is not communicating at all- I have seen team members disappear for days and screw up our sprint commitments. I understand there are cultural issues here at times, but team members who don't communicate are a problem: the customer and L2+ bosses want to know reasons why things slip and this information often gets communicated up the chain. Why work isn't happening is also important.

Don't miss commitments and communicate risks or issues that might cause a miss early and loudly. And do so in writing (preferably in the chat channel). I have had people burn down a PBI for a whole sprint only to discover it half done, now we have a trust issue and I'm not sure I can trust the information I do have about productivity.

Note- I don't really track my teams PRs or code commits, I track completion of user stories/tasks. One of my team members talked the customer into using an off the shelf service to implement a feature last week. No code commit, but I know her productivity is very high because she knocked off her features like crazy.

Demo both code and features to team. This is great for knowledge transfer and keeps the whole team aware of what is going on.

Hope that helps.

Ed- I work in a very "enterprisey" world, YMMV in more consumer or packaged service oriented world

</comment><comment><USER21> We're a 100% remote company. I wrote a blog post a while ago about how we work here ([https://www.screenly.io/blog/2016/11/23/how-we-work-at- scree...](https://www.screenly.io/blog/2016/11/23/how-we-work-at-screenly/)). The tl;dr is basically hire smart (independent) people and let them do their thing. We run a daily standup over chat are constantly experimenting and tweaking the processes.

Tooling wise, we use Flowdock, Phabricator and Google hangouts for meetings. PR are to have GIFs attached.

</comment><comment><USER22> We're a startup of >30 people, some of us work part time and we're distributed in opposite time zones. We have no offices, everybody's work is 100% remote. This is what we do:

-An asynchronous daily scrum session in Rocket Chat (awesome free, self-hosted tool).

-A channel in Rocket Chat dedicated to alert about commits. Commits are actually the most important criteria for measuring an engineer's output.

-GitLab board. (Previously Trello board).

-If everyone speaks in a public channel (even if only speaking directly to a single person), one's output can be judged if she is making and answering questions.

<comment><USER23> terrible

</comment></comment><comment><USER24> I (try) to make conversations with people about non-work, over chat, to see if they want to make a connection with me. Those that do, always end up being stronger work related connections.

However, the majority of people do not want to reach back, and to those people I don't press the issue with repeated attempts. I think that a lot of people are put off by small talk, or are just too busy for it; I hope with them that not having a memory of me as being annoying is the best relationship I can have.

Sometimes they will just say "Sorry I'm just really busy" \- this is great information too just as a barometer. It's less often, but a poke with a joke can get you onto some side work that improves your reputation if you're able to genuinely assist someone having a bad month.

I have the option to work remotely but I take the 40 minute commute in, because I get a lot better mileage off people by reading their body language, faces, where they are looking, holding their arms, how far they stand from me, et cetera. It's like running a program with the -debug flag, for me, and remotely I have no access to it.

And I hate to say it, but I feel that you hope one level up the stack just by being present. It's almost a digital caste system. Some useless kid texting his friends in the conference room has equal clout as the seasoned principal dialed in on the phone.

Also - since we're in this thread - is it just me, or does a time delay on a conference call make the speaker seem less intelligent? I get embarrassed when I learn I am on a 1.5 second audio delay. I will often dial in over PSTN to get that second back.

I agree with OP about letting results be the message, but it is a frustrating way to communicate technical ability because there is no short term payoff. Team members that give impressive, meaningless, daily updates fall flat at the end of a development sprint during a demonstration. Make that the time for your results to speak for you to the people you want to impress, because that is the only time during the sprint that they are probably paying attention to you.

To try and round out my claims above, I've also been the person being annoyed by a chatty remote coworker. Being gracious to them in times of duress is the same game triggered by callback.

</comment><comment><USER25> When I was working remote my commits would show up on the issue tracker, which is great. Deployments to staging or prod would notify a log channel on Slack which is another good one.

I don't see how one can do better than that, since anyone can lie/rationalize under pressure of a Skype session; it's better to see concrete progress, but this requires trust in both directions.

</comment><comment><USER26> I was a terrible developer for many years because of my inability to properly communicate progress. Because there wasn't any for the most part. Parkinson's Law is REAL. Beware! I ended it by religiously adhering to a rule to commit every little bit of progress, as I go. There's only one deadline: today. It completely changed my career.

<comment><USER26> Keep your commit stream going. If you're starting something from scratch, do a commit with a message like "Something (1)" and then increment the index and commit every iteration. You can merge these commits down the road for a cleaner history, but pushing soon and often is KEY to building momentum.

</comment></comment><comment><USER27> I'm "lucky" to be bound by our process which is: we estimate the workload of each task beforehand.

As long as I don't go over the estimates too much everything is okay.

Of course these are never accurate, but with the right granulation(max. 2d per task or subtask) they help with communicating what is it that you do.

</comment><comment><USER28> Jira/Hipchat depending on relevance, pointing to gitlab instance for code and to the build server's drop box for end results. Simple yet effective though I reckon it might not work for all types of software, let alone non-software projects.

</comment><comment><USER29> Any task tracking apps like Trello, Jira or Mingle. And relates GitLab commits with hooks.

</comment><comment><USER30> In my case project managers and service managers. It's their job to ensure that something gets done according to their or the clients specification.

It's my job to work out how it gets done and to abstract the necessary information for the SM/PMs.

</comment><comment><USER31> It depends on the project's phase/team specialization. If it's new features then daily or weekly meetings, if support and bugfixing - you usually create many chats, specific to a particular issue.

</comment><comment><USER32> Exactly as I would do if I was on the office: Jira (or whatever task manager you use), GroupChat, Git PR's and so on.. And if you are doing some sort of Agile, a 15 minute morning stand-up call.

</comment><comment><USER33> I've had to actively downplay my work because my productivity is too high without all the meetings and other distractions. Coworkers get jealous and begin causing problems otherwise.

<comment><USER34> Sounds weird. Can you elaborate, please? What kind of problems did the coworkers caused, how exactly did you downplay your work, etc.?

</comment></comment><comment><USER35> Usually just an update on each scrum meeting and hitting my deadlines. Either the work has been done or it hasn't.

</comment><comment><USER36> Since I work on front-end stuff, I always have something to show.</comment>