I got a new job. I worked for 6 years at my last job and enjoyed it there. I had a lot of autonomy, flexibility as a remote employee, good pay, and work life balance. It isn't like a grass is greener on the other side situation. Just trying out a different environment (early stage startup) for size. It's definitely unstructured this early on (I'm the 4th person, 2nd employee). Good thing is I enjoy improving processes. I guess a lot of developers are focused on writing code, but I'm interested more broadly in the overall software delivery lifecycle. I don't mind maintaining old code, refactoring code and adding tests, setting up automation tooling, and thinking about what flavor of agile or whatever methodology works well.
In other notes, I've been rock climbing in a gym a lot. I did 3 weeks of 6 days a week 1.5-3hrs per sesh before a 2 week break, which I spent in San Antonio, Texas, working my final 2 weeks in person. First week back, and still doing 6 days a week. I'm starting to feel a bit of inflammation in my middle finger tendons now. Bought some tape today and wrapped my middle finger for support, and going to climb just easier stuff on some of the days to get the blood flowing in the fingers for active recovery. No injuries please, fingers crossed. Anyway, I went from climbing V3s to V5s in those first 3 weeks (I was climbing V5s already a long time ago) and I'm starting to knock down V5s with less effort. Would be pretty swell to get a V6 before the end of the year, but no biggies if I don't. Trying to have a better mentality with regards to climbing and just try to have fun instead of focusing on grades and improving too much. Used to get so frustrated falling on problems, but now I figure every attempt is practice. Give it a few attempts, maybe take a break and climb some other problems, and revisit during another session.
P.S. I was recording music with a USB microphone connected to my old work laptop, my desktop is in a different room than my piano, and my new work laptop only has USB C ports...Ah Apple. Time to stock up on dongles. Anyways, no recorded music accompanying posts until I get that sorted out.
It's been a while since my last post. I spent two weeks working remotely in Seattle for July 4th celebrations and had some quality family time with my sister's family.
My sister is a stay at home mom of a 3 yr old girl and 1 yr old boy and I'm amazed at her endurance. Parenting really requires a lot of patience and I don't think I could be a stay at home dad day in day out, year after year. Well I get to be the fun uncle that entertains the kids for two weeks :) I also noticed I could be uptight around the kids. I always thought I would be a "let kids be kids" type of person, but man are kids good at hurting themselves or not wanting to leave the playground until you chase them down and carry their screaming heads to the car. Not sure what the balance is good between discipline and relaxed parenting.
Besides that I went to church to respect her family's religious beliefs. I'm kinda jealous of the youth group there. They're pretty close knit and hang around pretty much almost every day due to weekly events like bible study and such. It's nice to see a people bonding over shared personal beliefs. Maybe I should look up a nihilist support group...where we all whine about how nothing matters...nah that sounds pointless ;)
I've been slipping on blogging. I dunno sometimes it's just like I'm full of energy and want to squeeze out of life all it has to offer and then other times like lately it's just like "ehhhhhhh doing that takes work". Not sure what is different. How do I stay on top of my game?
It's been two months since I've started using blue light blocking goggles and full spectrum LED light for a better sleep schedule / energy / mood and they've worked really well for me, so I thought I'd recommend them.
If you haven't heard of melatonin, it's a naturally produced hormone that makes you feel sleepy. However, blue light inhibits the release of melatonin, causing you to feel more awake. Using your phone, watching TV, being exposed to bright white lighting (instead of warm reddish light) at night all probably cause you to stay up later.
I put on the goggles around sunset and keep them on till I go to sleep. It's not the most comfortable thing, but I think a regular sleep schedule is worth it. I now go to sleep around 11-12 and wake up without an alarm clock around 7. And I do not wake up with that damned groggy, wanting to sleep in, snooze the alarm clock 10 times feeling.
The LED light I use in the morning around 15-30 mins. I decided to try it after reading this productivity article. I'm not sure if having bright light in the morning helps regulate your circadian rhythm. I've mainly heard of light therapy being used to treat seasonal depression in countries, where they get like 4 hours of sunlight during winter.
If you decide to try these out, I hope they work well for you and are easy steps to taking better care of yourself. There's a joke: "What's the difference between an adult and a kid? No one stops an adult from eating all the candy they want." It's true. You are the only one responsible for making sure you don't eat too much junk food, sleep too late, and lay on the couch all day.
I was depressed yesterday. I think from bad sleep from drinking alcohol and sleeping late on Sunday in Las Vegas. Damn I am so sensitive to poor sleep. It seems for me the price of happiness is eternal vigilance. Sleep good, eat good, exercise, cross my Ts, dot my Is. Depression as a forcing function for a healthy lifestyle. Go figure. Feel good today though. Not 100% but getting there.
Wasn't going to post anything today but my friend George conviced me otherwise . . .
After all that thinking yesterday, I relaxed my brain in some nature. Super cool place.
First time playing with DaVinci Resolve (big boy video editing software now) to create a cinemagraph. The loop is shit because of the wind creating branch movements. I'm sure there's a way to create a mask that follows the branches but fuck it. SHIP IT.
I read this excellent book with an eye toward improving the system known as my workplace. Going beyond personal productivity, how can I grease the wheels for team and organizational excellence? Where are the points of leverage in the software development process, where I, as an individual contributor, can induce an unreasonable amount of impact? To solidify learning, I'll summarize some of the book.
Systems can be modeled as stocks and flows. A stock is quantity of concern like population. Flows feed into and out of that stock like births and deaths.
Reinforcing loops - unchecked - drive a stock in a direction exponentially. The higher the population, the higher the birth rate, the higher the population, the higher the birth rate, and so on.
Balancing loops drive a stock in toward a range of acceptable values. They provide stability and resist change. The higher the population, the more deaths there are, the lower the population becomes.
We can see the system behavior over time by mapping out the stock over time as a function of flows.
Stocks and flows usually affect each other. The bigger the bank balance (stock), the more interest (flow) you earn.
Delays are everywhere in systems. Even if flows change, stock takes time to react. Even if you turn the bath knob to the hottest setting, the temperature of the water cannot change instantly.
I'll skip the various technical examples, which I can't do justice in a few sentences, covered in the rest of this section
Takeaway: Stocks and flows represent a generic foundation for thinking about systems. I love this as distilling down details into key concepts, as Donella has done here with systems, affords mental clarity and focus. Because of the pareto principle, you get a disproportionate amount of benefit focusing on a few foundational aspects right over trying to optimize every little detail.
Systems that display resilience, self organization, and hierarchy work very well.
Resilience is different from say stability. Systems that are stable within normal operating ranges can fall apart very quickly outside of the ranges. Resilient systems may oscillate but can recover from a variety of situations. One resilient system is the human body, which can recover from cold and heat by shivering and sweating, fend off against unknown particles in the body through the immune system, repair skin cuts, etc.
We can weaken resilient systems by emphasizing productivity or stability of a system. Overreliance on antibiotics to force our body into a state where it is never sick weakens our immune system, making our body less resilient against an antibiotic resistant strain. We may cut the funding of natural disaster recovery program, because most of the time the program is idle and seen as an inefficent use of funding. Then a natural disaster devastates our infrastructure and recovery resources cannot be mobilized in a timely fashion.
Self organization is the ability of the system to give rise to new structure, learn, and complexify.
"[Self organization] requires freedom and experimentation, and a certain amount of disorder. These conditions that encourage self-organization often can be scary for individuals and threatening to power structures."
Evolution is one example of self organization where different combinations of 4 nucleotides and random mutation results in a variety of life forms.
Hierarchies allow complex systems to form out of smaller parts. There is the cell subsystem, which form tissue subsystem, which form muscles and so on.
System structure gives rise to behaviors which give rise to events. Most analysis is done at event-event level. Interest rates rose, then stock market went up. Instead look at historical behavior for clues in understanding system structure so we can go beyond understanding what is happening to the why.
The world is full of nonlinearities, which we are bad at thinking about. More cars in traffic only slightly decrease the traffic speed until there is a point where a few more cars result in a large drop in traffic speed
There are no real system boundaries, no closed systems. Everything is interconnected and our models of systems that neatly limit a system to a,b,c stocks and x,y,z flows may simulate real world behavior until an overlooked stock or flow comes into question.
There are delays everywhere. Everything takes time to change. You can't reduce carbon emissions right now by designing an electric vehicle. It takes time to build the factories, ship cars to dealerships, sell cars, for adoption to grow.
Bounded rationality: people operate rationally (sometimes) within their local context. People don't have perfect information to make globally optimal decisions. Who cares that our consumerism is made possible by waste, pollution, and miserable labour conditions in places where the effects aren't very visible to us?
There are common perverse system archetypes
Policy resistance. Trying to pull a stock toward a goal can result in policy resistance, where the stock isn't affected but more effort is spent by actors. War on drugs results in more policing, which results in smaller supply of drugs, which results in higher drug prices, which results in desperate junkies committing crimes to afford drugs. Revenue from higher drug prices are then invested in more ways to smuggle drugs without getting caught, which results in more supply of drugs, which results in more policing. The way out: Let go of energy spent on resisted policies and find a compromise or new goal people can agree to i.e. rehabilitation of addicted junkies.
Tragedy of the commons. When there is a commonly shared erodable resource, people individually operating under bounded rationality see no reason to not make use of it leading to the resource's decline. The environment is a shared resource that is being hurt by use of fossil fuels, but individually there is more incentive to use fossil fuels to travel and contribute to global warming then to avoid it. The way out: educate users about the effects (weak), privatize the resource: you get this amount of the common resource and if you fuck it up, well that's that (not always possible), or regulate access to the common resource (you have to pay for parking space but it makes it more likely you can find parking since people can't indefinitely park their cars).
Drift to low performance. Systems keep getting worse when performance is measured relative to past performance and especially if there is a negative bias. The way out: Keep performance standards absolute.
Escalation. When two competing stocks cause each other to grow. Two companies undercut each other until one goes out of business. Two countries gather more and more weapons in response to each other's stockpiles. The way out: Don't get caught in escalation in the first place. Refuse to escalate. Neogotiate a system where escalation is controlled.
Success to the successful - competitive exclusion. The more you win of the market, the more resources you have to further dominate the market, leading to a monopoly. The rich get richer and the poor get poorer. The way out: diversification (a startup takes advantage of a new market or niche), antitrust laws, policies that level the playing field: progressive income tax, social welfare, universal healthcare, inheritance tax.
Shifting the burden to the intervenor - addiction. Providing bandaid fixes to a system without fixing the underlying issue undermines the system's inherent capacity to deal with the issue and makes it more reliant on the intervention. You drink alcohol to escape the reality of your shitty life, but the life isn't any less shitty, you feel ok for a bit, then go back to your shittier alcohol dependent life, now it's even harder to fix your shitty life when you're dealing with alcoholism. The way out: Avoid getting trapped in the first place. Beware of policies that only treat the symptoms. Focus on long term restructuring instead of short term relief.
Rule beating. Rules meant to do good are avoided through rule beating, following the letter of the rule but not the intent. Government departments, universities, or militaries engage in pointless spending near the end of the fiscal year to avoid budgets cuts the next year. The way out: take rule beating as feedback to rescind or revise rules.
Seeking the wrong goal. Be careful in setting metrics for goals of a system. If you set a metric, the system will seek that metric, but maybe not the goal you had in mind. The way out: Set goals on real indicators of system health instead of proxy metrics.
In order of least to most leverage, with the author given caveat that the ordering is just guidance and not set in stone for all systems
TBD. Tired of thinking for the day, will come back to this tomorrow.
I said in the beginning, I was interested in the system that is my workplace. I see a lot of parallels to good software development practices: continuous integration propagates feedback continously instead of in large batches so the people can adjust with less delay, automated testing reduces the delay of regression feedback to the developer, linters are balancing feedback loops on best practices, having developers take support calls or meet with clients introduces a new information flow where the developer can directly hear the feedback from customers. It's interesting to see an underlying layer of principles for practices in software development.
For now I want to experiment with pair programming as a new information flow for team members to learn from, especially because of "shifting the burden to the intervenor". Not to toot my own horn, I am a rather effective individual contributor but rather than focus on my skills and the company relies more and more on my proficiency, I can do more to help other team members grow. Other work I want to do is set up tools that serve as feedback loops or feedback delay reduction. The higher up stuff, rules, goals, and paradigms (cultural values) of the company, I have little power to affect as an IC and I definitely do not want to climb the ladder to management (blegh).
If this post has piqued your interest, I definitely recommend you check out the book. I've left out a lot of nuance that the book brings.
Here's a little tune that I came up with that might be good as a battle theme or during an action cutscene. One of my outlandish daydreams is to be creative enough to make an entire video game by myself like Daisuke Amaya with Cave Story or ZUN with Touhou Project.
I love me some fried chicken, so I tried to make some at home today. It was ok for a first attempt. Breading wasn't crispy enough. Definitely did not have enough seasoning. It almost felt healthy to eat. And fried chicken should never feel healthy to eat.
Very simple and easy to learn yet beautiful song.
Bought some WD-40 for my piano sustain pedal squeaking and it didn't squeak ... for about 5 hrs. Time to buy a new pedal :(
Here are some music snippets. I don't know how to make full length songs yet. I'll preserve them here for my future self to flesh out.