Chip Is Alive!, Issue 20

Join Our Mailing List

Back to Newsletter Archive

Welcome to Issue 20 of Chip Is Alive!, where we examine thought-provoking life strategies and issues which may or may not be of interest to you. Chip Is Alive! is inspired by Chip Vivant, the app who thinks he's alive and wants to be your friend and help you in ways that other productivity apps can't. You can meet Chip at www.empathynow.com.

If you've missed a newsletter, click here for the newsletter archive. To unsubscribe, use the link at the bottom of this email.

In this issue, we'll discuss:

  • Check Out My Cool Threads
  • Happy Birthday!

Enjoy. Feedback always welcome. If you enjoy this newsletter, please consider Liking the EmpathyNow Facebook page and following us on Twitter. Every little bit helps.

Check Out My Cool Threads

It's a privilege for me to be a software developer and to perform a craft that I love which isn't just a job. And just like I love learning different foreign languages, I've come to realize over the years that each profession has its own language and lingo which not only serve as shorthand for important concepts in that discipline, but also actually rewire the brains of the people who know and understand that terminology. The fascinating thing about this lingo and the concepts it codifies is that the wisdom they embody can often be applied to real-life situations outside of that profession and can benefit people outside of that profession.

Is that clear as mud? Then let me clarify with an example. One concept most programmers are familiar with is that of multithreading. You know that a computer program consists of a sequence of instructions and that the computer (actually the processor) executes these instructions one by one. (Programmers: I'm simplifying for our fellow non-programmers so don't groan too loudly.) Conceptually, there's something called an Instruction Pointer (IP) which points to the current processing instruction ("add two numbers together", "retrieve something from a certain memory location", "store something to memory location", etc.) The instruction is executed, then the instruction pointer is moved to the next instruction. You also have instructions to move the instruction pointer to an arbitrary instruction rather than the next one.

If there were only one instruction pointer per running program, then you, the user, would find life very unpleasant. Why? Let's consider the case of a web browser, which is of course a computer program. Say the page you're on has animation on it and then you click on a link to visit another page. If there were only one instruction pointer, then when you clicked a link, all animation would stop until the new page was loaded. In the case of word processing, the word processor would totally freeze up while it was doing an intermediate save. I could go on and on.

So modern programs don't just have one instruction pointer, they have multiple ones which operate independently. These are called threads in a program and can be likened to a group of workers working inside a house: one thread is cleaning, another thread is cooking, another thread is ironing, etc.

The problem with multiple people in a house, or threads in a computer program, is that you can't just let them do whatever they want without some kind of coordination. (Suppose one of the people wants to use the bathroom while there's someone already there. Suppose that someone wants to take out the trash at the same moment someone is bringing a large cabinet inside.) The same issues apply to threads - you need to coordinate them so they don't step on each others' toes the same way that people can when they're in a shared space using shared resources.

To make a long story shorter, thinking and reasoning about threads is so ingrained in me and comes so natural to me that I reason in terms of threads even with my non-programming activities. In the morning, I don't think about toasting two slices of bread while I prepare a bowl of cereal, I think about "spinning off a toaster thread that can execute concurrently with my cereal preparation thread in order to achieve maximal parallelism". And I've just touched on one programming concept - there are a wealth of them[1]. And many of these have rewired my brain (Adapter Pattern, Façade, Decorator, Front Controller, etc. etc. etc.) and have changed who I am as a person outside of the field of programming. And then I think "if there is such a wealth of rich concepts in my field that have actually changed who I am as a human being, what other concepts exist in other fields that I'm ignorant of, but which would have an equally profound impact on me?"

Would you share these with me? Please share these with me in any way you see fit, either via the EmpathyNow Facebook page for this post or by responding to this email.

Juggling Update

I'm hereby ceasing to comment on my lack of progress in this endeavor until further notice. Rest assured that whatever time I'm not putting into juggling, I'm putting into Spanish and finding the fruits of this labor much more rewarding.

Chip's Tips: Happy Birthday!

Chip's Empathetic Notifications can be used for much more than empathetic notifications, they can also be used for miscellaneous reminders, such as birthdays, appointments, etc. Don't forget you can send these to people other than yourself too.

Web References

Back to Newsletter Archive