Feeds:
Posts
Comments

Posts Tagged ‘computing’

We have a problem.

As it stands now the present and near future of economic, social and cultural development primarily derives from computers and programming.   The algorithms already dominate our society – they run our politics, they run our financial system, they run our education, they run our entertainment, they run our healthcare.    The ubiquitous tracking of everything that can possible be tracked determined this current situation.   We must have programs to make things, to sell things, to exchange things.

punchcard

The problem is not necessarily the algorithms or the computers themselves but the fact that so few people can program.    And why?   Programming Sucks.

Oh sure, for those that do program and enjoy it, it doesn’t suck. As Much.   But for the 99%+ of the world’s population that doesn’t program a computer to earn a living it’s a terrible endeavour.

Programming involves a complete abstraction away from the world and all surroundings.  Programming is disembodied – it is mostly a thought exercise mixed with some of the worst aspects of engineering.   Mathematics, especially the higher order really crazy stuff was long ago unapproachable and completely disembodied requiring no physical engineering or representation at all.  Programming, in most of its modern instances, consequences very far away from its creative behavior.  That is, in most modern system it takes days, weeks, months years to personally feel the results deeply of what you’ve built.    Programming is ruthless.  It’s unpredictable.   It’s 95% or more reinventing the wheel and configuring environments to even run the most basic program.  It’s all set up, not a lot of creation.   So few others understand it they can’t appreciate the craft during the act (only the output is appreciated counted in users and downloads).

There are a couple of reasons why this is the case – a few theoretical/natural limits and a few self-imposed, engineering and cultural issues.

First the engineering and cultural issues.   Programming languages and computers evolved rather clumsily built mostly by programmers for other programmers – not for the majority of humans.    There’s never been a requirement to make programming itself more humanistic, more embodied.    Looking back on the history of computers computing was done always in support of something else, not for its own sake.   It was done to Solve Problems.   As long as the computing device and program solved the problem the objective was met.   Even the early computer companies famously thought it was silly to think everyone one day might actually use a personal computer.   And now we’re at a potentially more devastating standstill – it’s absurd to most people to think everyone might actually need to program.    I’ll return to these issues.

Second the natural limits of computation make for a very severe situation.   There are simply things that are non-computable.   That is, we can’t solve them.   Sometimes we can PROVE we can’t solve them but that doesn’t get us any closer to solving some things.    This is sometimes called the Halting Problem.  The idea is basically that for a sufficiently complex program you can’t predict whether the program will halt or not.   The implication is simply you must run the program and see if it halts.  Again, complexity is the key here.  If these are relatively small, fast programs with a less than infinite number of possible outcomes then you can simply run the program across all possible inputs and outputs.   Problem is… very few programs are that simple and certainly not any of the ones that recommend products to you, trade your money on wall street, or help doctors figure out what’s going on in your body.

STOP.

This is a VERY BIG DEAL.    Think about it.   We deploy millions of programs a day with completely non-deterministic, unpredictable outcomes.  Sure we do lots of quality assurance and we test everything we can and we simulate and we have lots of mathematics and experience that helps us grow confident… but when you get down to it, we simply don’t know if any given complex program has some horrible bug in it.

This issue rears its head an infinite number of times a day.   If you’ve ever been mad at MS Word for screwing up your bullet points or your browser stops rendering a page or your internet doesn’t work or your computer freezes… this is what’s going on.  All of these things are complex programs interacting with other programs and all of them have millions (give or take millions) of bugs in them.  Add to it that all of these things are mutable bits on your computer that viruses or hardware issues can manipulate (you can’t be sure the program you bought is the program you currently run) and you can see how things quickly escape our abilities to control.

This is devastating for the exercise of programming.  Computer scientists have invented a myriad of ways to temper the reality of the halting problem.   Most of these management techniques makes programming even more mysteries and challenging due to the imposition of even more rules that must be learned and maintained.   Unlike music and writing and art and furniture making and fashion we EXPECT and NEED computers to do exactly what we program them to do.   Most of the other stuff humans do and create is just fine if it sort of works.  It still has value.  Programs that are too erratic or worse, catastrophic, are not only not valuable we want to eliminate them from the earth.   We probably destroy some 95%+ of the programs we write.

The craft of programming is at odds with its natural limits.   Our expectations and thus the tools we craft to perform program conflict with the actuality.  Our use of programs exceeds their possibilities.

And this really isn’t due to computers or programming, but something more fundamental: complexity and prediction.    Even as our science shows us more and more that prediction is an illusion our demands of technology and business and media run counter.    This fundamental clash manifests itself in programming, programming languages, the hardware of computers, the culture of programming.  It is at odds with itself and in being so conflicted is unapproachable to those that don’t have ability to stare maddeningly into a screen flickering with millions of unknown rules and bugs.   Mastery is barely achievable except for a rare few.   And without mastery enjoyment rarely comes – the sort of enjoyment that can sustain someones attention long enough to do something significant.

I’ve thought long and hard about how to improve the craft of programming.   I’ve programmed a lot, lead a lot of programming efforts, delivered a lot of software, scrapped a lot more.  I’ve worked in 10+ languages.  I’ve studied mathematics and logic and computer science and philosophy.  I’ve worked with the greatest computer scientists.  I’ve worked with amazing business people and artists and mathematicians.   I’ve built systems large and small in many different categories.  In short, I’ve yet to find a situation in which programming wasn’t a major barrier to progress and thinking.

The solution isn’t in programming languages and in our computers.  It’s not about Code.org and trying to get more kids into our existing paradigm. This isn’t an awareness or interest problem.   The solution involves our goals and expectations.

We must stop trying to solve every problem perfectly.  We must stop trying to predict everything.   We must stop pursuing The Answer, as if it actually exists.  We must stop trying to optimize everything for speed and precision and accuracy. And we must stop applying computerized techniques to every single category of activity – at least in a way where we expect the computer to forever to the work.

We must create art.  Programming is art.  It is full of accidents and confusions and inconsistencies.   We must turn it back to an analog experience rather than a conflicted digital.    Use programming to explore and narrate and experiment rather than answer and define and calculate.

The tools that spring from those objectives will be more human.  More people will be able to participate.  We will make more approachable programs and languages and businesses.

In the end our problem with programming is one of relation – we’re either relating more or less to the world around us and as computers grow in numbers and integration we need to be able to commune, shape and relate to them.

Read Full Post »

Computing Technology enables great shifts in perspective. I’ve long thought about sharing why I love computing so much. Previously I’m not sure I could articulate it without a great deal of confusion and vagueness, or worse, zealotry. Perhaps I still can’t communicate about it well but nonetheless I feel compelled to share. 

Ultimately I believe that everything in existence is computation but here in this essay I am speaking specifically about the common computer on your lap or in your hands connected to other computers over the Internet.

I wish I could claim that computers aren’t weapons or put to use in damaging ways or don’t destroy the natural environment. They can and are used for all sorts of destructive purposes. However I tend to see more creation than suffering coming from computers.

The essential facets of computing that gives it so much creative power are interactive programs and simulation. With a computer bits can be formed and reformed without a lot of production or process overhead. It often feels like there’s an endless reservoir of raw material and an infinite toolbox (which, in reality, is true!). These raw materials can be turned into a book, a painting, a game, a website, a photo, a story, a movie, facts, opinions, ideas, symbols, unknown things and anything else we can think up. Interactive programs engage users (and other computers) in a conversation or dance. Simulation provides us all the ability to try ideas on and see how they might play out or interact with the world. All possible from a little 3-4lb slab of plastic, metal, silicon flowing with electricity. 

Connecting a computer to the Internet multiplies this creative power through sharing. While it’s true a single computer is an infinite creative toolbox the Internet is a vast, search-able, discoverable recipe box and experimentation catalog. Each of us is limited by how much time we have each day, but when we are connected to millions of others all trying out their own expressions, experiments and programs we all benefit. Being able to cull from this vast connected catalog allows us all to try, retry, reform and repost new forms that we may never have been exposed to. Remarkable.

Is there the same creative power out in the world without computers? Yes and no. A computer is probably the most fundamental tool ever discovered (maybe we could called it crafted, but I think it was discovered.) Bits of information are the most fundamental material in the multiverse. Now, DNA, proteins, atoms, etc are also fundamental or primary (think: you can build up incredible complexity from fundamental materials). The reason I give computers the edge is that for the things we prefer to make we can make within our lifetime and often in much shorter timeframes. It would take a long time for DNA and its operating material to generate the variety of forms we can produce on a computer.

Don’t get me wrong there’s an infinite amount of creativity in the fundamental stuff of biology and some of it happens on much shorter than geological timescales. You could easily make the case that it would take a traditional computer probably longer than biology to produce biological forms as complex as animals. I’m not going to argue that. No do I ignore the idea that biology produced humans which produced the computer, so really biology is possibly more capable that the computer. That said, I think we’re going to discover over time that computation is really at the heart of everything, including biology and that computers as we know them probably exist in abundance out in the universe. That is, computers are NOT dependent on our particular biological history.

Getting out of the “can’t really prove these super big points about the universe” talk and into the practical – you can now get a computer with immense power for less than $200. This is a world changing reality. Computers are capable of outputing infinite creativity and can be obtained and operated for very modest means. I suspect that price will come down to virtually zero very soon. My own kids have been almost exclusively using Chromebooks for a year for all things education. It’s remarkably freeing to be able to pull up materials, jump into projects, research, create etc anywhere at anytime. Escaping the confines of a particular space and time to learn and work with tools has the great side effect of encouraging learning and work anywhere at anytime.

There are moments where I get slight pangs of regret about my choices to become proficient in computing (programming, designing, operating, administrating). There are romantic notions of being a master painter or pianist or mathematician and never touching another computing device again. In the end I still choose to master computing because of just how much it opens me up creatively. Almost everything I’ve been able to provide for my family and friends has come from having a joyous relationship with computing.

Most excitingly to me… the more I master computers the more I see the infinitude of things I don’t know and just how vast computing creativity can be. There aren’t a lot of things in the world that have that effect on me. Maybe I’m simply not paying attention to other things but I strongly suspect it’s actually some fundamental property of computing – There’s Always More.  

Read Full Post »