Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Mike Cvet
The Consensus Trap
Unprincipled consensus-culture is a sign of organizational decay "We're big on consensus-based decision-making" Is often followed by something like "One of our biggest challenges is with ownership and accountability" Alignment is the process by which we agree on outcomes, understand the implications of decisions, and organize. Consensus is the process by which we ensure outcomes, decisions, and paths forward are unobjectionable to all parties.
Temperature Scaling and Beam Search Text Generation in LLMs, for the ML-Adjacent Original
What “temperature” is, how it works, its relationship to the beam search heuristic, and how LLM output generation can still go haywire If you’ve spent any time with APIs for LLMs like those from OpenAI or Anthropic, you’ll have seen the temperature setting available in the API. How is this parameter used, and how does it work? From the Anthropic chat API documentation: temperature (number) Amount of randomness injected into the response.
PyTorch and MLX for Apple Silicon Original
A side-by-side CNN implementation and comparison A few months ago, Apple quietly released the first public version of its MLX framework, which fills a space in between PyTorch, NumPy and Jax, but optimized for Apple Silicon. Much like those libraries, MLX is a Python-fronted API whose underlying operations are largely implemented in C++. Below are some observations of the similarities and differences between MLX and PyTorch.
nl-sh: The Natural Language Shell
A proof-of-concept for the future of the terminal I spend a lot of time in the terminal, and often have to search around Stack Overflow for the right combination of find or git or awk and whatever else to complete my tasks. Although natural to myself and most engineers, the terminal is not a particularly friendly experience; it's efficient for experts, but for novices, it takes a long time to build expertise.
Platform Monopolies and the Decay of Leverage
Build the platform your developers want to use, not have to use There are two reasons why internal, proprietary software platforms are used by engineering teams in the company: They want to use it, because the software platform is highly attuned to (usually) application developers’ domain-specific needs, and proactively solves common technical or business needs for them They have to use it, either through organizational mandate or decree, or because the cost of using an alternative, superior,...
Strategy, Alignment, and Organizational Entropy
Often overlooked in strategy formulation is the concept of information asymmetry, from contract theory. This occurs when one party involved in an agreement (say, a team roadmap approval) possesses more — or better — information than the other. This can be bidirectionally true for both leadership and engineering teams, as reluctant as they may be to admit it. This asymmetry feeds a moral hazard called the Principal-Agent Problem.
What is a Feed?
Feeds are everywhere: the Facebook news feed, the Instagram or Threads home feeds, the GitHub homepage feed, the Amazon home feed, the Twitter/X home timeline, the LinkedIn home feed, the Medium For you feed. These feeds are core constructs within social or content platforms, and are complex aggregations of user or partner-generated content, events and relationships between actors (human or otherwise). They are conceptual derivatives of web feeds.
Programming Apple GPUs through Go and Metal Shading Language Original
Investigating Go, Cgo, Metal Shading Language, Metal Performance Shaders, and benchmarking different approaches to matrix multiplication Below I’ll describe the process of using cgo to interface between Go and native C, how this can be used to interface with Objective-C bindings for Apple’s Metal Performance Shaders framework, how to interface with custom GPU code (shaders) written in the Metal Shading Language, and finally benchmarking all of that against hand-written and OpenBLAS Go-based...
Programming Apple GPUs through Go and Metal Shading Language
Programming Apple GPUs through Go and Metal Shading Language Below I’ll describe the process of using cgo to interface between Go and native C, how this can be used to interface with Objective-C bindings for Apple’s Metal Performance Shaders framework, how to interface with custom GPU code (shaders) written in the Metal Shading Language, and finally benchmarking all of that against hand-written and OpenBLAS Go-based matrix multiplication operations. This was written to run on my M2 MacBook.
Standards, Conventions, and Wishful Thinking
Back in April of 2023, the US Federal Reserve published their report on the Silicon Valley Bank failure, and it summarized four key findings: SVB's leadership and board of directors failed to manage known risk A failure by regulatory supervisors to appreciate the risks of growing complexity as the bank grew in size Regulatory supervisors failed to take sufficiently corrective action in light of fundamental bank weaknesses In response to Fed changes in 2019, following the EGRRCPA (a partial...
Convolutional Neural Networks from the Ground-Up, for the ML-Adjacent
Building an image classification model from scratch to recognize my own terrible handwriting In an earlier post, I walked through the Word2Vec algorithm and a reasonably bare-bones neural network. In this post, I’m going to walk through the implementation of another kind of neural network — CNNs, which are effective for image recognition and classification tasks, among other things. Again, the Rust code referenced below does not leverage any ML libraries and implements this network from scratch.
Word2Vec Embeddings from the ground up, for the ML-Adjacent
An exploration into neural networks, embeddings generation, and embeddings-based semantic similarity I’m not a formally trained machine learning expert, though I’ve built online ML infrastructure to support relevance teams. I wrote this post for people in a similar position— who perhaps work with these concepts but haven’t implemented any of the internals.
Hierarchy and Abstraction
Humans have a natural tendency to organize complexity through the establishment of hierarchy. It's an effective tool across domains and contexts. Consider two graph diagrams. The first graph is organic, in the sense it doesn't clearly convey any intentional structure. The second graph is structured and hierarchical. It represents layering, flow, intentional relationships. Software engineers might see software architecture represented in these images. Managers might see organizational structure.
Verifying the Origin of Media in an Algorithmic World
A walkthrough of the C2PA content authenticity specification and its Rust SDK Distinguishing authentic human-produced media from deepfakes or other algorithmically generated media is notoriously difficult. Existing tools produce a probability that given media is generated, but certainty is elusive. In the coming years, verifying the authenticity of political and election-related media will become critical as algorithmic media and deepfakes have flooded online spaces.
Verifying the Origin of Media in an Algorithmic World
1970s Transamerica building in San Francisco. Midjourney. Distinguishing authentic human-produced media from deepfakes or other algorithmically generated media is notoriously difficult. Existing tools produce a probability that given media is generated, but certainty is elusive. In the coming years, verifying the authenticity of political and election-related media will become critical as algorithmic media and deepfakes have flooded online spaces.
Goals and Failure Modes for RFCs and Technical Design Documents
Lessons learned from experience steering technical design collaboration At a certain scale and ecosystem complexity, software engineers need a way to socialize their bigger design ideas outside of code review. Sometimes this starts as engineers just informally writing their ideas down in a doc and sharing them with their team. After a while, someone realizes everyone keeps asking the same questions, and then software design document templates are born.
Goals and Failure Modes for RFCs and Technical Design Documents
Regrettably, we could have gathered this feedback years earlier. We made a series of changes to the RFC materials and process based on what we learned. After aligning with our xfn stakeholders, we launched the changes to positive reception. There's a set of considerations which can help make RFC templates and processes simultaneously more effective and ergonomic for design and review. RFCs are tools -not outcomes RFCs are tools for supporting better outcomes.
Better-than-Cubic Complexity for Matrix Multiplication in Rust
Years ago, I wrote an implementation of the Strassen matrix multiplication algorithm in C++, and recently re-implemented it in Rust as I continue to learn the language. This was a useful exercise in learning about Rust performance characteristics and optimization techniques, because although the algorithmic complexity of Strassen is superior to the naive approach, it has a high constant factor from the overhead of allocations and recursion within the algorithm’s structure.
Learning Rust With SHA-3 and Friends
My first hobby project for learning Rust was implementing cryptographic hash algorithms [MD5, SHA-2, SHA-3]. The latter, SHA-3, was the most challenging implementation. That was due to a) substantial differences in algorithm design from the more familiar MD5 and SHA predecessors and b) fewer and less intuitive reference implementations and algorithm explanations.
The value of code
Sooner or later, every software engineering organization is faced with the task of trying to evaluate the productivity of their team and the performance of its members. And invariably, the conversation turns into a discussion about whether, or how much, to measure code output as an individual productivity metric. In the best case, this metric could be one dimension, of hopefully several, used to evaluate some classes of engineers — certainly more junior ones.
Late Stage Microservices
I read about the Amazon Prime Video team’s effort to scale and cut costs by 90% by combining their microservices into a monolith. While I’m sure there’s more to the story here, there are similar stories published around the Internet; a kind of rebuttal to the microservices craze of the last decade. It reminded me of the last few years I spent at Twitter, where the number of microservices (in the thousands) peaked and then began to fall, even as traffic increased.
Refactoring for your System
The dictionary definition of migration is roughly: "the movement of things from one place to another". A close analog in a distributed system might be "change all RPC clients of service A to service B". When working on migration steering efforts, I've taken care to clarify that the definition of migration efforts is more like broad technical efforts imposed upon codebases or datasets.
Late Stage Microservices
I read about the Amazon Prime Video team's effort to scale and cut costs by 90% by combining their microservices into a monolith. While I'm sure there's more to the story here, there are similar stories published around the Internet; a kind of rebuttal to the microservices craze of the last decade. It reminded me of the last few years I spent at Twitter, where the number of microservices (in the thousands) peaked and then began to fall, even as traffic increased.
Thinking in Systems
Thinking in Systems introduced me to systems thinking many years ago, which changed how I saw the world and shaped some of my perspectives on problem solving. This mentality goes beyond the typical use of "systems" as a noun familiar to software engineers in programming or distributed systems contexts.
The value of code
Sooner or later, every software engineering organization is faced with the task of trying to evaluate the productivity of their team and the performance of its members. And invariably, the conversation turns into a discussion about whether, or how much, to measure code output as an individual productivity metric. In the best case, this metric could be one dimension, of hopefully several, used to evaluate some classes of engineers - certainly more junior ones.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Mike
Contact Mike, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack