Posts

Teaching Software Engineering

Image
7 minute read. I firmly believe that in the near future, the ability to read and write code will be viewed as a component of basic literacy. It will be hard to believe anyone could get by without it, much like reading and writing your spoken language is today, even though we know that just a few hundred years ago that was a rare skill reserved for the upper classes. If we are to achieve universal computer literacy, we will need new ways to teach, beyond the rigorous academic approaches of computer science departments. A lot of good work is already happening in this direction: STEM education is innovating rapidly, building fun ways to code all the way down to kindergarten . However, I'm interested in teaching a group between the children and the university students: tradespeople. We need an educated workforce where anyone working with a computer can write, modify, or fix a script that makes their job easier. And just as not every literate person needs to be a poet, not everyone need

Crusher of Dreams

Image
7 minute read. I've gotten this moniker from a number of sources over the years and at this point in my life/career I'm willing to embrace it. How did I become a crusher of dreams? I might say it's because I value skepticism and the hard truths of physics. My wife would say it's because I'm not very agreeable . Really, I was set on this path in grad school. I would never recommend getting a PhD to anyone - if you need a recommendation, you're not in love with it enough to endure it. First you need an advisor, who is expected to be 1) brilliant in their field, 2) an excellent lab manager, 3) good enough at writing grants to keep everyone paid, and 4) ideally a decent teacher. I have no idea why universities expect to have all of these criteria met by a single person, much less every professor they tenure. The tragic stories of most grad students show how often 2) and even 3) cannot be taken for granted.  The biggest academic challenge is not the qualifying exam o

Machine Learning and the Brain

Image
4 minute read. Simplicity can generate vast complexity - the Mandelbrot fractal is a wonderful example. Iterating one tiny equation leads to patterns of infinite depth and detail, nearly repeating, but not quite. Computers and software are based on nothing more than the transistor logic gate and bits memory - Alan Turing realized stringing enough of them together could solve nearly any algorithmic problem. The human genome has 2.5 billion base-pairs of DNA, which is only about 600MB of data. Somehow all the information that generated you or me could fit on one CD-ROM from the '90s, even though we largely can't even fathom how our own bodies function.  Deep neural networks are a relatively simple construct that led directly to the explosion of machine learning (ML) we're witnessing today, from facial recognition to real-time translation to image generation and artificial intelligence. They are a recursive statistical process, inspired by a theory of how the brain might w

AI apocalypse?

Image
5 minute read. My previous post on Machine Learning / Artificial Intelligence might have come across as a bit foreboding, but I actually find myself much less concerned about humanity's future than many software engineers I know. There's a rich background of dystopian science fiction about AI enslaving humanity, but I find it to be a bit far-fetched, even though I have no doubt that ML algorithms will eventually, perhaps soon, far surpass human skill in any measurable contest. The question of our future though, is not one of intelligence, but of power and motivation. We are building AI to solve problems. I speak not of myself personally (I don't work in the field) and not even of my employer (though they are certainly expanding the state of the art along with most other tech companies), but of humanity in general: we are a global society and no one acts in a vacuum. The primary fear I hear is that AI will, through superior intellect, come to either control or destroy us ev

The Egotism of Consciousness

Image
2 minute read. We used to say humans were the only conscious beings, so it didn't matter how we treated animals. In fact we even labeled many humans (slaves, native peoples, various foreign enemies) as animals, justifying their mistreatment as well. But running even deeper than the desire to have power over other beings is the desire to feel special ourselves - that our very nature puts us above someone or something.  We've been steadily widening our definitions as we have become more civil to more people and creatures. The more we study animals, the more we see ourselves - our brains are really not so different. Yet we feel comfortable with this broadening definition of consciousness because we smugly know that we humans still have more processing power. But now, along comes artificial intelligence.  Suddenly there is more talk of consciousness and specifically how artificial intelligence doesn't have it , but what terrible things it could mean if it were attained. Fundam

Software is Literature

Image
5 minute read. Originally an aerospace engineer, I've been a software engineer now for about half my career, but it doesn't quite feel like engineering to me. I don't want to start an argument on the definitions of terms, but hear me out, I think there are some interesting differences.  I remember first thinking it was odd that at my university, the Computer Science department was not in the College of Engineering, but in the College of Arts & Sciences. Sure, "science" is right there in the name, but the practitioners are generally known as software engineers, and certainly they ran in the same circles as the rest of us engineers. However, while the civil, mechanical, aerospace, electrical, and chemical engineers were required to fill our time with math, physics, and mechanics, the software engineers had to take humanities and social science electives just like the comparative literature majors.  I also remember when my career first turned from aerospace - I j

Perseverance - a history of Manifold

Image
7 minute read. If I had known it would take this long, would I have started? This is a question I asked myself when looking back at the development of Manifold , and I honestly don't know the answer. Certainly taking on this challenge was born largely of naivety in software engineering, especially when realizing I worked on it for almost eight years before it saw the light of day.  Why did I take on this project? It started with 3D printing, where I found out that much of the lack of reliability stemmed from models that had non-manifold mesh data. Manifoldness is what allows a mesh to represent a solid, with a clear inside and outside, so without this the computer is left to guess what your intentions are. In many cases there is simply no clear way for an algorithm to proceed when it encounters a non-manifold mesh.  At first I thought these non-manifold meshes were simply the result of bugs, but while working at Microsoft I got to work with experts from many of the major CAD and m