Welcome and Description of Topics Areas Covered by This Blog
What's wrong with you, Pat? Why can't you focus?
Welcome to my new blog!
My name is Pat Helland and I’m starting a new project to use Substack to publish a blog about my ideas on distributed computing and other random (mostly) computer related thoughts.
I’ve been receiving a paycheck to develop and architect systems since 1978. These have included database and transaction systems, messaging systems, multiprocessor NUMA hardware, application platforms, big data systems, massive online retail systems, and more. I currently work at Salesforce on an exciting systems project with a fantastic team of brilliant engineers.
If you find these posts interesting, please sign up at pathelland.substack.com for email notifications when posts happen. I do not intend to charge for access to this blog since I want the information to be easily accessible to anyone interested, including starving students.
My interests are diverse and I’m planning many topics for these posts. Here are some broad areas I’m interested in, each of which binds to many things I’d like to write:
Database Implementation Trends
Classic databases are both boring and fascinating. They are boring because they are a small part of the broader challenges today. Databases are fascinating in how they fit socially into the way we solve business problems. They are also fascinating in their implementation evolution as it adapts to a changing world. Finally, they are fascinating in the way the set-oriented semantics of relational algebra empowers repeated upending of HOW we build our systems while providing unchanged results to users of the database.
The challenges in data are MOSTLY in the space in between databases.
Transactions and Consistency
My column in ACM Queue is entitled “Escaping the Singularity… It’s Not Your Grandmother’s Database Anymore”.
This is a reference to the fact that relational algebra assumes we appear to be working at a single point in time (via transactions) and a single point is space in which the data appears to be at one point is space (appearing to be on one computer even if it is not).
What are the implications of distance in space, distance in time, and the multiple personalities shown by replicated data?
How can we leverage the principle of “don’t sweat the details” allowing composition of solutions to business problems using equivalence of fungible things?
How can we compose transactions across distrusting environments?
Time, whatever that means…
I am not a big believer in Isaac Newton’s view of a universal time.
Time is, in my opinion, more subjective in a distributed world.
Causal and casual treatment of time:
How can causal designs cope with these differing temporal perspectives?
How can casual designs cope with these different temporal perspectives?
In this context, casual designs is used to describe designs for applications by people not all tangled up in philosophical discussions about time.
How can we address the friction between different views of time and reaching some form of agreement?
What are the implications for scale, heterogeneity, security, and trust?
How do we deal with the impedance mismatch between transactional and non-transactional data?
What are the implications of descriptive metadata (assigned when immutable versions of data are created) versus prescriptive metadata (where data is force fit into a perspective you desire after the data is created)?
Data comes from many, many sources with many, many interpretations. What does is MEAN when we combine these utterances together?
Cleaving systems apart
Disentangling existing systems for scale, trust, operability, or even divestiture can be a nightmare.
That proverbial “Big Ball of Mud” is real. Sometimes, a well architected system devolves into a big ball of mud. How can we constructively “cat herd” a system to decrease its entropy? What does it say about the personality of an engineer willing to engage in such a battle?
What patterns can we see in various attempts to disentangle?
Cleaving systems together
How can we deal with heterogeneous sources of data and the inherent limitations of matching meaning of data from different sources?
What patterns do we see in standards, standards committees, and other similar efforts?
Why are standards so often a chimera in which the benefits slip through our fingers as a duality of our success?
What are some causes and consequences of the fractal dance between de facto standards and de jure standards?
When, where, and how do we see design tradeoffs in the implementation of systems?
For example, multithreaded systems are undergoing flux as CPU and memory are getting closer to free but coordination across threads is getting increasingly painful.
What are the tradeoffs between different approaches to managing concurrency and correctness in systems within a single server?
Balancing resources like storage, CPU, memory and concurrency is like riding a small boat through a raging storm. How are changing trends and costs impacting our designs?
How can we build robust, low latency, scalable systems?
What are the tradeoffs we see between crisp, linearizable, and/or serializable behavior and the implications on availability, performance, and scale?
How do these systems function in the new world of cloud computing in which we run in a crowded environment?
These posts will discuss dynamics of teams, businesses, projects, release cycles, and other scrummy topics.
Managing, nurturing, and cultivating a healthy team that both accepts and challenges design dogma is challenging.
How can we ensure the traditions and architectural principles of a complex product are carried forward as the team evolves?
Building architects must satisfy a business need for their client as they construct a physical structure. They have a site with topography to consider. Local building codes must be respected. They don’t need to be experts in plumbing, electrical, or structure but they DO need to have a strong “bullshit-o-meter” that allows they to negotiate and tradeoff between many disciplines.
How are there parallels between building architecture vs. software architecture?
Is being a software architect any more than a sales and marketing job?
Technology Trends and Their Implications
Advances in technology do not proceed uniformly as anyone tracking Gilder’s Law and Moore’s Law knows. What does this mean to us?
What can we learn by looking at the evolution of cities and contrasting to the evolution of IT?
How are cities, buildings, manufacturing, retail and more like computing?
How can we apply these insights to understanding the directions of technology
The Way We Do Things Around Here
This is one of my favorite categories for blog topics. These discussions will look at design decisions that were absolutely appropriate many years ago that carry fascinating implications today.
Sometimes, things we take for granted have surprising origins and surpising consequences.
Occasionally, I will rant about something that may or may not be computer related. I will try to make them entertaining.
Maybe more tags and topics in the future
For now, that’s enough…
Things I do NOT expect to blog about:
As a token of my appreciation for all of you, I will abstain from the following topics.
I won’t blog about my grandchildren and great grandchildren
I assert without justification that MY grandchildren and great grandchildren are cuter than yours. Debates on this will be done in other forums. No pictures of them will be seen herein. Now that my children are in their 40s, I’m not going to go there either with pictures or assertions.
I won’t blog about my personal travels and travails
This is not a travelogue blog. Besides, I’m happily nestled at home typing during the unfortunate and horrible pandemic. I am very fortunate to be safe and employed and typing random thoughts.
I won’t blog about politics
I am HAPPY to discuss politics but only face-to-face with a whisky in my hand.
I won’t blog about whisky
I am a fan of both whisky and whiskey but only if it is cask strength and poured neat. Again, not for this blog.
It’s been my privilege to contribute articles to ACM Queue and Communications of the ACM. It has truly been a joy! I want to acknowledge the AMAZING support and seamless working relationship with ACM, especially Jim Maurer and Matt Slaybaugh. No way will I stop working on publications for ACM as long as they’ll take them. I’m hoping to retread blog posts into ACM Queue and Communications of the ACM articles.
It is my goal to republish some of the better blog posts from my past a bit at a time. I’d like to thank Michael Gasch for hooking me up with an archive version of my Microsoft blog from 15 years ago. I’ve captured copies of the useful posts. These will be intermingled with new half-baked ideas.
George Amvrosiadis, a professor at CMU and a friend of mine has challenged me to end my posts and articles with open questions. I will try to do so! Great idea!
Finally, I want to thank my friend and colleague, Rohit Agrawal, for prodding me to launch this. His patience with an old fuddy-duddy as I said “What’s a Substack?” is no less than heroic.