Thanks, I guess?
#advertising
Continuations: Tech Tuesday: Programming (A Start)
I’ve been getting interested in learning more about development recently, and Albert’s post popped up at the perfect time! For anyone who’s never written any code, it’s a great introduction to what “writing code” actually means.
Maybe I should have started the whole Tech Tuesday series with a post on programming since that’s why computers were created in the first place! In fact, thinking about programming in many ways precedes the availability of actual computers to carry out those programs. At the time that Babbage was dreaming up his Analytical Engine, Lady Ada started to formulate how a general purpose machine would be programmed. That was almost 100 years before the first truly programmable machines were actually built! Much closer to that date but still before he had access to a computer, Alan Turing in 1936 described an abstract machine (the Turing machine) that he then proved could compute anything a computer can do no matter how fast or complex a CPU, how much memory, etc it has (aside: that does not cover what a quantum computer might be able to do if we ever figure out how to make one work).
So what does it mean to program a computer? Somewhat flippantly: programming is telling the computer what to do. But given the pieces that we have put in place we can define programming more precisely as: creating a set of instructions that the CPU can execute to achieve a desired outcome. That outcome might be the computation of a number, the animation of an object on the screen, the manipulation of a text or — and this is the beauty of programming — pretty much anything else one can dream up. In the process of executing the program, the various parts of the computer work together as specified by the program. Data will move around memory and maybe to and from storage. If necessary, I/O devices will be activated. Possibly data will be sent or received via a network.
How does a programmer go about creating the set of instructions? In the early days of computers this literally involved hand picking instructions from the CPU’s instruction set and manually encoding these so that they could be fed to the CPU. But because of the work of theorists and the desire of visionaries we rapidly wound up with programming languages that were more easily accessible to humans and could then be translated by the computer itself into the instructions for the CPU. One such vision had always been to program a computer using simply spoken language and with Siri and Android voice actions we now have that as a reality — people are quite literally telling their phone what to do.
Whenever you program a computer in anything other than the actual machine code (the bytes that represent the instructions and addresses) you are using some kind of programming language. So called Assembly Language is barely above machine code. It is mostly a set of acronyms for the instructions with some ability to refer to program and memory locations by a name as opposed to an actual address. A program called an assembler is used to translate assembly language into machine code. Because writing assembly is really picking instructions by hand it takes a long time to write programs but affords the ultimate control over what code is actually executed which can be important for some cases, such as parts of a device driver.
Anything that’s more expressive than assembly is generally referred to as a higher level language. Among higher level languages there is still a huge range though from a language such as C which is closest to the machine end to a language such as Prolog on the other (Prolog deals with logical expressions). Higher level languages require some form of translation into machine code. This is handled by programs known as interpreters andcompilers. As a first cut you can think of the difference between an interpreter and a compiler as the difference between having a simultaneous translator and a translated book. Essentially an interpreter reads the higher level language as it comes along and figures out what to do whereas a compiler takes one or more passes over the entire higher level language program.
In order for an assembler, interpreter or compiler to be able to do their work, the expressions in assembly or in the higher level language have to follow specific patterns which are known as syntax. That is of course even true when programming a computer in natural language in the Siri example above. If you say something completely ungrammatical, Siri will not know what to do.
I have found programming to be a deeply satisfying activity and will write lots more about it in upcoming Tech Tuesdays. When programming I can spend many hours without noticing the passage of time at all. Part of the satisfaction for me comes from how programming is a craft that combines writing and analysis/math in a wonderful way. But part of it also comes from the amazing amount of control I can exercise over machines which contrasts sharply with the many limits on control in the rest of our lives!
An excellent weekend of friends, fun, and the Badgers scoring a trip to the Rose Bowl. Winning.
Jonathan Safran Foer (via anorangeinwinter)
Happy Thanksgiving.
Psychic Income
I learned a new phrase last week: “psychic income.” It refers to the intangible benefits one derives from work - the energy and inspiration that comes from doing what you do. I love this phrase because it really conveys the value of passion. It’s not optional - it’s income. It is essential.
Why social media?
A Pew Study out this week tells us something most of us would have assumed naturally: The majority (66%) of Americans who use social media do it to stay in touch with friends and family members. Interestingly, 18% of older Americans (54+) use social media to conenct with new people who share similar interests, vs. 10% of the younger group.
For all the fretting about how the internet is changing relationships, and how “real life” is falling by the wayside, about how we can’t truly have as many friends as we do on Facebook (we don’t, and that’s okay), it’s clear that social media actually strengthens relationships rather than weakens them. It’s a tool to stay in touch, to deepen a connection, rather than make another superficial one. I find that very heartening, but not at all surprising. If you spend any time on Facebook, it’s clear it’s a tool to keep relationships familiar and strong.
According to the study, most people who use social media don’t specifically use it to connect to public figures, and many of the ones who do use Twitter. Again, this isn’t very surprising, but it does underscore the difference between Facebook and Twitter.
What does this mean for brands and marketing? It seems to me the most important thing is to understand and respect how people use social media. On Facebook, people are there to connect with their friends and family, not necessarily have a deep relationship with your brand. On Twitter, they may be there for news and public figures, but it’s also about friends and family connections. It’s critical to be authentic and embrace your role as a brand. Be friendly, but not too familiar. Keep it casual. Offer discounts and coupons. In other words, don’t try to force yourself into the fundamental friends/family relationship, but rather focus on how you can best complement it.
Tumblr just put up this site warning people about the dangers of PROTECT-IP Act and the Stop Online Piracy Act (SOPA). Read up, kids. This is important.
Your morning homework: Read this letter from AOL, eBay, Google, Facebook, LinkedIn, Mozilla, Twitter, Yahoo!, & Zynga. Then visit Tumblr’s page and take action.
Unplugged
I unplugged yesterday. Not 100%, but close to it. I stayed away from my computer and focused on the gorgeous weather, errands I needed to run, and life away from the internet.
It felt awfully good then, but it feels even better now that I’m back at my desk. I feel refreshed, energetic, and looking forward to my Silicon Alley Insider emails rather than overwhelmed by them. I’m more engaged with the challenges I’m facing and think I can provide better service to my clients and better support to my colleagues. That’s a lot to take away from one day!
I realize it may seem a little hypocritical to write about unplugging when my previous post was about executing the shit out of your to-do list. But for all I talk here and on Twitter about the web, its marvels and opportunities, it’s good to be reminded that sometimes there’s an equal power in turning it off for a while. That’s definitely something worth putting on your to-do list.

