jeffheard
Joined 13 years ago
Joined 13 years ago
The solution usually isn't "better people." It's engaging people on the same goals and making sure each of them knows how their part fits with the others. It's also recognizing when hard stuff is worth doing. Yeah you've got a module with 15 years of tech debt that you didn't create, and no-one on the team is confident in touching anymore. Unlike acne, it won't get better if you don't pick at it. Build out what that tech debt is costing the company and the risk it creates. Balance that against other goals, and find a plan that pays it down at the right time and the right speed.
Enter myself and a buddy of mine. First thing we discovered was that they were using regular java.lang.Strings for all the string manipulation, and it'd garbage collect for between 30 and 50 seconds every minute once the process got rolling. It used a positively criminal number of threads as well in our predecessor's desperate attempt to make it go faster. SO much time was spent swapping threads on CPUs and garbage collecting that almost no real work got done.
Enter the StringBuffer rotation scheme. John and I decided to use the backup GS-160 as a hub to read source data and distribute it among 16 of our floor's desktop machines as an experiment. The hub was written in C++ and did very little other than read a series of fixed-length records from a number of source files and package them up into payloads to ship over socket to the readers.
The readers gut-rehabbed the Java code and swapped out StringBuffer for String (and io for nio) to take the majority of garbage collection out of the picture.
The trick we employed was to pre-allocate a hoard of StringBuffers with a minimum storage size and put them in a checkin/checkout "repository" where the process could ask for N buffers (generally one per string column) and it'd get a bunch of randomly selected ones from the repo. They'd get used and checked back in dirty. Any buffer that was over a "terminal length" when it was checked in would be discarded and a new buffer would be added in its place.
We poked and prodded and when we were finally happy with it, we were down to one garbage collection every 10 minutes on each server. The final build was cut from 30 days to 2.8 and we got allocated a permanent "beowulf cluster" to run our database build.
When I was a little older I would borrow books at the library to write games in BASIC. Basically key stuff in that the book told you to write, and since a lot of it was for the C64 or TRS-80 I had to figure out how to “port” it to the TI. I wrote notes for my changes in pencil in the library books so I wouldn’t get in trouble with the librarian. Invariably I’d check the book out again a few weeks after I’d returned it. I was probably the only person who read my notes, but I like to think someone got some use out of my addenda.
The biggest cost to an employer is always their roster. The fewer sick days people need, the less burnout causes them to churn, and the healthier and happier people are overall, the lower the training, recruiting, and redundant staffing cost.
It feels natural to me that in an employer paid healthcare system like the one we have in the us, the employer should demand the highest quality coverage possible by that metric as long as it reduces staffing overheads.
In my own exploration on my land, I've noticed that dead wood and leaves break down much slower where garlic mustard grows. This could be lack of insects or it could be something allopathic in the soil left by garlic mustard against fungal growth. In any case, the stuff is definitely detrimental to the land around it.
As for edibility the young greens are honestly some of my favorites. They work really well in spicy, meat heavy stir-fries and provide fresh greens at a time when there aren't a lot of fresh veggies about except for tough old kale and grocery store spinach.
I might go to a town, fail to take a side in the battle that town is locked in, and when I come back the town is laid waste. The quests that would be available to me in town are no longer there, but I might have errands where I end up searching the woods for refugees instead.
Something like that'd have a lot of replay value, because what you do changes the game you're playing over time.
About us: We are the operating system of elite athletics. We provide the software that supports your favorite sports teams, whether you're a fan of collegiate American sports, NFL, NHL, the NBA, New Zealand and Australian Rugby, or EPL football (and more!). We provide everything from messaging, calendar, forms, and compliance to nutrition management (via Notemeal) and branding (via INFLCR).
Responsibilities: depends on the position, but generally we're looking for people who want to flex between product and engineering.
All our open positions with links to apply: https://www.teamworks.com/company
If you want to read a little bit more about engineering at Teamworks, try these blog posts:
- What Software Engineers and Olympians have in Common: https://tw-engineering.webflow.io/post/what-software-enginee...
- You're Probably Doing Epics Wrong: https://tw-engineering.webflow.io/post/youre-probably-doing-...
- Technical Debt at Teamworks: https://tw-engineering.webflow.io/post/technical-debt-at-tea...
Most of the time, ADD works in my favor. But sometimes, (and NOT always due to "societal expectations") I need my brain to work differently than it does, and for those occasions the meds do wonders. But I truly hate the after-effects, thus I rarely take them.
And chanterelles have a number of at least moderately toxic lookalikes depending on the region you're in and how much an eager amateur is willing to stretch the definition. I don't think a lot of beginners can reliably tell the difference between "gills" and "folds."
Plus what you referred to about toxins leached from the tree that the mushroom was growing on. I'd not eat anything growing on a locust tree or a fallen rhododendron. Just seems like inviting trouble.
Don't try to make up for lost time. Don't try to prove anything. Don't make the next thing anything more than what it is: a job. Once you've rested and recuperated, and you can look back on your time at your startup and not "cringe" or feel angry, then decide whether you want to lean into the job you're at or move on and be ambitious somewhere else.
I've been a co-founder at something that felt like a "zombie startup." I walked away, gave up my entire stake in it back to the other co-founders, and washed my hands of it. It's doing fine now, and I'm fine with that. I saved myself the three or more years of pain, heartache, and panic attacks, and hopefully I gave them the breathing room they needed to get the thing off the ground. I will never see a dime of profit from it, even if it becomes a unicorn, and I'm completely fine with that.
The thing I think a lot of co-founders feel after a startup fails is a sense of "purposelessness," Burnout that manifests itself as a feeling that you're not "smart" anymore, not "creative" anymore. A blank space in your day fills itself with wondering if you could have made it work if you'd just done that one thing differently. You can't "power through" those feelings. You have to let yourself live with them until they pass over you. You have to let yourself heal, and healing takes time. Whatever job you take now should let you focus on that. It needs to be something that lets you spend some mental energy working through the regret, frustration, and ultimately the fear of facing your part in the failure of the startup.
Do the job instead of "be" the job. At least for a while. Take the time and get past all the things that will stop you from really learning from your experience. Then at the end of that, if you still feel the burn to start something again, you'll be able to put your whole self into it.
I'm Chief Architect of Engineering at Teamworks (https://www.teamworks.com), the operating system of elite athletics. I've also been a developer for more years than I can count and still spend my time in the trenches where I can.