< Back to the archive

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

Issue #127 - August 8, 2021

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 jfoutz

You're not going to like the answer, but I think it captures some of what you're getting at.

Windows 95. Old style gui programming meant sitting in a loop, waiting for the next event, then handling it. You type a letter, there's a case switch, and the next character is rendered on the screen. Being able to copy a file and type at the same time was a big deal. You'd experience the dead letter queue when you moved a window while the OS was handling a device, and the window would sort of smear across the screen when the repaint events were dropped.

Concurrent programming is hard. State isolation from micro services helps a lot. but eventually you'll need to share state, and people try stuff like `add 1 to x`, but that has bugs, so they say, `if x == 7 add 1 to x` but that has bugs so they say, `my vector clock looks like foo. if your vector clock matches, add 1 to x, and give me back your updated vector clock` but now you've imposed a total order and have given up a lot of performance.

I'm blind to the actual problem you're facing. My default recommendation is to have a monorepo, and break out helpers for expensive tasks, no different than spinning up a thread or process on a big host. Have a plan for building pipelines a->b->c->d. also have a plan for fan out a->b & a->c & a->d

It has been widely observed there are no silver bullets. but there are regular bullets. Careful and thoughtful use can be a huge win. If you're in that exponential growth phase, it's duck tape and baling wire all the way, get used to everything being broken all the time. if you're not, take your time and plan out a few steps ahead. Operationalize a few micro services. Get comfortable with the coordination and monitoring. Learn to recover gracefully, and hopefully find a way to dodge that problem next time around.

Sorry this is hand wavy. I don't think you're missing anything. it's just hard. if you're stuck because it won't fit on 1X anymore, you've got to find a way to spread out the load.

Top comment by devchix

Don't ditch your phone. Divide and compartment its functions. I went to Europe without a phone once. Things were fine but there was a layer of friction over everything. When does that restaurant/shop open, how to get reservation, buy tickets in advanced. The airline had a strike, I had to go through the concierge to find out if I needed rebooking for the flight home, it was up in the air the day I departed.

I had with me a Garmin with a memstick of the local map. Sadly I'd given it away, I wish I had kept it. I also had with me a non-wifi little camera that could shoot videos. I used the Garmin for direction and map. When I got home I unpacked the camera memsticks. Things were mostly fine.

What's the best alt to Apple product is the wrong question. Apple, or anyone else, has such leverage because it bundled so many functions important to you, convenience is the scaling factor. Maps and navigation on phone is great, iPhone camera is awesome, sharing grocery lists and docs is very handy. Put them all together and Apple becomes dangerous to privacy.

I'm still muddling through, trying to think about this and how I will change my tech using habit.

Top comment by denvaar

- Learning from others around me who are smarter/more experienced. This is maybe the number one thing.

- Switching jobs when things get boring or I feel like I am not growing in the ways that I want to be. It's eye opening to begin a new job and feel like a noob again.

- Building side projects. Reading and following tutorials are good and all, but there comes a point where you just gotta build something to really grow.

- Becoming part of a community, because it motivates me to learn and improve and also to try to share what I learn with others. I think this happens best at a small, local level. I don't get much out of attending the big conferences (other than it's usually fun).

- Having a blog, or just someplace to keep track of the interesting things you learn about. Can be a good marketing tool for yourself as well.

- Keeping a high level of communication going with your colleagues about what you're working on. I feel like this has earned me promotions.

Top comment by philmcc

"MONTHLY" Every ~3 weeks I print a ~3 week calendar with just 'one word' goals for that day. Double sided. If a project can't be subdivided I just repeat it. M-F of this week was just "Stripe Integration"

All of this is just to make sure my trajectory is generally correct.

WEEKLY Then, on Sunday I print out a weekly calendar broken out by hours, ~7a-11pm. Not because I intend on working that whole block (yikes), but so that at the end of the week I can see where my time actually went.

DAILY I start each day with an hour of something that has absolutely nothing to do with work or coding. The last two months I've been learning Ableton, and I make myself generate a song snippet every morning. It can be crappy, it just has to be done. Turns out, that time adds up (WHO KNEW) and now I'm pretty decent at Ableton. Before that I spent time on a (rented) piano. If I save it for the end of the day I never do it or I'm too tired to enjoy it, so why give my 'joy/curiosity' the crappiest version of myself?

Then the next ~4-5 hours I dedicate to mentally engaging tasks. "Hard" attention heavy work. 25 minute blocks w/5 minute breaks to stretch, email, text, drink water etc. After each block I write on the hourly calendar what I worked on, both to keep myself focused, but also so that I have a sense of having done -something- besides grind endlessly.

By then it's ~1-2pm. I take a 20m coffee nap (most days) and then give myself the freedom to consider my workday done (if I want), or if I wanna work more, the next ~4-6 hours I do the boring brainless stuff. Minor bugs. UX tweaks. Email templates. Blah blah. A lot of this time ends up being "eaten up" talking to users, but that's fine.

Then at the end of the day I take a glance at my hours and see how I felt about it, and write down, on the back of my Monthly/Sprint calendar what my day actually ended up being about.

Top comment by yongjik

My half cynical take is "resume driven development." The more different tools one uses, the better they can pad their resume, and resumes don't say 90% of these tools weren't needed.

A more objective take would be simply that "they don't know better." Hire a bunch of junior developers right out of college, and throw them in a pool of layers, and they'll think this is how "a real job" is done - they've never seen anything better. It doesn't help that their go-to example of best, most polished websites (imagine google docs) are built by hundreds of engineers, with as many layers.

Once it becomes an ingrained culture, it would be extremely hard to turn around.

Top comment by ainzzorl

I've been assembling and annotating a collection of instructive and self-contained code examples from open-source projects, to make it easier to learn by reading good code.

Code Catalog: https://codecatalog.org

Top comment by Rzor

Since you didn't mentioned: please, seek professional help before you consider anything else here.

Top comment by rikkipitt

https://www.paced.email is a service I built to buffer users from email. It aggregates multiple inbound emails into single messages based on a desired cadence. There's a dashboard, but after signing up, there's no real need to sign in as I designed the system to generate aliases on the fly using an easy to remember format.

E.g.

- johndoe@daily.paced.email

- johndoe.hackernews@weekly.paced.email

- johndoe.github@monthly.paced.email

- Or xyz@example.com if you bring your own domain.

The UI came about after being requested so much, but the original interface still stands.

Top comment by mooreds

Not sure where you are based, but I've considered (and interviewed with) the US Digital Service. This is going to be nonpartisan work to help the US Federal government implement new technology.

When I talked to them, examples including building out web applications allowing veterans to apply for benefits more easily, and other things like that. Not exactly earth shaking, but really has the opportunity to improve the interactions between people and the government.

When I interviewed, they did have limits on salaries (due to laws about what the government can pay) and were only doing 2-4 year stints. It's been a while, so not sure where things stand now.

More here:

https://18f.gsa.gov/

https://www.usds.gov/

Top comment by ulchabhanrua

Ombraz are non-luxotica, multi-sport, and check off some sustainability boxes, which may counter your "made in Asia" issue. https://ombraz.com/

I've been a big fan of Randolf Engineering glasses but they are costly. I wouldn't call them multi-sport, but it depends on what you're doing. https://www.randolphusa.com/