Things Found
Things Found
Disclaimer!
- This is just a list of things that I've consumed from the internet. The bar for inclusion on the list is low and inclusion does not mean I agree with the content or found value in it. The notes along side are purely my own thoughts, or quotes that resonated in some way, and are written primarily for myself. The notes may be overly dismissive or curt, they're not intended as a public statement on the content or authors, just my inner-monologue externalized as a form of brain unweighting.
2022
March
https://abseil.io/resources/swe_at_google.2.pdf
- Up to book pg 81
- > everyone can think of someone they’ve worked with who is just maddeningly stubborn—no matter how much people try to persuade them, they dig their heels in even more. What eventually happens to such team members? In our experience, people stop listening to their opinions or objections; instead, they end up “routing around” them like an obstacle everyone takes for granted.
February
https://medium.com/pinterest-engineering/pre-submit-ui-tests-at-pinterest-556be1611be
- > de-risk things early. Enumerate your unknowns and tackle them in priority order based on level of risk. As you progress through a project, risk should strictly decrease, with the largest reductions occurring at the earliest phases of the project.
- > Internalize the Pareto principle, also known as the 80/20 rule. It is ubiquitous. 80% of the effort is spent on 20% of the work. 80% of the planning is done by 20% of the team. 80% of the risk in a project is in the first 20% of the project. You get the idea.
- https://ourworldindata.org/cheap-renewables-growth
January
https://rogermartin.medium.com/how-to-make-your-partnerships-strategic-363bafc95ef2
- > You are a vendor not a partner when your relationship does not make a meaningful difference to your ‘partner’s’ strategy
https://meiert.com/en/blog/the-frontend-developer-test/
- this is the biggest load of horseshit
- > Nothing differentiates professional and amateur developers—except for a habit of validation.
> A developer not validating their HTML and CSS does not demonstrate any more aspiration than a driver revving their car’s engine in the central business district.
- I think we have different aspirations.
https://www.youtube.com/watch?v=qNf9nzvnd1k
45hz to 16.1khz
- lower on headphones, I guess it depends on the range of hardware too?
- speakers claim 70 Hz - 20 kHz
2021
December
https://nav.al/failure
- "for-profit" applies to teams even within a "for-profit" org, we often judge success and failure of our FE by usage, we don't have a parallel metric for infrastructure success, we don't run BE/infra projects "for-profit", so they never "fail" (e.g projects that take 5x the estimated time are still a "success" when they ship
https://medium.com/mbreads/good-strategy-bad-strategy-b37b2563a4a3
- > strength applied to the most promising opportunity
- > There is no greater way for sharpening strategic tools than the necessity to act. “What would need to happen if this would absolutely have to happen?” Make the hard choice
- > No one has advantage at everything. The key is to press where you have an advantage and to side-step situations in which you don’t.
https://en.wikipedia.org/wiki/List_of_shipwrecks_in_October_1864
- In the late 1800's, ships were just wrecking all the time. I had no idea.
November
https://rogermartin.medium.com/stop-letting-okrs-masquerade-as-strategy-a57fc2cea915
- > I have been arguing this point for two decades, framing it as “output regulation” rather than “input regulation.” For example, Congress was extremely out of character (in a good way) when it passed the Energy Policy and Conservation Act of 1975, which created the Corporate Average Fuel Economy (CAFE) standards. Rather than regulate inputs — like engine displacement, use of aluminum, etc. — as most governments do most of the time, the Act regulated outputs, mandating that average fuel economy of each producer’s new car fleet must achieve 27.5 mpg by 1985 — a near-doubling over a decade. And it worked, in large part because the auto manufacturers were left the flexibility to figure out themselves how to reach the target result and each one did so in its own way.
- > In my observation, there is an implicit assumption that if we set the proper key results that are causally linked to the achievement of the objective, the setting of the key results will make it more likely that the objective will be achieved. But desire (as with hope) is simply not a strategy.
Linked, by series:
https://rogermartin.medium.com/from-laudable-list-to-how-to-really-win-6aa20498e89
- > Consequently, I find that the payoffs to initiatives to improve without an intent to win are typically disappointing. Usually, the financial improvement that is expected does not come to fruition because improving does not solve the myriad problems caused by losing.
https://rogermartin.medium.com/reliability-versus-validity-in-strategy-6df8c9dde8d2
- > Within a given corporation, these camps tend to argue back and forth without knowing the true roots of their disagreement. The reliability-focused strategists think their validity-focused colleagues are being dangerously cavalier. The validity-focused strategists think that their reliability-focused colleagues are narrowminded and miss the bigger picture
https://rogermartin.medium.com/its-time-to-toss-swot-analysis-into-the-ashbin-of-strategy-history-733a0dce4a80
- >Start by defining the strategy problem you are seeking to solve. That is, what is the gap between your aspirations and the outcomes you are seeking. Then specify the form of the solution by way of a ‘how might we’ question. That is, how might we eliminate the identified gap that we currently face. Then imagine possibilities of WTP/HTW choices that have the potential of answering the how might we question to eliminate the gap between aspirations and outcomes. Then for each possibility, ask what would have to be true (WWHTBT) for it to produce the desired outcome. Then identify which WWHTBT elements you feel are least likely to be true and therefore are the barriers to you choosing to go forward with that possibility.
https://rogermartin.medium.com/balancing-exploration-and-exploitation-adb82146837
- > If you are engaging in exploration, be careful talking about it. It is better to do it as secretly as possible with the least disclosure of the costs. Most importantly, don’t overpromise results or timeframes thereof.
https://rogermartin.medium.com/strategy-and-re-organization-dcb00b4c5923
- > But it is really important to remember what structure does: it creates focus by erecting walls. You must remember both pieces — the focus and the walls
- > The key is for the managers at intersection points who share some jointness of responsibility to talk productively with one another in order to come up with the best joint decision for the company — not the best narrow decision for their side of the wall. That is why I believe that Integrative Thinking is one of the core skills of the modern company. It is the foundational skill for having a conversation about conflicting models and coming up with creative resolutions. And it exhibiting that skill is the only way to be a highly productive manager in the modern company.
- > For this reason, whenever someone proposes to you a reorganization to improve the functioning of the existing strategy or a newly created strategy, you should spend as much time understanding where the wall is going and what impact that will have as you do on appreciating how its removal from a given position will benefit the strategy.
https://society.robinsloan.com/archive/notes-on-web3/
- > Web3 promises rewards — maybe even a kind of justice — for “users”, but Ethereum doesn’t know anything about users, only wallets. One user can control many wallets; one bot can control many wallets; Ethereum can’t tell the difference, doesn’t particularly care. Therefore, Web3’s governance tools are appropriate for decision-making processes that approximate those of an LLC, but not for anything truly democratic, which is to say, anything that respects the uniform, unearned — unearned!—value of personhood.
- > The somewhat-ridiculed cryptocurrency Worldcoin, with its retina-scanning orb, is one attempt to solve this problem. There are others. They tie themselves into knots trying to arrive at personhood in a universe of wallets.
https://randsinrepose.com/archives/feedback-is-a-mirror/
- We spend a lot of time thinking about how to give feedback and how to ignore feedback given in the wrong spirit, but by actually finding a way to find value in the toxic feedback and why it hurts so much, it can be just as rewarding.
- > If it’s destructive feedback, you really feel it. The other person designs the feedback to cut deep. That’s their intent. I’m not going to explain the motivation of these humans, but please note their nefarious intent is to land the sucker punch, and it somehow landed. Amongst their toxicity, there is something you heard. When I am in this scenario, I attempt to push the toxicity aside, look in the mirror and ask myself, “Why do I care?” There is always an unintended lesson.
- > Here’s one lesson: when constructive feedback stops you in tracks, it feels like your entire world is this feedback. You aren’t this feedback. It’s a sliver. A thread. One paragraph in a very long in-progress story. You are a fully formed human full of skill, will, flaws, strengths, good days, and bad ones, too.
https://www.cockroachlabs.com/blog/join-ordering-pt1/
- > A common characteristic of NP-hard problems is that they’re strikingly non-local. Any type of local reasoning or optimization you attempt to apply to them will generally break down and doom you to look at the entire problem holistically.
https://astralcodexten.substack.com/p/book-review-the-new-sultan
- > But if every day your institutions are just a tiny bit less legitimate than the day before, when do you rush out into the street?
https://www.cabinetmagazine.org/kiosk/rubery_matthew_16_march_2021.php
- > There was no way to preserve sounds before the nineteenth century. Speeches, songs, and soliloquies all vanished moments after leaving the lips. That situation changed in 1877, when Thomas Edison began working on a machine that could mechanically reproduce the human voice. Edison’s team successfully assembled a device on which Edison recorded “Mary Had a Little Lamb,” a nursery rhyme that would become the first words ever spoken by the phonograph.
- > Crucially, Edison’s statement is among the first made by the recorded book industry to characterize reading as a secondary activity intended to accompany other pursuits.
- > “The library of the future will be one which any man can carry under his arm.”14 Not a bad prediction for 1878.
https://svpg.com/process-people/
- > First, I can’t help but notice that so many of these process people have never performed either the maker role or the manager role in a strong product company. They have more enthusiasm than experience or knowledge. Not only does this put exactly the wrong people in control of how teams work, but these people are prime targets for the armies of consultants and vendors that have figured out that these people are their best path into your company.
- > In every strong product company I know, the key to scale has been their leaders. In particular, their managers, and the commitment of those managers to coaching and developing their makers.
October
https://buttondown.email/j2kun/archive/monorepos-and-forced-migrations/
- > The person making the new API is expected to change client code to match, but is not responsible for ensuring the change does not break the client.
https://documentation.divio.com/
- > There is a secret that needs to be understood in order to write good software documentation: there isn’t one thing called documentation, there are four.
- > They are: tutorials, how-to guides, technical reference and explanation. They represent four different purposes or functions, and require four different approaches to their creation. Understanding the implications of this will help improve most documentation - often immensely.
September
https://svpg.com/executive-engagement/
- > The Main Thing. As Jim Barksdale famously said: “The main thing is to keep the main thing, the main thing.“ So much of an effective product organization is a result of real focus. There will always be new prospective customers, and new business opportunities, but remember that focus is not saying no to bad opportunities, it’s saying no to other good opportunities.
https://xahteiwi.eu/resources/presentations/no-we-wont-have-a-video-call-for-that/
in this case it’s actually something that can very much be applied to professional communications, with some rather minor modifications:
- Situation
- Objective
- Plan
- Logistics
- Communications
Let’s break these down in a little detail:
- Situation is about what position we’re in, and why we set out to do what we want to do. You can break this down into three sub-points, like the customer’s situation, the situation of your own company, any extra help that is available, and the current market.
- Objective is what we want to achieve.
- Plan is how we want to achieve it.
- Logistics is about what budget and resources are available, and how they are used.
- Communications is about how you’ll be coordinating among yourselves and with others in order to achieve your goal.
August
https://kyleshevlin.com/prefer-declarative-state-updaters
- I don't think this really has anything to do with state updaters: _most of the time_ defining any logic inline is worse than extracting it out and giving it a good name. And I don't really buy the example given to justify it. The flaw in the `CounterActions` component is not the "bad" state updaters, its the poor choice of props. The flow of deciding the childs props based on the parent also seems backwards - the smaller component should be written in isolation with the minimum footprint, the parent is just a consumer of a dumb little component much like any other component you choose to use. If the component wants to do something crazy with the number, that's the component you write so you take a setState, but you probably just want the minimal footprint for the components responsibilities, so a couple callbacks for its actions makes a lot of sense, and everything else works out nicely.
July
https://feed-me-up-scotty.vincenttunru.com/
- If only I could remember all those blogs that didn't have RSS that I wanted to read along with
https://www.infinyon.com/blog/2021/06/introducing-fluvio/
- https://www.fluvio.io/ A real-time data streaming platform with in-line computation capabilities. Use Fluvio SmartStreams to upload your custom logic and modify data as it moves over the network.
https://blog.syncinc.so/events-not-webhooks
- wild that this is a "business"
June
https://earthly.dev/blog/thought-leaders/
- Very much this.
https://www.yegor256.com/2021/06/01/tips-for-recruiters.html
- eh, maybe recruiters know what they're doing, they do it a lot, and their job isn't to get _you_ a job, it's to get as many hires as possible. maybe sending many emails might be a lot faster than sending one highly customized one and be better despite the lower hit rate.
- In fact, if I were to grade recruiters from my perspective, I'd give them the exact opposite grades to yegor here. I've never responded to a recruiter email. So for all the Jeffs and Amys, the less time they've spent crafting that email to me, the better job they're doing. The quicker they can move on to the next one the better. And if I want a new job? I'll probably find the place I want to work and apply, I doubt I'd make any use of an inbound request.
https://harvardlawreview.org/2020/12/testing-ordinary-meaning/?utm_source=Harvard+Law+Review+Mailing+List&utm_campaign=08f771714b-Volume_131_January_2017_Number_3_2018_COPY_01&utm_medium=email&utm_term=0_62fe9709f5-08f771714b-712419506
- I read the abstract and conclusion only.
- > Legal corpus linguistics users tended to identify narrow, prototypical examples (for example, a car is a vehicle) rather than nonprototypical examples (for example, an airplane is a vehicle), while dictionary users tended in the opposite direction, supporting more extensive judgments (for example, a pair of roller skates is a vehicle). As such, the verdicts of legal corpus linguistics and dictionary use often diverged from each other.
- > For instance, consider what this Article calls the “Nonappearance Fallacy” — namely, the (false) claim that absence of a usage from a large corpus indicates that the usage is not part of the ordinary meaning. One might be surprised to learn that in some modern corpora, there are no airplanes referred to as “vehicles.” Although it is tempting to conclude from this that airplanes are not included in the ordinary meaning of “vehicles,” the experiments show this to be too quick: the majority of ordinary people, law students, and judges evaluated airplanes to be vehicles. The broader insight underlying these critiques is that ordinary meaning diverges from ordinary use.
May
https://www.technologyreview.com/2021/05/01/1024411/what-india-needs-vaccines-covid-crisis/
- > India has administered 150 million doses, the third-greatest total in the world. However, the sheer size of India’s population means only 9.1% of Indians have received at least one dose, and fewer than 2% are fully vaccinated.
- > Unlike many high-income countries, including the US, India has also exported significant volumes of covid-19 vaccine—it has sent more than 66 million doses to 95 countries since the pandemic began.
- > Medical oxygen is in critically short supply in India, with an estimated daily need of 2 million oxygen cylinders far exceeding domestic production capacity.
April
- http://martinfowler.com/bliki/InternalReprogrammability.html
https://fs.blog/2014/01/what-the-most-successful-people-do-before-breakfast/
- > “Willpower,” Baumeister and co-author John Tierney write, “like a muscle, becomes fatigued from overuse.”
- > “Diets are broken in the evening, not the morning. The majority of impulsive crimes are committed after 11: 00 p.m. Lapses in drug use, alcohol abuse, sexual misbehavior, gambling excesses, and the like tend to come about late in the day.”
- https://astralcodexten.substack.com/p/metaculus-monday-2821
https://www.yegor256.com/2020/12/22/self-managing-orgs.html
- > They micromanage, They don’t listen, They don’t value us, They don’t provide feedback, They don’t motivate, They don’t set goals, They don’t delegate, They don’t explain
- > The list may be much longer, but I think that the root cause of all of them is the same: managers make appraisal mistakes.
https://www.yegor256.com/2020/11/24/objects-without-methods.html
- This is unconvincing. Seems like inventing new words to describe existing paradigms of lazy evaluation and getters.
Linked:
https://www.yegor256.com/2020/11/10/typing-without-types.html
- Typescript inference does this, but I don't think it's a great idea to rely on it. Defining the contract of a method can be a good thing. The complexity from the in and out flows of inference across objects and methods make program design very fragile, what started as a new requirement for print might be felt through-out the application as objects are passed around and expectations compounded.
https://scottlocklin.wordpress.com/2021/04/01/obvious-and-possible-software-innovations-nobody-does/
- > Nobody will do that either, as innovation in core software engineering, or even learning from the past in core software engineering is basically dead.
- > Engineers are a defeated tribe; it’s cheaper to hire an “AI” (Alien or Immigrant) slave to write the terraform or electron front end rather than paying clever engineers well enough to build themselves useful tooling to make them more productive and the world a better place. Consumers will suck it up and buy more memory, along with planned obsolescence, keeping the hardware industry in business. Computers aren’t for making your life easier; they’re for surveillance and marketing, and for manufacturers a consumer good they hope you buy lots of add-ons and upgrades for, and which wears out as soon as possible.
https://www.supremecourt.gov/opinions/20pdf/18-956_d18f.pdf
- My main disagreement is around the finding that the work is "transformative". Breyer states "Here Google’s use of the Sun Java API seeks to create new products. It seeks to expand the use and usefulness of Android-based smartphones. Its new product offers programmers a highly creative and innovative tool for a smartphone environment. To the extent that Google used parts of the Sun Java API to create a new platform that could be readily used by programmers, its use was consistent with that creative “progress” that is the basic constitutional objective of copyright itself. " and he seems to imply that anything that can be built on top of should be fair use because it can be transformed into something new and creative, which seems to be a very broad interpretation. And when applied to creative works like music samples, seems to open the door on what could be considered transformative.I can build an entirely new song from a combination of samples of another. I would argue that a sample is a "highly creative and innovative tool" and that the sample is copied "only insofar as needed to" create something new. A library of samples is not dissimilar to the building blocks that an API might provide. And as SC continues to say that the copying introduces more programmers to Java, and is beneficial to Oracle, the same would be true for sampling obscure works. I view the argument that a phone is a new "environment" is weak, as far as a Software Engineer is concerned, it's not much different than a low-powered or old computer. Laptops had batteries and cameras for some time before phones came along. In fact, even in 2005, phones were often more powerful than older computers, and since 2020, Apple has started putting mobile chips in their laptops - a MacBook today has a lot more in common with an iPhone than it does a PC from 10 years ago.
- The main differentiator might be around the "functional" nature of code, but any Software Engineer will tell you that writing a clean and concise API is hard and undoubtedly creative work, differentiating between "functional" code, or mathematical proofs, or non-fiction writing would be very challenging, and probably goes towards the question of copyright-ability, not fair use. After reading the descent, it seems that Thomas has a similar opinion, albeit with much more snark and ire.
- I also disagree with "Amount and Substantiality of the Portion Used". Code is by its very nature hierarchical, and there's no reason it couldn't have been copyright as multiple works, altering the ratios of "lines" copied. Indeed, the copied sections form the very base of the pyramid, which seems to have been recognized but ignored? The notion that programmers already know how to use these APIs is a bit odd to me. "It would have been difficult, perhaps prohibitively so, to attract programmers to build its Android smartphone system without them" - indeed Google has produced two programming languages from scratch since (Go and Dart), both are now pretty widely used, and I can't think of anywhere else where copying something is OK because it's a widely used tool and a new product might fail if they tried to innovate and produce something different (isn't this the innovation that's the point of copyright law?). The "Market Effects" section seemed pretty nebulous and the nature of fair use seems like it's pretty easy to construct arguments in either direction.
- https://hackernoon.com/learning-these-5-microservice-patterns-will-make-you-a-better-engineer-52fc779c470a
- https://www.lesswrong.com/posts/D4hHASaZuLCW92gMy/is-success-the-enemy-of-freedom-full
- https://svpg.com/best-vs-rest-faq/
- https://www.lesswrong.com/posts/bx3gkHJehRCYZAF3r/pain-is-not-the-unit-of-effort
https://astralcodexten.substack.com/p/contra-weyl-on-technocracy
- > This isn't trying to say mechanism is always good and judgment is always bad! We can predict cases where one might be better than the other - and as with the doctor studies and the gifted program studies, we can test when one is better than the other. I'm just trying to say it's an interesting question that you can't resolve just by throwing a copy of Seeing Like A State at someone.
https://slatestarcodex.com/2017/04/07/yes-we-have-noticed-the-skulls/
- Chesterton's Fence: Do not remove a fence until you know why it was put up in the first place.
https://assets.thoughtworks.com/assets/technology-radar-vol-24-en.pdf
Linked:
- > SPA injection - Instead of wrapping the legacy system, we instead embed the beginning of the new SPA into the HTML document containing the old one and let it slowly expand in functionality.
https://backstage.io/
- The idea of a unified docs story across all internal projects is appealing, though I'm not sure it needs to be linked to templates for creating new projects
https://github.com/pmndrs/jotai
https://github.com/pmndrs/leva
- React-first datgui, written in ts it seems
March
https://thenewstack.io/vfunction-transforms-monolithic-java-to-microservices/
> “The idea is to decompose this monolith into what otherwise would be a domain-driven design exercise.”
- The implication that the exercise is a waste of time is fascinating. Who needs software architecture in 2021?
https://www.geoffreylitt.com/2021/03/05/bring-your-own-client.html
- > I actually wrote this note 10 months ago and had totally forgotten about it. An hour ago, I randomly came across it and was quite amused. It includes some ideas which I thought I had started thinking about only recently. But it turns out they’ve been incubating in my mind for a long time. Funny how that works!
https://www.technologyreview.com/2021/03/17/1020811/better-tech-government-pandemic-united-states/
- > I call working with legacy systems “software archaeology.” It’s like homes built before city infrastructure existed—they weren’t built to connect to city plumbing or a power grid.
https://astralcodexten.substack.com/p/book-review-antifragile
- > You're unlikely to find a new law as helpful as the old laws are harmful, so focus on getting rid of old laws.
February
https://vectorized.io/
- Somewhat surprising that self-tuning software isn't more common. It's common to tune services for the initial loads, and over time this configuration fails to hold up. Maybe alerts help identify issues as the arise, but a service should be very capable of observing it's own load over time, and estimating how different cache schemes/retention would best serve requests. In my experience, cache sizes and durations are just guesses. An hour seems reasonable. 1024 things seems reasonable. Most installations are left at their defaults, regardless of how much disk or memory is available where it's installed.
- WASM transforms is pretty cool.
https://thenewstack.io/2021-will-be-the-year-of-enterprise-machine-learning/
- > How do I get all of these technologies talking to each other? How do I begin integrating them into my existing business processes and tech stack? And how do I enable my IT organization to rapidly adopt this emerging technology and bring it to market?
- > We saw models taking longer to get into production compared with our previous report’s data, while data scientists are spending more of their time on model deployment.
https://thenewstack.io/part-1-the-evolution-of-data-pipeline-architecture/
- > In addition to the above complexity, we should also add the fact that it’s not enough anymore to just move data from the points of creation to a data warehouse. Data Pipelines today are built to also sync data from our analytical and processing storage, like the data warehouse and data lake, back to systems where actions can be taken.
Continued: https://thenewstack.io/part-2-the-evolution-of-data-pipeline-architecture/
- Kinda didn't really add much or give enough details there to make that valuable.
https://codahale.com/work-is-work/ #async
- > Keep the work parallel, the groups small, and the resources local.
- > Prioritize the development of force multipliers.
- > If possible, factor work products into independent modules; if not, grow slowly and optimize.
- > Scale organizational efforts across a portfolio of synergistic products.
- > Keep responsibility assignment matrices small, sparse, and local.
- > Prioritize asynchronous information distribution over synchronous.
- > What happens inside the boundaries is important.
https://basecamp.com/guides/how-we-communicate #async
- > Real-time sometimes, asynchronous most of the time.
- > Internal communication based on long-form writing, rather than a verbal tradition of meetings, speaking, and chatting, leads to a welcomed reduction in meetings, video conferences, calls, or other real-time opportunities to interrupt and be interrupted.
- > Writing solidifies, chat dissolves. Substantial decisions start and end with an exchange of complete thoughts, not one-line-at-a-time jousts. If it's important, critical, or fundamental, write it up, don't chat it down.
- > Ask yourself if others will feel compelled to rush their response if you rush your approach.
- > If you want an answer, you have to ask a question. People typically have a lot to say, but they'll volunteer little. Automatic questions on a regular schedule help people practice sharing, writing, and communicating.
- > Ask if things are clear. Ask what you left out. Ask if there was anything someone was expecting that you didn't cover. Address the gaps before they widen with time.
> Reflect every 6 weeks: Heartbeats
- > Heartbeats summarize the last ~6-weeks of work for a given team, department, or individual (if that person is a department of one). They're written by the lead of the group, and they're meant for everyone in the company to read. They summarize the big picture accomplishments, they detail the little things that mattered, and they generally highlight the importance of the work. They'll also shine a light on challenges and difficulties along the way. They're a good reminder that it's not all sunshine all the time. On balance, Heartbeats are wonderful to write, fun to read, and they help everyone - including those not directly involved with the work - reflect on jobs well done and progress well made.
https://about.gitlab.com/company/culture/all-remote/asynchronous/#async-30-at-gitlab #async
- > Every meeting should be a review of a concrete proposal or to catalyze a future series of asynchronous events, and only called when it will lead to a more efficient outcome than would be possible asynchronously.
- > Do not use @-handles unless you are requesting a specific written action or piece of feedback from the person and you provide the proposal and context necessary for them to execute.
- > Move a project forward as best you can given the resources available, and if you reach a point where you're blocked, attempt to ship what you have now through a two-way door.
https://thenewstack.io/garden-the-configure-once-kubernetes-platform-for-seamless-dev-prod-integration/
> you write a brief configuration file next to each of your services
- Enter my skepticism
- Unclear why this is different from something like docker-compose. Not sure that the dependency graph of your services "emerging" from the dependency configs of each individual service is really how you want to define your architecture, rather than something more intentional.
https://fs.blog/2021/02/gian-carlo-rota/
> Relate to your audience
- > Sometimes, how people respond to your work has as much to do with how you respond to theirs as it does with the work itself. If you want people to pay attention to your work, always give before you take and pay attention to theirs first. Show that you see them and appreciate them. Rota explains that “everyone in the audience has come to listen to your lecture with the secret hope of hearing their work mentioned.”
https://www.nytimes.com/2021/02/05/opinion/fossil-fuel-oil-climate-change.html
- > In 2019, North Dakota flared 19 percent of its natural gas production.
https://blog.acolyer.org/2021/02/08/the-ants-and-the-pheromones/
Linked:
http://cidrdb.org/cidr2021/papers/cidr2021_paper16.pdf
- References "T. J. Ameloot, F. Neven, and J. Van den Bussche. Relational transducers for declarative networking" which sounds interesting, but a google hasn't found me a PDF yet
> One of the key goals of the Hydroflow algebra design is a unification of dataflow, lattices and reactive programming.
- Sounds easy.
https://www.vice.com/amp/en/article/4ad8db/adam-curtis-charlie-brooker-cant-get-you-out-of-my-head?__twitter_impression=true
- > On the other hand, it might be a moment when all the old stories that made sense of the world are collapsing – and in that moment, before the next big story comes along, a mass of trillions and trillions of meaningless fragments rush into the vacuum, and for a brief moment in history we just are immersed in a world that is completely without meaning. And then from somewhere that we can’t possibly imagine at the moment, someone will start to reassemble all those fragments in a completely new way – and out of that will come the new big story. That actually we might be living through a moment of almost complete freedom from meaning, which is why we are so terrified and anxious. It might be like that moment in the eye of a storm. Outside, the giant forces of history roar on – but in the eye it has gone quiet and we are just experiencing, but have no story to tell each other. So in 200 years’ time people will look back at TikTok as the perfect expression of this age. And all the posh novels will be forgotten.
https://deniseyu.io/2020/05/25/healthier-debates.html
- > In practice, I’d recommend using Active Listening techniques, and repeating what the other person had said to make sure you understand it, and responding thoughtfully to the nature of their argument, as well as the details that they presented.
https://eng.uber.com/microservice-architecture/
Layers of a Domain:
- >Infrastructure layer. Provides functionality that any engineering organization could use. It’s Uber’s answer to the big engineering questions, such as storage or networking.
- > Business layer. Provides functionality that Uber as an organization could use, but that is not specific to a particular product category or line of business (LOB) such as Rides, Eats, or Freight.
- > Product layer. Provides functionality that relates to a particular product category or LOB, but is agnostic to the mobile application, such as the “request a ride” logic which is leveraged by multiple Rides facing applications (Rider, Rider “Lite”, m.uber.com, etc).
- > Presentation. Provide functionality that directly relates to features that exist within a consumer-facing application (mobile/web).
- > Edge Layer. Safely exposes Uber services to the outside world. This layer is also mobile application aware.
- > Data extensions provide a mechanism for attaching arbitrary data to an interface to avoid bloat in core platform data models. For data extensions, we leverage Protobuf’s Any functionality so that teams can add arbitrary data to requests. Services will often store this data or pass it to a logic extension so that the core platform is never responsible for deserializing (and thus “knowing about”) this arbitrary context.
https://www.theguardian.com/info/2019/dec/06/software-quality-in-a-world-of-microservices-and-continuous-deployment
- > Historically, we only ever tested the very tip of the iceberg - except the iceberg has now melted, exists in several places in time and locations concurrently, and is also on fire.
https://astralcodexten.substack.com/p/book-review-why-were-polarized
- > He says that the Republican Party represents the modal American on various characteristics, eg Christian (the most common religion), white (the most common race), straight (the most common sexual orientation), etc, whereas the Democrats represent everyone else (eg Muslims, Jews, atheists, and every minority religion; blacks, Asians, Hispanics, and every minority race; etc). That means the Republicans are more ideologically uniform - Christians are genuinely similar to other Christians, but Jews are only superficially similar to Muslims by virtue of their non-Christianness. That means ideology can't really capture the Democratic Party in the same way it captures the Republican Party.
- > An alternate framing might be something like: when America was 80 or 90% white, you couldn't really have race-based coalitions, because the non-white coalition would lose. As America becomes closer to 50% white, race-based coalitions start to be a viable strategy, especially if the non-white coalition can get some moderate level of white support. Since race is an emotional topic that lots of people feel invested in, as coalitions become more race-based, politics is going to get more polarized and emotional.
https://thenewstack.io/case-against-web-frameworks/
> Google’s Alex Russell said recently that “12% of pages loaded in Chrome [are] using Web Components.”
- Perhaps it really is time for a revisit, maybe 5 years since I last looked into them?
https://www.technologyreview.com/2021/02/24/1018119/climate-change-progress-gates-clean-energy/
- Awkwardly, the RSS feed appears to bypass their subscription requirements.
January
https://blackboxofpm.com/product-management-mental-models-for-everyone-31e7828cb50b
- A bit simplistic, but an interesting idea of showing a few examples of how some mental models might apply to Product Management. I'm curious if there are specific models that apply to Product Management / Product Development, specifically around the problem solving and conversion of client(s) problems in to a product or platform
https://www.interana.com/blog/6-essential-mental-models-product-managers
- "To put this into practice, try categorizing decisions into actions that innovate, sustain, or scale."
https://www.gwern.net/Complement
- > Another way that I like to express that is “create a desert of profitability around you”. I once had a strategy professor define the Google business model somewhat like that, where “Google tries to make every other business around it free or irrelevant”…A desert of profitability shifts consumers to you, and keeps competitors away.
https://svpg.com/product-vs-feature-teams/
- "This article is certain to upset many people" - starting an article like this certainly upset me.
- > The result is that in feature teams, the product manager role is mainly project manager, and partly (unskilled) designer.
There is something valuable in the definition of a "Empower Product Team" though, and I feel pretty confident that we have mostly "Empowered Product Team"s
- though we have a much more flexible structure than described
I think the main "test" for this style of team is the provided "Are you provided roadmaps with prioritized features and dates, or are you assigned problems to solve with business outcomes?"
- If the later, the team is "empowered"
- And the other tests strike me as failure to set up an effective team after being given the correct framing
I do think the team I currently help lead is a bit more vague than even the later half of the question - the business outcomes are clear, but it's very much our job to both diagnose the problem and solve it
- I think there's something to be said here about the gap between Product Vision and Product Strategy, as mentioned below.
Elsewhere on SVPG
https://svpg.com/empowered-product-teams/
- Covers very similar ground to the above
The Role of Leadership
- Product Vision
- Product Strategy
- Product Principles
- Product Priorities
- Product Evangelism
- > This is a critical trait of empowered teams. We want to ensure that every member of the team has joined the team because they sincerely believe in our larger purpose.
https://svpg.com/product-leadership-is-hard/
- > It is worth noting that the product vision is typically the single most powerful recruiting tool for strong product people.
- > The product strategy describes how we plan to accomplish the product vision, while meeting the needs of the business as we go. The strategy derives from focus, then leverages insights, converts these insights into action, and finally manages the work through to completion. More generally, the product strategy helps us get the most value out of whatever number of product teams we have.The output of the product strategy is a set of business or customer problems to solve (team objectives) that the leaders will then need to assign to specific product teams.
https://www.datadoghq.com/blog/engineering/introducing-glommio/
- thread-per-core has a very Java AWT-thread or concurrency-in-the-browser with webworkers vibe to it. no need to worry about concurrent writes, because there's only ever a single thread operating on the AWT or DOM, or when you're in the web-worker you know where that codes being run, so you just don't have to think about concurrency. similar to actors in that way of knowing you're writing code with exclusivity over the thing you're operation on.
Linked
https://www.scylladb.com/2020/05/05/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/0/
- > as devices get extremely fast, interrupt-driven work is no longer as efficient as polling for completions — a common theme that underlies the architecture of performance-oriented I/O systems.
- and a tease at eBPF...
https://cilium.io/blog/2020/11/10/ebpf-future-of-networking/
More about Cilium rather than just eBPF
- I think the summary is eBPF lets you write very performant code that operates on packets
- and Cillium is an extension of this for k8s, so a better way to write firewalls and proxies and load-balancers as it's more performant.
https://ebpf.io/
- Cute logo. Not sure why it needs a logo.
https://fs.blog/2020/11/learning-through-play/
> Take away prescriptions and obligations, and we gravitate towards whatever interests us the most.
- Not sure that's true. I gravitate towards video games, and don't get me wrong I love video games, but they're not the most interesting thing. They can be challenging, but often they're just an easy thing to do.
- Not sure I really buy the link between numbering systems and play here, feels pretty forced...
- There's usually something valuable in an fs.blog, but the posts feel very structured. Big Idea. Three examples. Conclusion. And the examples don't always work, they just seem like "Cool Things" the author has learned about and wants to string together, but I'm not quite convinced are really related. I feel the same way about the chapters mental models book.
https://github.com/richardartoul/tsdb-layer
- > Of course, all of this relies upon the fact that you're able to maintain and operate an FDB cluster, but that's the point of building on top of FDB. Once you've figured out how to setup and operate FDB clusters, you can build all of your other distributed systems on top of it and let FDB handle the most complicated portions of the distributed systems so you can focus on the portions that are unique to the problem you're trying to solve.
https://blog.cloudflare.com/introducing-workers-durable-objects/
These seem like globally addressable actors? Seems kinda cool.
- Kinda has that thread-per-worker vibe too
- > We see a future of edge databases that store each "chunk" as a Durable Object. By doing so, it will be possible to build databases that operate entirely at the edge, fully distributed with no regions or home location. These databases need not be built by us; anyone can potentially build them on top of Durable Objects. Durable Objects are only the first step in the edge storage journey.
https://blog.scottlogic.com/2020/12/07/on-openfin-and-interoperability.html
> This creates a somewhat tight level of coupling between publisher and subscriber, since they both need to agree on a topic
- Absolutely. I think one of the biggest myths about event-driven programming is that everything is loosely coupled, in reality, it's just a way of supporting function-calls-at-a-distance, and if you remove a topic, that's breaking. It's as tightly coupled as a a direct function call like `.onNewUser`. Given that most events are just names, not types, their meaning can often morph over time as the api surface area expands, new types of "edits" might be given a new event, rather than grouped into the existing "update" topic and therefore the old subscribers wont know that this is something they should be listening for.
https://blog.acolyer.org/2020/10/26/helios-part-1/
- > A good guiding principle for designing such a system is probably to minimise data movement – i.e. (1) do as much processing as possible as close to the point of data capture as possible, and only send the aggregated results downstream, and then (2) where pools of data do amass, do as much querying of that data as close to the point of data storage as possible and only send the query results back upstream.
- > I observe that computation split across end devices, edge, and cloud doesn’t really sit well with batch processing either. We do distributed batch processing within a layer (e.g. map-reduce) but across layers is different. My conclusion is that federated big-data systems are also online systems.
Linked:
https://blog.acolyer.org/2018/01/08/the-case-for-learned-index-structures-part-i/
Linked:
Part 2: https://blog.acolyer.org/2018/01/09/the-case-for-learned-index-structures-part-ii/
- > From an ML perspective, we can think of a Bloom-filter as a classifier, which outputs the probability that a given key is in the database. We can set the probability threshold \tau for considering a key to be in the set such that we can achieve any given target false positive rate. Unlike Bloom filters though, we can’t guarantee the absence of false negatives. The solution to this problem is neat: take the set of false negatives produced by the learned function f , and create a Bloom filter just for this subset of keys. Now on a lookup if f says the key is present with probability greater than \tau we can respond in the affirmative. If the probability is less than this threshold, a second check to the false negatives Bloom filter is added before returning the final decision.
https://simblob.blogspot.com/2021/01/my-personal-information-workflow-part-1.html
- My system: everything, including this, goes in workflowy. I've been using workflowy for years. Super easy, very lightweight, lists on lists on lists. Seems to have been overtaken in feature-space by Roam and other alternatives, but serves the same purpose and is gaining features from those more advanced products slowly. One place to put things means one place to search. Writing and synthesizing is useful, and workflowy is the true minimum amount of structure, very low barrier to entry to committing something. I have a decent amount of categorization, but the main entry points are this Things Found list, and my daily journal of todos/notes/ideas. Monthly I'll do a roll-up of anything straggling, decide if to carry forward or mark as unfinished.
https://www.cabinetmagazine.org/issues/52/hodes.php
- > Studies have estimated that pallets consume 12 to 15 percent of all lumber produced in the US, more than any other industry except home construction.2
- Fantastic piece.
2020
December
https://reactjs.org/blog/2020/12/21/data-fetching-with-react-server-components.html
Can we run the "server" here in a worker to give us worker based rendering? Isolating dependent code that wants to render something would be fantastic, but maybe we're not in an environment where we can do server (or edge) rendering.
- Couldn't see on the first pass how the client connects to a server, must be injected by the webpack setup in the example
November
https://shopify.engineering/shopify-monolith
- “Embedding and pairing make sure we’re solving the problems that product developers are most struggling with in practice, avoiding what’s often called Ivory Tower Syndrome where the solutions don’t match the problems”
https://fs.blog/2020/10/why-read/
- “Novels require more readers than poems do, a statement so odd that it puzzles me, even as I agree with it. Tennyson, Browning, and Robert Frost had large audiences, but perhaps did not need them. Dickens and Tolstoy had vast readerships, and needed them; multitudes of overhearers are built into their art. How do you read a novel differently if you suspect you are one of a dwindling elite rather than the representative of a great multitude?”
http://129.215.32.99/publications/documents/1996/96-ker-intro-ontologies.pdf
- Found via Brady in a doc about the vision for the concepts team
“Initial Guidelines for Designing Ontologies”
- Clarity, Coherence, Extensibility, Minimal encoding bias all make sense
Minimal ontological commitment is an interesting concept, and very different to how we often treat ontologies
- “An ontology serves a different purpose to a knowledge base”
October
https://www.lesswrong.com/posts/YcdArE79SDxwWAuyF/the-treacherous-path-to-rationality
- Comments do a pretty good job of explaining why LW is incredibly off-putting, even if their methods and models are valuable
https://8thlight.com/blog/javier-garc%C3%ADa/2019/10/29/functional-lessons.html
- I wish we had pipes in javascript. And pattern-matching.
August
https://itnext.io/high-level-micro-ui-architecture-a033bc8e87a8
- I shouldn’t have, it’s itnext after all, but I wonder if anyone knows how to actual do micro-frontends
July
https://blog.logrocket.com/deploying-state-machines-with-frontend-frameworks/
- so I guess logrocket has just devolved to “find a library, recreate the most trivial example, write a blog-post that’s really just an ad”, no real discussion of if it’s a good idea, when to use it, why it’s so damn verbose, how to do anything remotely interesting using state machines etc
https://blog.logrocket.com/react-concurrent-mode/
- Maybe logrocket should join the itnext ban list
https://leogao.dev/2020/05/29/GPT-3-A-Brief-Summary/
- Honestly, I find this terrifying.
https://svelte.dev/blog/svelte-and-typescript
- Excited to give this a whirl
https://adamwathan.me/css-utility-classes-and-separation-of-concerns/
- Explains how he ended up building https://tailwindcss.com/ - unconvinced of the method, though I’d give tailwind a try to see how it feels
May
https://vladikk.com/2020/04/09/untangling-microservices/
- Let’s migrate our microservices to monoliths
https://www.infoq.com/news/2020/04/snap-architecture-service-mesh/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global
- Let’s migrate our monoliths to microservices
https://m.signalvnoise.com/the-majestic-monolith-can-become-the-citadel/
- we could do it slowly with outposts?
https://changelog.com/posts/monoliths-are-the-future
- but no wait back to monoliths
https://eng.snap.com/monolith-to-multicloud-microservices-snap-service-mesh
- and then back to microservices but this time in different clouds too?
2019
November
https://www.toptal.com/front-end/micro-frontends-strengths-benefits
- An article in which someone describes how the workspace works.
https://tech.wayfair.com/2019/10/how-and-why-we-contributed-to-mvrx/
- I should write a blog post about ever 100 PR I write too
https://itnext.io/brutally-solid-typescript-ba745585f440
- I should stop reading shit from itnext, it’s worse than that hackernoon garbage
October
https://www.webfx.com/blog/web-design/css-methodologies/
- Still in search of a methodology that’s useful in css module
https://itnext.io/how-to-easily-reuse-components-across-projects-and-repositories-fa73f8ba2a83
- Just an ad for bit.dev
- I don’t really understand what they add other than an index on top of a library - maybe some runtime loading of the component. Seems like fragile integration though.
https://nordicapis.com/what-is-api-orchestration/
- I’d love a bit of api orchestration
https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html
- Reading the challenges, this sounds kinda rough. For anything that wants to be truly parallel it seems like choosing a language with concurrency baked in from the start, like Rust or something on the Erlang VM, would be a better fit.
http://engineering.khanacademy.org/posts/upgrade-buttons-links.htm
- I love a person who’s just willing to do the hard work
https://www.confluent.io/blog/analytics-with-apache-kafka-and-rockset
- With a product named Kafka Connect, it’s really hard to tell what’s OSS and what’s confluent’s product. It all looks like open source, do they just sell support?
- Looks like Rockset is yet another third party product you can put your data in.
https://blog.cloudera.com/shared-transactional-tables-the-foundation-of-next-generation-big-data-warehousing/
- transactions are cool but when you don’t own the whole data engine (or whatever Foundry is), it seems like you have to spend a lot of time pushing them down it to every nook and cranny of any tool that could be composed into it
https://kyligence.io/blog/olap-analytics-is-dead-really/
- “This same thing happened to the concept of the “Data Lake”, which promised vast data collection capabilities to meet all of your data needs. It was simple, just come by whenever you wanted, bringing your collection bottle to fill with some data water to satisfy your thirst for insights. It turns out, this unfiltered water makes people sick, and the volume of the lake drowns people who don’t know how to swim in it. “
September
https://medium.com/pinterest-engineering/building-a-real-time-anomaly-detection-system-for-time-series-at-pinterest-a833e6856ddd
“In lieu of estimating seasonality with iterated Loess, we instead use a simple ensemble of efficient seasonality estimation techniques (e.g fourier, historical sampling).”
- I don’t think I’m the target audience for this one...
https://hbr.org/2006/02/defeating-feature-fatigue#
- From 2006: “For a ring-tone-addicted public” really dates this one.
- “Clearly, capability has a stronger effect on expected utility than usability does.”
- “The phenomenally popular iPod, Apple’s personal music player, shows how effectively a company can make sales and satisfy customers with a tightly focused solution. As a new digital product, the iPod could have combined numerous features at extremely low incremental cost. Instead, it aimed to be a single-purpose tool that performed so well and so simply that everyone had to have one.“
https://engineering.gusto.com/does-this-code-spark-joy/
- Does this article spark joy? no.
https://eng.uber.com/best-practices-for-react-v16/
- Apparently the best practices include writing a test to cover any and all behavior by any line of code.
- The idea of writing a test that checks that your private callback onOpen containing a single line of code that sets your internal state open to true works correctly seems like madness.
- I really don’t understand how anyone is able to modify any code in a code-base where every line and private method and private state are all as you expect them at all times.
- The only useful thing I take away from this article is that testing hooks + functional components is hard. That’s okay though, I will continue to avoid hooks, functional components and testing react-y things.
https://stackshare.io/segment/cultivating-your-data-lake
gluing together your own foundry seems hard. even picking which blocks you want to glue together seems hard. every time i go down this rabbit hole i find some new blocks:
https://blog.logrocket.com/docker-for-front-end-developers/
“let’s run a React application in Docker!”
- wat
https://medium.com/strava-engineering/stravas-longest-intern-ever-interns-again-70d4aceece71
- Left me curious as to how many bits you’d need in a bloom filter to efficiently decide if your 100 followers had ridden a given segment
https://hur.st/bloomfilter/?n=15289&p=1.0E-3&m=&k=
- 15289 is the number of people who’ve done Kings.
- You’d need 18kb of bloom filter for Kings to get a 1/100 false positive.
I suppose you could vary the size of the bloom filter dependent on the number of people who have ridden a segment - there’s no way to resize, but you could rebuild a larger bloomfilter offline as you reach capacity.
https://itnext.io/css-architecture-with-sass-smacss-and-bem-cc618392c148
- It feels like all the css methodologies basically get thrown out with the css-modules approach, as it automatically enforces a component level structure and discourages sharing of styles across components
- There’s probably something useful still to be found in these structures however - I’m still a fan of using modifiers (prefixed with -) for varying styles based on states (like selected, active, etc), and more recently using a single scss file for a whole folder of related (e.g StringEditor, NumberEditor...) or nested components (e.g SimTable, SimTableRow, SimTableHeader) where you the nested components wouldn’t exist outside of the parent.
https://engineering.salesforce.com/making-life-easier-with-immutable-deployment-64baca14395c
- Great to see that salesforce has finally embraced docker?
https://itnext.io/micro-frontend-941a5f1a3e72
- Yeah that’s not what that means.
https://instagram-engineering.com/making-instagram-com-faster-part-2-f350c8fba0d4
- Would be cool to do this for compass actions/applications api calls.
August
https://www.figma.com/blog/how-we-built-the-figma-plugin-system/
I don’t think the downsides of the iframe aproach apply to our application plugins, but certainly do for in-app plugins
- I don’t really see async being hard as much of a hurdle, but certainly copying large amounts of data is always going to be expensive.
- However, “our plugin model works such that they are only ever run on explicit user action” doesn’t really fly for most of our plugin uses.
- Their solution is to have a null iframe (no browser history) for the UI + sandbox browser/network features, and then a main-proccess Realm for calls that need to access the document in a non-async way. Cool tech for sure, but this seems like a lot of additional complexity to avoid the two downsides to the iframe approach mentioned earlier: that async is hard and that large data transfer is expensive.
- To me, a better approach seems to be avoid the need for copying large amounts of data from the outset with good APIs and a simple model, and to embrace the async nature of running code out of process(ish).
https://dassur.ma/things/is-postmessage-slow/
- Answer: No. Keep payloads under 100kb. Keep animation-related payloads under 10kb.
- Or, if you’re happy transferring arrayBuffers back and forwards (i.e only accessing the array in one place at a time), using flatbuffers can make this easy to do while still having structured objects, including a TS generator. Maybe one-day we’ll get sharedArrayBuffers back.
https://dassur.ma/things/react-redux-comlink/
- This doesn’t do a great job of selling the why behind the idea of moving state off-thread. If you’ve got a local copy of the state for rendering, the only benefit in the standard model is to move the reducing off-thread, but that really shouldn’t be expensive. It’s the services and “sagas” that get expensive.
- I’ve been thinking about moving our services/data-loading/etc off the main thread for a while, and with the data-heavy nature of vertex where we often have data for large chunks of time that aren’t visible, it would actually give some fairly nice wins to minimize expensive object-loading/ts-loading/deserializing off-thread and sending a simple model with the data we need to the UI thread.
- For our purposes, we “connect” our canvas directly to actions for updates, as canvas doesn’t have a declarative model like react, and the overhead for that model would prevent a performant canvas. As a result we’d want to keep our actions visible on the UI thread, but there’s no reason we couldn’t move state off-thread but have actions visible both sides of the barrier.
https://stratechery.com/2019/shopify-and-the-power-of-platforms/
- The world of Shopify and dropshipping is kinda wild. You can straight-up buy a Shopify-based buisness (and run it into the ground) https://exchangemarketplace.com/