About How To Program And Programming Anything

Welcome to How To Program Anything (Turning Ideas Into Code), founded by Asher Wolfstein of Novelty Factor (a working group of Original Pursuits LLC). How To Program Anything is a website intended for all aspiring makers, technologists, and programmers of all ages and experience levels.

The primary goal of How To Program Anything is to teach the reader how to program just about anything. It does this through engaging and easy-to-digest articles, tutorials/projects, videos, programming examples, and more. The secondary goal is to have How To Program Anything function as a meeting place and resource for coders and open source projects. It can serve as a hub for makers, programmers, and other technologists to come together and share their passion and knowledge.

Programming languages often employ a “Hello, World!” example to teach beginners the basics of coding in that language. I have included below a short music video based on that concept. This is my “Hello, World!” announcement for How To Program Anything.

The above is from the YouTube channel 쿠삼 kusam and is based on a song by Louie Zong.

What Do You Mean, “Programming Anything?”

I understand that claiming that one could “program anything” if they were to follow the “instructions” on this site is a pretty stupendous claim. With that interest, I shall strive to clarify.

If you learn the fundamentals of computation, you can use that knowledge to tackle and learn any computational structure. You can even invent your own structures, such as your own programming language or computational device. Those fundamentals of programming can be difficult to grasp or hunt down. This website aims to give the reader clear, fun, and useful instruction on terms they can understand.

My Journey

My personal programming journey started when I was very young and has been primarily auto-didactic. I essentially taught myself everything I know about programming computers, starting at the age of seven. Despite lacking any official accreditation, I gained work as a professional programmer at twenty-three. For the first time in my life, I met other professional programmers from various backgrounds, including local universities.

“There wasn’t anybody telling me how to do it, ever.”

It was there, or actually when I was leaving that employment that I learned of an interesting disparity. My manager, upon my departure, told me of his intrigue about my skills compared to my background. He stated that he felt he was losing an exceptional problem solver. In fact, a “better problem solver than most of the college graduates” he hired. He inquired how this came to be.

I answered, “At every stage, from my TRS-80 Color Computer II to my first commercial-grade compiler, I had to problem solve on how to do anything. Nothing was handed to me. Beyond the scarce book I could get a hold of, there wasn’t anybody telling me how to do it, ever. I believe that struggle has given me a deeper appreciation and understanding.”

I highlight this disparity because, upon reflecting on it, I determined that the way many people (have to) learn programming is inadequate.

“Programming shouldn’t be taught in universities…”

A non-programming friend of mine, an opera singer by trade, came to an interesting conclusion one day after surveying the landscape of professional programming. She thought it inappropriate that universities taught programming. She speculated that much of the knowledge required for most daily programming tasks might be better suited in a trade school. There they could teach you the steps; in essence, the how. I remarked that she wasn’t entirely off base but that there was room in universities for theories such as artificial intelligence, operating systems, and the theory of computation.

I kept her comment in my mind for many years. I pondered about this other seeming disparity between backgrounds, skills, and knowledge. I think back to several conversations or times while I was learning the fundamentals. People could very well learn how to program, and quite well, without necessarily having to really know the theory behind what they were doing. They considered finite-state automata, computability issues, assembly code, or compiler/parser construction to be these esoteric arts that only an enlightened few knew.

Such A Notion Is Entirely Useless

After I learned many of these occult arts myself, I realized that such a notion is entirely useless. In fact, they serve only to intimidate and obfuscate those who might be interested in learning about them. It’s been my experience that the reasons people believe in such tom-foolery are two-fold. The avenues for learning those subjects are obtuse, and their investment is difficult to rationalize. Few of these resources bridge any knowledge gaps, proving difficult to impossible to grasp for the novice. Likewise, why learn the ins and outs of compiler construction when you have an excellent compiler to use?

I firmly believe the lack of this knowledge or a hazy understanding of it proves to be detrimental. It leads to ill-informed design and architecture choices by programmers. This negatively impacts the programmers, the maintainers, and the end-users in the long run in terms of usefulness and economy. It is my firm conviction that if one could be presented with clear, justified, and useful avenues for learning the fundamental theories and practices of programming, one could then lead themselves onward in learning (or even designing) any system of mechanical computation, be it a computer, robot, or something not yet invented.

This is the problem this website hopes to solve. It grows from a desire to pull the strictly academic material down from its clouds, to pull the layman with room for improvement up from his oubliette, and finally, unite them.

Okay, Programming, But Why So… Different?

It would be a lie to say that I have no idea what you mean. This site is *waves hands around* different, and I’ll give you that. To understand why I must tell you about myself, who I am, and where I come from.

On Being Different

First off, I’m not actually a programmer. Okay, that’s not entirely true; I do know how to program and do so daily. What I mean is, like many people, I’m not just a programmer/engineer. What I am can be summed up in one word. I am an artonaut.

What’s An Artonaut?

An artonaut, fittingly a word I made up for myself, is at their heart a traveler. However, unlike an argonaut, they don’t necessarily travel around the world. Nor, like a cosmonaut, do they necessarily travel through outer space. Artonauts travel through the dimensions of quality: those real/imaginary places that touch and inspire us. We travel to learn amazing crafts that enrich us, explore the inner and outer dimensions that empower us, and find the beliefs and stories that we remember and hold on to. All while practicing the art of motorcycle maintenance (or something like that.)

Artonauts aren’t just open vessels idly bobbing down the Hermetic riverways, though. Central to an artonaut is what they have defined for themselves. Their identity is the will that they’ve chosen to employ in creating themselves. It often lies in stark contrast to their surroundings, both physical and social. Take me for instance, being the first one to define the term artonaut.

Take Me For Example

I am a maker and programmer of many talents, living in Fort Collins, Colorado (USA). I am a transplant, though, an imposter city-slicker if you will. Coming from a small semi-rural town in the Rocky Mountains where, when I was born, almost nobody sat around programming computers for fun (at least nobody that I ever knew.) As I grew up, I learned animal husbandry with my 4-H sheep and swine, how to build model rockets, and how to work on a ranch (mostly building fences), and all those other things that come with living in a small town. I actually purchased my first personally owned computer with the proceeds from my 4-H sales.

At seven years old, I taught myself programming on a TRS-80 Color Computer II 16k. I was able to grasp the concepts of ColorBASIC from the included manuals. This machine was a gorgeous piece of work.

No Mouse, No Hard Drive, No…

It had no mouse, hard drive, disk drive, or real operating system other than a ColorBASIC interpreter. You had to attach a special tape recorder actually to save anything. I taught myself in earnest and without encouragement, often toying with it in the cold attic or very early in the morning. I was enchanted by the idea that I could make this machine do anything I wanted. It could even do things I couldn’t do (or didn’t want to do) myself (like all my repetitive spelling homework.) If I count the year since I started, you could say I have thirty years of experience, but that would be disingenuous. What I really have is thirty years of experience teaching myself how to program. Much of this time was without the help of the internet.

One day my oldest brother’s friend brought over his Nintendo Entertainment System. For the first time, I witnessed The Legend of Zelda and Super Mario Bros. play out on my parent’s large CRT screen in their bedroom. I had seen games before, such as on the TRS-80, but this was so far beyond what I had seen. The controllers, the presentation, the action, and the music were absolutely incredible to me, and frankly, blew my mind wide open. It was almost a religious experience. Here was a machine that could transport you into a completely fictional world in such a way that you could interact with that world and live out your own story. From that moment on, I was obsessed with designing and programming computer games. I knew that this thing, this medium, these tools… they were the future.

Is The Medium The Message?

From then on, I traveled. I couldn’t drive, and I didn’t have many places to walk. But I could sneak down in the wee early hours of the morning and play my Nintendo for hours on end. I traveled in my mind to all the places I could as everybody I could. I was Samus in Metroid, or Simon in Castlevania II (which I beat without a guide.)

Unfortunately, the small town had a lot of beautiful scenery to offer but very few resources for someone like me. My eldest brother brought home a textbook on how to program in C and C++. Despite not having access to a C/C++ compiler, I read the entire thing, intent on understanding how to program even more.

I Found The Internet

Then Al Gore invented the Internet. At first, I could only access it at school and the library. Those were the only networks that could support it. However, I quickly surmised a way of accessing it through my 14.4-baud modem terminal software. I used a Lynx browser by piggy-backing on the dial-up service the library offered. I technically wasn’t supposed to be doing that, but I was desperate (and clever). This was the final piece of the puzzle for me, living in that place, that allowed me to really flex and expand my world and consciousness as far as I could take it.

I realized, with the help of the internet, that I wasn’t the only one. For much of my life, I was the only one so enchanted by strange things. I was the only one so particularly passionate in obscure ways and so different and future-thinking than the people around me. A melancholic resignation had come over me, in a way. I thought that I would be the only one that would understand these things despite feverish late-night esoteric searches.

Do I Wear My Fake Fur On The Inside?

On the internet, I discovered artists, scenes, subcultures, music, and ideas I’d never heard before. I traveled even further and with a bit more maturity. I traveled so far away from that log house on top of the hill in those days, speeding along electrons in the information super highway.

This brings us up to speed.

You’ve read the beginning of my story, but it is definitely not the end. I have faced several hardships since becoming an adult. They are touched upon sometimes at my own personal website, World of Wunk.

I’ve never been consciously afraid of being who I am, though sometimes I’ve had difficulty doing it. I am not embarrassed by my authenticity. I do not have to hide my interests or flair because I’m not looking for your approval. That’s why this website, and everything I do, is different.

The Art of Living

I am an artist first and foremost and a programmer second. My life is my own personal piece of art that I get to make without any rules or training. I tried to do it all in one place in earlier times on my blog. But I realized that it was much too crowded and noisy. But, you are mistaken if you think I won’t express myself and not wear my fursuit because I was trying to be an engineer. I build little miniature games, giving life to technical concepts and explain how to program to you in an unconventional way. That’s who I am.

I Can Program, and You Can Too!

The takeaway from this sordid tale is that I have never forgotten where I came from. The desperation to learn and understand technology but not be able to find the resources that could help you is very real to me. I understand the frustration of trying to problem-solve your way through learning what you want to learn.  Personally coming from humble beginnings as a budding ranch-hand, I taught myself everything I know about computers, and my message is that you can too.

It doesn’t matter your age, your background, or your learning style. You can learn to command the mysterious machines in your life and bend them to your will.  All you need is the right programming tutorials, the right encouragement, and the right resources—all of which this site can provide.  I don’t want others who want to do amazing things with computers and technology to have to suffer through the same thirty-year journey I did: sifting through piles of information and unanswered questions.  You should be able to do those amazing things now, and I believe, with my help, you can!

Is How To Program Anything Right For You?

My goal with this site is to provide (sometimes highly) technical information in a fun, unique, accurate, and hopefully engaging way. As a writer, I am an artist first with this site, a programmer second. That may seem like an odd priority arrangement for a site on how to program, but it is made deliberately. There are plenty of sites where you can “learn programming,” both paid and free. In fact, the market for programming tutorials is pretty vast, and competition is fierce.

If the more “artsy” aspects of this site turn you off, then it’s possible this site isn’t for you. There are hundreds of other sites replete with stale examples, weirdly translated English, and difficult to piece together/incomplete ideas for you to go. If, however, you’re looking for something fun, interesting, expanding, creative, and just plain juicy, then… I made this for people like us.

Programming Is Fun, Creative, And Quite Personal

It’s always been my feeling that programming is fun, creative, and quite personal. It is much like writing a book, except that your book can actually get up and do things. The programs that people end up making are expressions of the things they wish to do. That’s how it was for me when I programmed my Macintosh IIsi to do my monotonous spelling homework. And that’s how it is for me today, as I work on computer games and robots.

I’m not here to bore you, or dryly shove minutiae at your face, nor even tell you what to do. I’m here to open up the world of programming to every seeking mind and expand its limitless possibilities. I want to inspire the creative, the homebrew, the dreamers, and the engineers, with the idea that they too can learn how to program computers. They can bend these machines to their will.

I hope, amidst all the myriad resources out there detailing everything under the sun for the umpteenth time, that this can be an entertaining quality diamond amidst the sand for some. If this site’s character and personality, or artiness, are somehow unsatisfactory for you, there are plenty of other high-quality resources out there for you to peruse.

Image Based On A Photo by Clay Banks on Unsplash

Recent Posts

Negative Binary Numbers

A non-standard positional notation is one where the value of each position isn’t necessarily a straightforward power of the radix. I am also including when the radix is not a positive integer (such as -2), even though mathematically the representation is consistent with standard positional notation. By altering the interpretation of one or more of the place values (or the radix) of a binary representation, we are able to represent negative values. In this post I’ll be covering sign-magnitude, the most intuitive method, the radix complement methods (ones’ complement and two’s complement), offset binary (also known as excess-k or biased), and base -2 (base negative two).

Read More »

Binary (Base-2) And Its Operations

This article continues the trend of the previous articles and begins with a history of binary. After that, I briefly reiterate why binary is used in modern electronic devices as covered in the previous article, and go into more depth regarding binary “sizes” (bit, byte, kilobyte, etc.) Then I move on to important elements of binary arithmetic, and the operations of addition, subtraction, multiplication, and division. I cover two operations often found in computing processors, the shift operators, and their mathematical meaning. Finally, I briefly cover Boolean logic operations.

Read More »
An incadescent lightbulb burns.

Radix Economy

This article begins with a recap of where we are in the series in regards to the concept of counting. I review the definition of positional notation as outlined in the first article and then move on to reveal how we can calculate the number of digits a value will have in a given radix. In doing so I will go over two mathematical concepts relevant to this calculation: exponents and logarithms. I will then use logarithms to show how you can calculate the efficiency of a given radix, also called the radix economy, and answer the question, “What’s the most efficient radix?”

Read More »
A measurement chart in a shoe store.

Converting To Binary, Octal, and Hexadecimal

This is the second article in a series whose intention is to have the reader able to understand binary, octal, and hexadecimal; three radices of great importance to contemporary computer theory. This article builds upon the previous article by outlining three important radices (binary, octal, and hexadecimal) that are useful in the field of computer science. I start with arbitrary base conversion using two methods. Then, a bit of background is given for why these bases are important, particularly binary. Finally, we perform radix conversion.

Read More »
A man in darkness has computer code projected onto him.

Understanding Radix

This article puts forth a brief history of counting, which details how we arrived at some of the conventions we have today, including the notion of radix. It then explores the concept of radix in positional numeral systems, and in particular the concept of using radices of arbitrary values. With this foundation, it becomes a simple exercise to use binary, octal, and hexadecimal, each with a radix of two, eight, and sixteen respectively.

Read More »
A set of cathode ray tube based numeric displays.

Binary, Octal, And Hexadecimal

This series intends to have the reader able to understand binary, octal, and hexadecimal; three radices of great importance to contemporary computer theory. By the end of this series, you should be able to read and convert integer values into binary, octal, and hexadecimal, perform arithmetic operations on all three representations, understand basic Boolean operations, and otherwise have a further appreciation of the power of binary.

Read More »
  • Follow On Twitter!