wjossey
In the ruby world, delayed job was getting upended by sidekiq, but redis was still a relatively new tool in a lot of tool-belts, and organizations had to approach redis at that time with (appropriate) caution. Even Kafka by the mid 10s was still a bit scary to deploy and manage yourself, so it might have been the optimal solution but you potentially wanted to avoid it to save yourself headaches.
Today, there are so many robust solutions that you can choose from many options and not shoot yourself in the foot. You might end up with a slightly over complicated architecture or some quirky challenges, but it’s just far less complex to get it right.
That means fewer blog posts. Fewer people touting their strategy. Because, to be frank, it’s more of a “solved” problem with lots of pre existing art.
All that being said, I still personally find this stuff interesting. I love the stuff getting produced by Mike Perham. Kafka is a powerful platform that can sit next to redis. Tooling getting built on top of Postgres continues to impress and show how simple even high scale applications can be——
But, maybe not everyone cares quite the way we do.
Hang in there. You all will learn from this and be better for it. Your architecture will improve. Customers will give you a second chance. This too shall pass.
Sending positive vibes.
It beat my wildest expectations, getting to watch live one of the best in the business. Even after taping for nearly two hours, with a fast turn around to his next show, he was kind enough to grab me his fez hat, take a couple of photos behind the desk, and chat with me about life.
I still look at that photo from time to time, and remember the joy I felt that day. Those are those special moments that make life so beautiful.
So, as an example, if I have three services where A talks to B, B talks to C, and I have a custom version of A & C that require testing E2E, we have to spin up B in the middle.
It definitely is a point of confusion for engineers who have to understand what intermediate services are in play when working on a frontend and some distant backend microservice. Fortunately, that intermediate layer tends to just always be the same two services, so folks learn pretty quickly. At scale, especially hyper-scale in a microservices architecture, this becomes untenable, and either automatic dependency discovery OR routing (like you designed) is the path forward.
Needless to say, it's a "niche" issue I think folks don't run into for a while in their setups; however, once you run into it, it's a PIA for those involved.
Either way, this notion of slices of environments being deployed for testing, with "baseline" or fallback environments being used otherwise, is the future of software development. It's a real boon for developers when rolled out effectively, and I've seen it scale massively at GoodRx.
Congrats to the team. Wish you all tons of success!
Sean is a treasure in the Boston and Golang community, and folks should seek out his wisdom and guidance.
As others are already writing, you should take some bonding time and adjustment time, regardless of company size. Those first few weeks are a huge adjustment, and you need to focus on your family, partner, and newborn, more than a company.
How long is appropriate then becomes a question of a number of factors. I don’t want to make a value judgment on anyone who feels like 2 weeks is enough vs someone who says 12 weeks is the minimum. Life is complicated and nobody knows your situation better than you. But, you should optimize first for your family, and then once that is finished, figure out what a return to work timeline looks like.
Parenthood is such a wild journey with its own unique set of challenges, struggles, and joys. My best to you and your partner.
Godspeed.
Lichess has Maia bot, some good course material as well, and I like to use my lichess account sometimes as an “alt” where I can experiment with less stress about losing rating. Rating doesn’t matter, but it still makes me queasy if I tilt 100 points while trying out a new opening.
For those of you thinking about picking up chess, I’d highly recommend watching the Chess Brah “Building Habits” series on YouTube. Watch the first five or so videos, and just start practicing those habits in rapid games (recommend 15 minute with 10 second increment on lichess, which shows up as 15+10). Embrace the losses, and just keep working on not hanging your pieces for free.
If you’re intimidated by playing other humans, you can try the “Maia 1” bot on Lichess. It’ll likely beat you up for a while if you’re a beginner, but it’s a bot designed to play more like a human, and it’ll help you get the reps to feel more comfortable playing other humans.
From there, just enjoy yourself. Chess can be frustrating because by design you always lose about 50% or your takes, but once you learn to accept the losses, it can be a great mental exercise to keep your brain sharp.
For those of you with just basic experience, or looking to learn, I really recommend the “Chessbrah Building Habits” series on YouTube.
https://youtube.com/playlist?list=PL8N8j2e7RpPnpqbISqi1SJ9_w...
GM Aman is a really pleasant dude, solid teacher, and takes the most methodical approach to coaching beginners to intermediates how to build habits at each elo range to keep growing.
For those new to time controls, 15 minute rapid games are a good place to start. I felt a lot more comfortable after a couple of months jumping to 3 or 5 minute blitz based on my schedule, once I felt like I could get out of the opening without being totally lost :)
Other great content creators are GothamChess (be aware his YouTube and twitch styles are different but equally awesome), Hikaru, Eric Rosen, Nemo, St Louis Chess Club, and so many more.
The chess community is really great. I hope y’all come and join the fun.
Of the 8 hours a day of my work, it’s the least likely to be a waste of time. It’s a great way for our distributed team to stay connected, express interest in work streams, and have a laugh.
Work can be so much more than just optimizing productivity to the nth degree.
He openly said during interviews since the suspension that he was losing sleep over it and was distracted from the tournament play. So far (as of me writing this) he’s lost one match and drawn two. He likely needs one or two wins to move out of the group stage. It’s not inconceivable, given he won the first leg of the Grand Prix, that the suspension will have played a major role in him not making the candidates tournament.
Edit: He’s playing as I write this, if you’re interested in following the match.
https://www.chess.com/events/2022-fide-chess-grand-prix-3-po...
What’s wonderful too is that the abbreviations are often based on non English words as well, so they aren’t intuitive. As an example, instead of typing “mist” in a METAR it is “BR” based on the French word brume.
Rule number two, use what can last you for the first three years.
Rule number three, build with considerable haste. Don’t choose anything from 1 & 2 that limits that.
Everyone’s preferences from there are all relative. If I was building something from scratch today I’d use cloud run for containers, stripe for payments, datadog for monitoring and APM, RoR for my app, Postgres, bigQuery for analytics (if needed), Vue for my frontend, postmark for email, cloudflare, and probably a mix of other tools as needed.
If I was screwing around and not trying to use what I know, I’d probably try to build as much as I can on top of vercel and planetscale. Vercel makes killer projects and tools, and I can see planetscale being a market leader in 10 years that everyone uses by default. But, that’s a big bet to make when starting a new company.
Just because it takes years doesn’t meant it can’t happen.
At this point, it’s reliable enough that even if it were to go down, it’s more safe than not using it. I’d put EBS in the pantheon of “core” services I never mind using these days.
We’re not discussing data loss in this thread specifically. This is about a couple of hours of downtime per year.
First, if you can, avoid us-east-1. Yes, you’ll miss new features, but it’s also the least stable region.
Second, go multi AZ for production workloads. Safety of your customer’s data is your ethical responsibility. Protect it, back it up, keep it as generally available as is reasonable.
Third, you’re gonna go down when the cloud goes down. Not much use getting overly bent out of shape. You can reduce your exposure by just using their core systems (EC2, S3, SQS, LBs, Cloudfrount, RDS, Elasticache). The more systems you use, the less reliable things will be. However, running your own key value store, api gateway, event bud, etc., can also be way less reliable than using their’s. So, realize it’s an operational trade off.
Degradation of your app / platform is more likely to come from you than AWS. You’re gonna roll out bad code, break your own infra, overload your own system, way more often than Amazon is gonna go down. If reliability matters to you, start by examining your own practices first before thinking things like multi region or super durable highly replicated systems.
This stuff is hard. It’s hard for Amazon engineers. Hard for platform folks at small and mega companies. It’s just, hard. When your app goes down, and so does Disney plus, take some solace that Disney in all their buckets of cash also couldn’t avoid the issue.
And, finally, hold cloud providers accountable. If they’re unstable and not providing service you expect, leave. We’ve got tons of great options these days, especially if you don’t care about proprietary solutions.
Good luck y’all!
As is always the case with this, one can code and one can also not code in a CTO position. Sometimes CTOs manage no one and are only focused on technology. Other times, they are the top of the management pyramid. Other times, they’re just one of a couple of engineers early in a startups lifecycle.
No matter the situation, the truth remains that it’s not which path you take, it’s how you manage the path you choose.
If you are a coding CTO with a lot of people, make sure you’re delegating the focus on the people components to another leader (hiring strategies, interviewing process, comp, reviews, high level program management, etc).
If you are a CTO that focuses on people, make sure to bring on some senior ICs that can help lead the technical direction of the company. They should still be coding and empathizing with the team, and helping to highlight long term tech trends for the team to progressively adopt to stay current.
Hire people that do the thing you don’t have time to do, and care deeply about doing that thing the org needs. Keep repeating that process all the way down the management chain, with a heavy focus on trust and delegation.
People and teams fail when folks hang on to responsibility long after they should have given it up, because they aren’t self aware enough to realize they don’t have the time or knowledge anymore to effectively do a task. Don’t be that person!
I had huge work life (self induced) challenges for 8 or so years at the start of my career. Similar story to you but not as a founder- I just worked 80+ hours a week by default. Nobody forced me to do it, just my motor.
I worked with a psychotherapist for 4 years, once a week, with this being the predominant focus of our time together. She was immensely helpful and between the regular maintenance of those visits and her helping improve my self awareness, I now no longer blitz myself week after week. I certainly still have that motor in me, but I know how to divert it to other activities and focuses like my family, hobbies, and myself. I still love to work because I love what I do, but it’s not how I define my life.
Get help. This is sufficiently a problem where it’s impacting your relationships with others, which is a huge red flag.
Individuals likely still paid Social Security taxes, Medicare taxes, and potentially state and local taxes (which vary wildly). Most states also have sales taxes as well, and some local municipalities have surcharges as well.
And, lastly, we do have property taxes, which can be quite significant in large parts of the country. Even if you’re a renter, these costs are often indirectly passed on to you.
So, while federal income tax may have been less of a burden last year, there was likely still lots of taxes that each of these individuals paid.
Disclaimer: This post isn’t meant to be a statement of support or criticism of taxes. Just trying to highlight the many ways we pay taxes beyond federal income tax.
As a simple example, imagine you have a community of 100 people. 1 person is infected, 98 are vaccinated, and 1 is uninfected and not vaccinated.
Ideally the 98 people who are vaccinated don’t contract the virus, and do not serve as vectors of spread for that one unvaccinated person. In essence, you make it so the one infected person has to come in contact with the unvaccinated person.
With delta, the 98 vaccinated people are astronomically less likely to die or become severely ill from covid; however, they still can contract and pass along the virus… Which can eventually make its way to the one unvaccinated person at the end of the chain.
So, vaccines are great. Vaccines work. These vaccines are awesome for how fast they were produced. But they aren’t able to serve as barriers of protection for the unvaccinated in a way other vaccines for other diseases.