Weekly Waves 🌊 – 20 January 2023
The latest from software developer and entrepreneur, Anthony Corletti.
Here is your weekly wave, a list of what I’m pondering and exploring. Please feel free to forward this along to your friends if you enjoyed it!
🧐 Concept I’m Pondering
Your stakeholder value chain of your company should be kept in balance.
Placing too much value in one area can kick off a major imbalance that is hard to correct.
Focus too much on your investors, board, and customers, and your team will drown in asks and struggle to innovate without having the room to make their own decisions and take action.
Focus too much on the team and investors and you lose touch with customer feedback and risk becoming the dreaded zombie company, a marching band to nowhere.
Honing in on mantra is important. Identifying players across all three areas with similar passions from the start is critical for taking startups from 0-1.
☁️ Cloud Service I’m Researching
The future of cloud computing can’t all be left to the major infrastructure players like AWS, GCP, and Azure. We’ve seen how that goes in other ecosystems (cough-cough-music).
I think Lambda is positioning themselves in an interesting and valuable position where there is increasing demand for GPU and other processing power that is expensive to provide at scale.
Offering GPUs at an affordable rate is a competitive advantage by being able to meet demand directly and at a lower price than the majors. Specialization where value is desperately needed is great for nestling into product market fit.
I’m still unsure if this company can scale with the majors or if one of them will end up acquiring Lambda, or maybe Lambda will scale into other product areas 🤔 We shall see!
🐍 Python Tip I’m Sharing
A thread in Python is a term used to describe a separate flow of execution.
In most python3 implementations, threads appear to run at the same time, but they aren’t in reality.
Why does this matter?
Not all programs and data structures in python are guaranteed to be thread safe and it’s important to know what situations call for special attention to thread management.
So, my tip; for any kind of context manager, class, or data structure you create, if you have to operate on any kind of global variable, filesystem, or transactional code that must be processed in a certain order and/ or by multiple processes/ threads at once; include a lock attribute in your implementation.
For example, if we make a global counter variable with the following class and want to avoid counting errors, we could use the following:
from threading import Thread, Lock import sys class Counter: def __init__(self) -> None: self.count = 0 self.lock = Lock() # <= here's the lock! def increment(self) -> None: for _ in range(100000): self.lock.acquire() # <= acquire the lock self.count += 1 self.lock.release() # <= release the lock
This lock allows a global counter variable to only be incremented by one thread at a time, as each one acquires and releases the lock!
🎼 Playlist I’m Playing
Corletti Radio 8 is out and is a vibe. I hope you enjoy it! It’s a funky, loud, and disco.
🎧 Podcast I’m Enjoying
I think Seth Godin is the Albus Dumbledore of the professional world. I’m constantly impressed by how clear and succinct he is in his blog and podcasts. It’s almost like he thinks in prose!
I strongly recommend subscribing to his podcast and blog posts. You get a gold nugget of advice and/ or a valuable bit of thought food each day.
Thanks for taking a moment to read Weekly Waves. I hope you liked it!
Please give me feedback on Twitter! Which of the above is your favorite? What do you want more or less of? Other suggestions? Please let me know. Just send a tweet to @anthonycorletti and put #weeklywaves at the end so I can find it.
Have a wonderful weekend!
Thanks for reading Weekly Waves 🌊 Subscribe for free to receive new posts