< Back to the archive

Like what you see? Subscribe here and get it every week in your inbox!

Issue #84 - October 11, 2020

If you are looking for work, check out this month's Who is hiring? and Who wants to be hired? threads.

Here are the top threads of the week, happy reading!

Top comment by dilippkumar

Microsoft recently announced that their employees can permanently work from home. Several other companies have announced similar policies and this trend will likely become widely adopted very soon.

So far, geographical proximity to a job has so far been an important factor for several employment based visa types like the h1-b. With this quickly changing, can you share some thoughts on how the diminishing importance of a physical work place and proximity to offices will impact various employment related visa types? Is there any indication that some guidance or rule changes to accommodate the changing nature of how we work will be considered any time soon?

Top comment by therealplato

I consider this essential: The ability to decouple the task from your ego.

Specifically:

- Never say "Got it" or "OK" when someone is explaining a problem or solution and you don't follow. It feels awkward to say "Sorry, I'm still not following. Do you mean that when..." five times in the same conversation but it is worth your time and embarrassment to come away with a correctly framed and well understood situation. Otherwise you will figure out what they meant after wasting hours/days/months solving the wrong thing.

- You'll be faced with situations where your colleagues/organization expect you to implement solutions you think are not the best. Understand that "the best way" for the team or business is not necessarily the same as "the best way" for you personally or "the best way" overall. You are likely missing some context about the choice. Be mindful of reputation risks, time costs and maintenance costs involved in changing the approach.

When you're asked to code something you don't agree with (including ethical issues) your options include: silently accept their approach, refuse to do their approach, propose an approach (with conversation or code) and gracefully accept the result, or find another job. Be aware that different organizations will react differently to those approaches. Under no circumstances should you fall into the trap of spending a week to convince the team to adopt a change that would save a week of costs.

Top comment by buro9

It was 1993 and I was homeless, living in a squat, working for bands by selling T-shirts at their gigs - I'd hitch hike to where they played to get paid £20 for the night before sleeping rough nearby. During this I collected names and addresses of their fans so that if the bands got new T-shirts there was the potential to contact the fans and let them know.

One of the bands - Elastica - wanted to shoot a music video and needed 100 fans to be in London in 2 weeks time... the band asked me if I could send a letter, I had 2,000 names and addresses and I got a few friends to volunteer and we hand-wrote 2k envelopes in 5 days and posted them with a phone number to call if you wanted to be in the video... then we went to the management company and manned the phone. They got their 100 fans and had a waiting list of another 200.

The band management company asked how we did this and whether they could put us on a retainer to do it in future as they had big plans for another band - Blur - and I pointed out that it was infeasible to write so many envelopes so often. But I believed a computer could do this, so if they bought me a computer and covered postage and packing, I would build a way to keep in touch with the fans of their acts.

They bought me an IBM 30386 and I had it in the upstairs of the squat. There was a hole in the roof so this part of the room was covered in tarp, and we stole the power from another loft as the hole in the roof granted crawlway access to other lofts. I had never used a computer before as I came from poverty, but I got a book from a library, a reference book on basic, and used that to programme a simple database based on text files, with index text files that I could then mail merge into envelope labels. Scaled that slowly up to be a full database (single user of course), and then a stock control system as staying in touch with fans meant we expanded into selling T-shirts mail order - which produced a surprising amount of revenue.

That was the start... and by then it was 1994 and a lot of the bands that were nothing were about to be something.

Top comment by mcpherrinm

Did you purchase the item from a retailer that you gave an email or phone number which matches the one on your Facebook account? If so, I would suspect such an identifier is being supplied by the retailer to Facebook for ad targeting. It could also be your credit card issuer, potentially.

Private browsing helps prevent browser-based tracking, but doesn't help at all if both sides are playing together and have ways of correlating your identity.

Top comment by gen220

I've worked in environments across the version-control gamut. The best-run places have had monorepos. But, for the life of me, I would not trust the companies that didn't have monorepos, to operate a monorepo.

To go mono is to make an org-level engineering/cultural commitment, that you're going to invest in build tools, dependency graph management, third-party vendoring, trunk-driven development, and ci/cd infrastructure.

Can you make a mono repo work without all of those things? Yes, but you are sacrificing most of its benefits.

If your eng org cannot afford to make those investments (i.e. headcount is middling but there is zero business tolerance for investing in developer experience, or the company is old and the eng org is best described as a disconnected graph), forcing a monorepo is probably not the right idea for you.

Monorepo vs microrepos is analogous in some ways to static vs dynamic typing debate. A well-managed monorepo prevents entire classes of problems, as does static typing. Dynamic typing has much lower table stakes for a "running program", as do microrepos.

edit:

It's worth noting that open source solutions to build tooling, dependency graph management, etc. have gotten extremely good in the last 10 years. At my present company (eng headcount ~200), we spend about 2 engineers-per-year on upgrades and maintenance of this infrastructure. These tools are still quite complex, but the table stakes for a monorepo are lower today than they were 10 years ago.

Top comment by mathieuh

No.

We tried having daily "tea break" calls and weekly "Friday drinks" calls, but attendance was so low that we just cancelled them.

Amongst people who were already friendly we still have private group chats in our work Slack, but the number of conversations is obviously far lower than when you're all in the kitchen making breakfast or tea in the morning.

We had a conversation about why the daily and weekly open conversation calls weren't working, and the resounding answer was they they felt like enforced fun. It's just not the same as meeting someone in a corridor or on a smoke break or in the kitchen.

Top comment by nlh

Here's a trick that works for me that's totally impractical, but is a hint/roadmap to finding a repeatable system:

I've been doing a lot of travel to Europe lately, and the return flight has become my greatest deep work experience ever. I enjoy it so much that I actually look forward to it now and wish I could do it more than ~4 times a year.

I fly either Zurich or Frankfurt to SFO on United and get an economy bulkhead seat (nobody in front to recline). Wifi is solid. In-seat power. It's a ~12 hour day flight (leave around 1pm CET, land 4pm PT). It's dark since many people sleep so they turn the lights off and close the shades. There's enough ambient noise to be calming without annoying. There are zero distractions otherwise. The are regular coffee refills on-demand.

Every time I've done this flight (I've done it 6 times now) I get into a solid and excellent flow state. I've accomplished more on various coding projects in that one flight than sometimes in a week or two of regular at-home time.

Obviously as I said it's not practical to fly around the world to get work done :) But I try to use that as a roadmap for setting up an environment at home to emulate it as much as possible.

Top comment by synaster

Finetuning a GPT-2 model on logs from a chatting server like IRC or Discord you're active in, then writing a bot to generate messages from a prompt using the model.

Top comment by sunstone

You could might try applying to immigrate to Canada. They allow over 300k immigrants a year and the biggest requirements are to not be too old and fluent in English (or French). Lack of an official high school diploma is tricky but you might be able to a) pass some kind high school equivalency test in your country or b) write an internationally recoginzed test (eg SAT or GMAT) if you can score well on those then it should count for something.

If you're not from a liberal democracy kind of place (eg any where that was a UK colony for instance) then your biggest adjustment might be culture. I've worked many very fine people who arrive here and think it's quite ok to voice an opinion like "I hate chinese." or "I hate Indians" or etc which is acceptable in their country but definitely not fine in modern liberal democracy.

Top comment by logronoide

I had a side project called https://Apility.io while I was working full time at Microsoft. It started as a side project but soon I realized it got traction and hundreds of user used it on a daily basis. I added a subscription model to the existing community/free service and I got a good bunch of customers. Last year I had a dilemma: keep on working at Microsoft or leave and dedicate full time to Apility.io. But then Auth0 came up and offered me an acquhire. So now I’m full time (among other things) dedicated to Apility.io inside Auth0. Happy ending.