How to Think Like Stephen Wolfram

Stephen Wolfram makes people smart. His creations, including Mathematica , the Wolfram Alpha, and the Wolfram Language , help humans think computationally, and he doesn’t arrogantly compare them to inventing mathematical symbols. As the founder and CEO of Wolfram , he oversees a team of 800 people, but he greatly values ​​learning every technical detail he can and getting the most out of his own input.

Stephen recently published a 14,000-word essay on his personal productivity habits , including specially designed desk drawers, a flat file system, and the health benefits of walking with a laptop. We questioned him in detail about his mental strategies, making sure self-measurement is a tool and not a distraction, how he avoids delegating his intelligence, why Google does a poor job of institution searches and a malicious hacker attack to highlight your Wi-Fi network. in crowd.

Lifehacker: How long have you worked specifically on this piece?

Stephen Wolfram: We’re trying to complete version 12 of the Wolfram Language. I am usually deeply involved with our product. But right now we have a couple hundred people working on it and they are just fixing mistakes and I have nothing to do. And I was going crazy. I’ve been going to write this article for ten years now. So I [decided] to jump in and do it.

It didn’t take me long – it was maybe a week, 10 days between thinking about doing this and releasing it. For better or worse, I’m a pretty fast writer, a write-once character. I am not one of those who “revise my work” because I think it is better for me to write more than to make it more perfect. This was not the theory I held when I wrote this big book , A New Kind of Science , which took me 10 years to complete! This, every page that I scanned endlessly. But later, because of this, I preferred the write-once strategy. So, I was going to write this article for 10 years, but it actually took about a week.

LH: In this article, you make a lot of references to the Wolfram Language, Wolfram Notebooks, and the Wolfram Cloud. Can you give a broad description?

SW: The big picture is an attempt to bring computational intelligence to everything. For the past 32 years, I’ve been creating what is called the Wolfram Language: not a programming language, it’s a kind of general computational language.

The goal is to build as much automation and knowledge into the language as possible. At first when computers were new, 60 years ago or so, people were very excited when they got their very first so-called high-level [programming] languages. And then they were thrilled when they got their first operating systems. And then it came to be taken for granted that when you have a computer, it comes with an operating system. You get a computer with user interface, network, etc.

What I’ve been interested in for a long time is if you have a computer with a level of computational intelligence, so the computer inherently knows how to do machine learning, knows all kinds of facts about the world, maps, etc. D. socio-economic data or whatever. This is what the Wolfram Language offers. As much knowledge and intelligence as possible is embedded right in the language so that a person can do as little as possible.

I started building the predecessors of the Wolfram Language over 40 years ago. My main idea was that I have things that I want to do, science that I want to do, other types of work that I want to do. I want to create the best tools I can so that I can do this job as efficiently as possible. It turns out that I am a practical guy, and the tools that are useful to me will be useful to many others. Plus, I’m practical enough to build companies around the tools I create, because that’s how you can keep building more of these things.

In our company, my strategy was to have very talented people, but to automate as much as possible. And we’ve done it over and over again, building levels of automation for the past 30 years. My goal is to delegate as much as possible to the machine. So I get ideas and I understand what to do, and as many details as possible are handled automatically.

Wolfram Notebooks are an idea that we implemented 30 years ago. [Digital] laptops have become popular in the last few years, and I’m a little shocked that it took the world as a whole 25 years to say, “Oh, laptops are a good idea.” The essence of Wolfram Notebooks is a structured document that combines text with code, graphics, interactive interfaces, and more.

When I write, I use a mixture of English and the Wolfram Language. 300 years ago, humans started using mathematical notation; before that people wrote – mostly in Latin – what they wanted to say was mathematical and it was very difficult to understand. I am interested in using computational language as an effective way of expressing myself. This is what I built in the Wolfram Language. This is something that both humans and computers can read. And it’s a way of organizing thoughts in much the same way that mathematical notation helps people.

Another goal is to help clarify your own thinking.

LH: So not only is it being able to call values ​​or functions, but it also makes you think differently.

SW: Yes, it gives structure. People argue about human languages ​​whether what language you use influences the way you think about things. As far as computational languages ​​are concerned, this is undoubtedly the case. As I’ve been developing the Wolfram Language over the years, I’ve noticed that when we crystallize a new structure, I can start thinking in terms of that structure. It’s very hard without this.

There is one slightly tricky functional programming construct called a subset map. After I realized this a few months ago, I realized that I needed this kind of thing for years and years and years, but they all revolve around, not very well organized for me. Now that I have this organizing way of thinking, I can incorporate this construct into many things.

This whole computing paradigm is the paradigm of the 21st century.

LH: Let’s talk about this super-optimization that you have for many of your workflows. How do you decide what to optimize and what not? You make some interesting and unexpected decisions – at the beginning of the article, you talk about your physical workspace and habits, for example, walking in the street with a laptop tied to you. If I saw this without knowing who is talking, I would say, “Here is a person who is clearly not doing anything because he spent too much time optimizing it.”

SW: The meta point is to just use the thinking apparatus while you do what you do. That is, if I notice that I am doing something clearly stupid and repetitive, I do not just say, “Oh, this is the way it should be.” Just as I try to solve problems in many other areas, I am still thinking about how I can solve this problem.

Another detail is that just because everyone is doing this and that doesn’t mean that I’m going to do it this way. I mean, my wife is often critical of my “I’ll figure it out” things because sometimes things go wrong. And there is a trade-off between “just do it the way everyone else does it” and “always find out for yourself.” Finding it out for yourself all the time can waste a lot of time trying to do something that turns out to be really difficult. But I would say that in most cases this turns out to be better optimized for me than your typical solution.

I try and keep thinking when I do something. Something like organizing a filesystem. I think I’ve done four file system reorganizations in my life. Not a huge amount. But from time to time I decide, “It doesn’t work. I need to do something about it. ” I’ll think about it a bit. And I sit down and try to solve the problem.

I believe that the fact that I have spent most of my life doing language design is probably useful for developing effective solutions. Because language design is a story about taking a whole bunch of things that you are trying to do and crystallizing them into something understandable, workable, etc. And that’s a lot of what many of these solutions are about. optimization. … You can live your life and not plan anything. Or you may spend all of your time planning and not remember to live your life. You know, I like to spend a few percent of my time planning what I’m going to do.

A lot of projects that I ended up with, such as the Wolfram Alpha project, the creation of this knowledge computing machine – I thought about starting this project from my childhood, and I did not think that it would be possible until many times when I started trying this do. And there were people who thought about such projects for about 300 years. If you started this 300 years ago, it was definitely an impossible project. And I’m sure that if I started it 40 years ago, it would also be an impossible project.

LH: Can we talk about your personal tracking? You’ve written about this before , and in a new post, you will share some of the solutions and discoveries. For example, say you started going outside with your laptop because you noticed that your resting heart rate drops more when you go outside than when you walked on the treadmill:

I have kept all sorts of personal analytics with me over the years, and for the last couple of years it has included continuous heart rate data. At the beginning of last summer, I noticed that my resting heart rate had dropped noticeably in a couple of weeks. At first I thought it was simply because I was systematically doing what I liked then. But later in the summer it happened again. And then I realized: these were the times when I did not walk on the treadmill; instead (for various reasons) I walked outside .

Do you usually check your heart rate statistics every day?

SW: Most of the things I store are completely automated and I don’t do anything with them. I see them mainly because every day I get an email with a summary of different things. I’ll take a look at this email for probably half a second or something, mostly to check if the data came in correctly. I’m sure I noticed my heart rate just by looking at this letter.

My main trait in personal analytics is that I don’t put any effort into collecting data. I make an effort to ensure that the systems are built to do this and then make sure the systems continue to work.

In fact, literally yesterday, I was looking through my archives and discovered something that I completely forgot, namely that I used to keep handwritten notes about things like sleep and wake times before I did it automatically. I was just amazed that I was doing this. Sounds like too much work for me!

LH: And when you decide what to track, it’s usually because you’ve found some new device or system that makes it easy to track something, and you say, “Okay, let’s just try and see. if something interesting happens. “? Or is it more targeted?

SW: Anything I can track, I track. And after most of these systems are set up, I never have to think about them again. Many years ago I started taking pictures of my computer screens every, I don’t know what it is, 30 seconds, minute or something like that. And it works for years, years and years, and I never think about it. Sometimes I think I should make a movie about it. And I look at it and it’s funny to see email shrink, expand and so on, but it’s kind of boring. Will I ever be able to use this data for anything? I do not know. It’s super cheap to keep. So why not.

LH: How to avoid the constant maintenance of these tracking systems? For example, I keep track of my listening to music on last.fm , but I keep fixing it because it records the album twice or can’t record my listening on Apple TV.

SW: First of all, the more you can control it in real time or every day, the less chance you have [of letting the system crash]. Some report that came in this morning was blank. I know it right away. Something went wrong yesterday. I admit there is some scam going on here because I have a sysadmin working for me to whom I just sent an email saying, “This seems to be a blank message, please find out what is going on.” So, I wrote some of the code myself, and sometimes it’s faster for me to express myself by writing code than to tell someone: “Can you make a piece of code that does this?”

This is the value of a computational language. I can express myself in this way more effectively than I can express myself by sending an email or something else that says in English, “Please do this and that.”

Another thing is that I like to store all my data myself. I would like to use different types of devices, but I’m just not going to leave data in the cloud of this provider. If I can’t download it, then I really don’t want to. What has been actively sitting on disk in my active filesystem for 40 years is still there, okay. Things that were on someone else’s file system or moved to another medium, who knows?

So keep it on your active filesystem. Check this. Have something that mails you every day, where you can make sure for half a second that it’s not completely crazy. And I do have systems that collect information that must come from many other systems and give me a general conclusion. Every week one comes up – the main conclusion: “Did all the things that were supposed to come every day really appear?”

All these systems rot at a certain rate. The trick is to fix them quickly, not find out that this thing stopped accepting data three months ago. In years past, ten years ago or more, I have been caught several times with the word “Oh, the system stopped working a month ago.” This is why I now have a daily result on the dashboard.

LH: Are there any tools you use to get an idea of ​​the data you collect without waiting for human understanding: “Oh wait a second, this drop in heart rate happens when I go out for a walk!”

SW: I’ll do some visualization, maybe do some fancy machine learning thing, if I think that would be helpful. But usually it is human initiated.

The fundamental thing about good data science is whether you can spot the unexpected. And one of the problems with a smart approach to automation is that automation implies certain expectations about what happens. It’s much harder to find the unexpected when you’ve already put a lot of expectations into it.

LH: Let’s talk about your choice between search and sort, which you talk about in your article:

Over the years, I have accumulated over one hundred thousand notebooks that showcase product designs, plans, studies, articles, and basically everything I do. All of these notebooks end up being stored on my filesystem … And I try to keep my filesystem organized – as a result, I can usually find whatever notebook I’m looking for by simply navigating my filesystem faster than I could formulate your search It.

I think I saw, 15 years ago, a lot of productivity work that said everything should be optimized for search. Search is what we are doing now, we have Quicksilver on our computers and Google on the web, and sorting is not that important anymore. But you are a really good case for cases where you really need a small sort, and in those cases the search will never be that fast.

SW: I think the question is whether it’s conceptual or looking for a specific name. I’m about to go to a meeting at my nearly 50 year old elementary school. And so I kept track of what happened to all these kids, and searching is what it takes. You have a name. But if it’s a concept like, I don’t know, teaching kids to think computationally. I’ve done a ton of work on this, I’ve collected a ton of information about it. What would I be looking for? There really is no search term [that will find all the relevant items].

And of course, when it comes to search, Internet search spoils the person because the corporate search problem is similar to the personal search problem. You can use a web search to find out how many people are linking to that page. This shows how important this page is. The corporate search problem has never been properly addressed. Because there is no such obvious signal.

We once traded the Mathematica license for Google in exchange for Google’s internal corporate search engine. It was beautiful, beautiful yellow box, but completely useless. It will do something like, “There are more links to earlier versions of the documentation, so this is what should appear in the results.”

And for these more conceptual things, is it an idea to say I’m going to put a tag? Am I going to put in the correct set of tags? Good luck. I never found tags useful. I found, I put this in this bucket, which I can do very quickly and I know what those buckets are. If I was going to do tags, I would have some crazy list of 200 of my tags that I could use. It is very important not to have too many categories so that you can remember each category. So, you know, “I’m going to file it around this place,” and you can develop a personal familiarity with this category over time, even if the category is not exactly named. I think the most important idea is, don’t try to be too smart.

I spend a lot of time doing language design, and language design often involves coming up with names for language functions. If you change the name, as is often the case when trying to understand the concept, the search will not be possible.

I know how to put things together so I can find them later. I am a real advocate for my assistants to pronounce the person’s name correctly, because if you do not, it is lost forever. But you cannot search for concepts. It is hopeless.

LH: I also liked your mention of the archive folder – that each folder has an archive folder for files that are no longer active. I love using archive folders too, they save me a lot of clutter.

SW: You’re ahead of most people. I didn’t actually do any systematic research, but I looked over people’s shoulders at what their filesystems looked like. I’m surprised how few people seem to have guessed this. Maybe people reading your post will understand this.

LH: You show off the gadgets that you always take with you to a conference or presentation, including a bag full of adapters. Because you never know if a projector will be ready for your particular computer and its ports. We were all disappointed when some modern projection system lacked one key or did not recognize your computer for some mysterious reason. And I really like the phrase: “I decided that I would better understand how computers communicate with projectors.”

Do you have any tips for identifying these bottlenecks? Do you understand that there is a category of things that may seem to be auxiliary to your work, but ultimately become such a bottleneck that you have to study the real science or technology behind it?

SW: There is a lot of that. For example, when you go to some place and turn on your computer and it is looking for Wi-Fi, and perhaps you have a tethering mechanism for your phone. Often times everything freezes up because you are in downtown New York or somewhere else and your computer is connected to 800 Wi-Fi networks. This thing was driving me crazy, I’m trying to flip through 800 things to find my phone. So I figured out that I need to rename my phone so that it is always sorted at the top.

I don’t want to make this tip too popular!

L.Kh .: This does not obey the categorical imperative.

SW: And then we’ll have a fight for the top.

I was the CEO of a software company for a long time. So you might think that when something goes wrong with the systems, something is wrong, that there will be a bunch of people to fix them, and I never have to know or think about them. But I made a principle, you know, when we have some unpleasant mistake, I always ask people what was the mistake? Because over the years of work, a huge experience has been accumulated.

An example from today. Some of our sites have mysteriously lost their CSS. How could this happen? And we do not yet know the answer to this question, although I was able to propose several theories because I had the experience of observing strange things happening. But when that is fixed, someone will tell me what the real problem was, and that will log into my personal database of possible things that could go wrong.

I always report bugs when I see them. This is like doing a good citizen because most of the time people don’t report bugs. Most of the time they are just working on something and the world goes on and other people get bitten by this mistake.

My approach to debugging is based on my computational thinking. In fact, there is another post about which I wrote about the bug in our cloud infrastructure . People are very bad at debugging. Debugging is a complex skill like medical diagnostics. And it’s not as well codified for debugging computer systems as it is for medical diagnostics, where everyone knows there is a percentage probability of one or the other, but it’s the same type of idea, [testing theories one by one] and so on. But what people don’t do very much that they really should be doing is analyzing the data for debugging.

In one case, it was a mail system, possibly Apple Mail or Zimbra. My mail stopped working for some reason. I became very upset about this and in the end insisted on talking on the phone with someone from any supplier. So we are looking at all these posts. I started doing a lot of data science on it and found that every time it starts over 256 concurrent threads the thing dies. It turned out that due to the fact that I had more than 512 mail folders or something, this thing couldn’t handle it.

This would never have been figured out by looking at the individual posts. What you saw was simple, it worked, it worked, it worked, it worked, and then it didn’t work out. There was no counter that said you just started the 256th thread. It was just somewhere in the middle of it all, boom, he fails.

At our company, for example, in fact, as a result of the debugging that I did on our cloud infrastructure a few years ago, we have created a group of physicists who are engaged in debugging complex systems focused on data science. And it turned out to be a very powerful methodology indeed.

While frustrating at the time, it’s a pretty interesting intellectual exercise, these debugs. The more you know, the better you will be at it. So it’s really helpful to have this experience. When something goes wrong, even if someone fixes it for you, find out what they did.

Interview edited for clarity. To learn more about Wolfram essay, read it the AMA To Reddit .

More…

Leave a Reply