< Back to the archive

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

Issue #40 - December 8, 2019

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

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

Top comment by charliepark

The US Army has an exceptionally well-crafted field manual on leadership. No fluff, but also no chest-thumping. It's honestly the best resource I've ever seen on what constitutes a good leader, how good leaders are developed, and how good leaders develop their teams.

Being a DOD publication, it's in the public domain: https://usacac.army.mil/sites/default/files/misc/doctrine/CD...

I can't stress enough how excellent it is.

Top comment by gk1

Longer write-up here: https://www.gkogan.co/blog/how-i-learned-to-get-consulting-l...

Some things I learned through mistakes:

- Charge more.

- Travel like a professional and bill the client. For my first business trip I used airline points, stayed at an Airbnb on my own dime, and even refused the client's offer to reimburse me. Stupid. (Full story here: https://www.gkogan.co/blog/stupid/)

- If I'm not enjoying the work, request a change or move on. Don't just "tolerate" it and chug along. One of the greatest benefits of consulting is the freedom to chose whom you work with... Take advantage of it.

- Remember who the client is, and don't get too involved with their subordinates.

- If you don't feel "Hell yes!" about taking on a project or prospect, just skip it. It's not going to get more interesting over time.

- Find a great accountant. Fire bad accountants fast (and lawyers, and other service providers).

- Tell the client the hard truth.

- Impostor syndrome is normal. Get over it.

- Stop trying to go above-and-beyond all the time. Do what you were brought in to do, and do it exceptionally well. If other opportunities come up, suggest them as follow-on projects instead of just doing extra stuff for free.

- If you're clashing with an exec at the company, tell the client, instead of just backing away from the project.

- There are hundreds/thousands (depending on specialty) of potential clients out there, you just have to find them. So don't worry if a deal falls through, don't envy other consultants, and don't take on bad projects out of desperation.

Top comment by dijit

Every day,

It's become a social network of sorts for geeks, despite the age of the protocol I still find it the least "invasive" and most friendly experience, but that's probably because I spent the time configuring a client that's nice for me. (preview: http://imgs.fyi/img/9ve2.png )

I run a network even, called darkscience and it's available at irc.darkscience.net (TLS only on port 6697) the lobby is #darkscience

ircs://irc.darkscience.net:6697/#darkscience (for those that can parse the url!).

Everyone here is welcome to join us of course, but we put a high emphasis on civility.

Top comment by coldpie

Mozilla, because we need more than one web rendering engine.

EFF, because they fight for a bunch of tech issues I support.

Software Freedom Conservancy, because they do a bunch of legal legwork for open source projects.

Internet Archive, because they're doing a bunch of good work preserving our culture.

TPT (PBS), because we should have high quality non-commercial education and entertainment.

ACLU and ACLU-MN, because they fight for important legal rights for all Americans and Minnesotans.

Planned Parenthood, because they provide critical education and medical services for underserved people.

Top comment by marcus_holmes

I get the feeling that the "wasted effort" in the second approach is about rewriting code.

Rewriting code is good in my experience. It's always better the second time around (or third, or fourth). It's not that my first attempt was rubbish, it's that I didn't understand the problem as well as I did the second time (and so on).

Lean is also about avoiding premature optimisation. Which is hard because it cuts against the grain of our engineer sensibilities. Doing something "good enough for now" is tough, when you know that with just a few more days' effort you could make it bulletproof. But I've had to delete "bulletproof" code so many times, because it turns out the product didn't need that feature, or it needed to work differently.

In the long term, Lean avoids more wasted effort, in my experience.

Top comment by mooted1

Having built similar applications in microservice environments, I think there are usually simpler answers than distributed transactions. And if you do need distributed transactions, this is often a sign that your service boundaries are too granular.

In fact, since the services you're describing don't know about each other, distributed transactions aren't an option.

I think the only solution to this problem is idempotency. Idempotency is a distributed systems swiss army knife—you can tackle 90% of use cases by combining retries and idempotency and never have to worry about ACID. Yes, it adds complexity. No, you don't have a choice.

I'm also not sure why this requires a lot of complexity. Can you explain how you're implementing idempotency? The simplest approach is to initialize an idempotency key on the browser side which you thread across your call graph. Stripe has built in support for idempotency keys so in that case, no additional logic is required. For providers without idempotency support, you'll need a way to track idempotency keys atomically, but this is usually trivial to implement. When a particular provider fails, you can ask users to retry.

* If you need a particular operation to succeed only if another succeeds (creating a stripe charge, for example), make sure that it runs after its dependencies.

* If you don't like the idea of forcing users to retry, you can ensure "eventual consistency" using a durable queue + idempotency.

I'm not a fan of HN comments that trivialize problems, but if you have to build complex distributed systems machinery to solve the problem you're describing, I feel strongly that something's going wrong.

Top comment by tkainrad

I recommend using a static site generator. It brings precisely the features you ask for:

  - easy SEO optimization, especially compared to SPA  
  - easy content management, GitOps  
  - fast, scales well  
  - free to host via various services (e.g. GitLab and GitHub)
Personally, I like Hugo. They have an amazing gallery of free templates: https://themes.gohugo.io/

You might enjoy my blog post on how I host my personal website for free with Hugo and GitLab Pages: https://tkainrad.dev/posts/using-hugo-gitlab-pages-and-cloud...

Top comment by Aeolun

If everyone around you is much better than you, and you are aware enough to see it. Stay! This is a fantastic place to learn new things and improve your perspective.

You may find that they’re not quite as amazing as they first seemed a few months or year down the line. But if they are, your own progress is likely to be much higher than at another place.

Top comment by m0ther

Get a prescription for Ritalin. Headphones and Spotify. Volunteer for EVERY nightmare project to keep you engaged.

Learn HTML5 canvas. Learn SVG. Learn to make components in whatever framework you're on and get really good at it. Get into webgl. Make yourself the special projects guy. Go deep where others won't.

Hyperfocus is your super power; research it, figure out what puts you in hyperfocus, and what keeps you there. Listed above are some of the things that do it for me (that exist in the overlap between your job and mine).

Top comment by shartshooter

$0.

I'm a veteran with a disability rating of 40% after several deployments overseas. This means I get free healthcare for life through the VA(although my family is not covered through the VA, instead through my wife's employer).

If I didn't have VA coverage we'd have to spend $800/mo for me to be added to my wife's plan. Incurring an extra $800/mo out of the gates would have likely been a non-starter.

That was a significant factor in my ability to step out on my own.

It feels like America is really hamstringing our entrepreneurs by not having a medicare-for-all or some other public option.