How To Use The Site

How To Program Anything is a very structured site, and it intentionally follows a particular design. This is meant to aid the reader’s ability to hone down and find exactly what they may be looking for, much like a library index. At first, navigating around the site may give you different results than you might expect from a standard blog. Below is documentation on how the site is structured, how to control content filtering, and a particular feature of posts called the Verbosity Configurator.

The Structure Of How To Program Anything

There are six main taxonomies (categories): Core, Techniques, Languages, Applications, Technologies, and Disciplines. Each covers a respective domain of topics as outlined below. There are also five qualifiers (post types) that you can use to refine further the content listed: General (Blog), Tutorials, Series, News, and People. Each of these qualifiers refines the content shown towards a particular purpose, as will also be outlined.

The Main Taxonomies (Categories)

The Core Taxonomy

Programming utilizes science, planning, and math to achieve its goals. Because of this, a good thing to learn in addition to any programming language is the theory behind programming itself.

The Core taxonomy includes posts (tutorials, news, profiles, series, and blogs) dedicated to pertinent core theory and fundamental knowledge. Core theories of programming are as varied as they are deep. The primary one, of course, is the theory of computation. This theory rests heavily on discrete mathematics and formal languages and includes automata, computability, and complexity theories.

Learning about these theories in conjunction with mathematical logic will help you gain a deep understanding. You’ll know what properties and behaviors are possible for a program. Mathematical logic includes, but isn’t limited to, set, model, recursion, and proof theories. These theories often build upon first-order logic (also known as predicate/quantificational logic and first-order predicate calculus).

In other words, what you’ll find on these pages will help you learn how to program just about anything. These fundamental concepts don’t really change much from one machine or language to the next. They are almost always applicable no matter what you’re doing. If you understand these concepts well enough, you may even create your own programming language or structures.

We categorize these theoretical topics, such as combinatorics or computer science, under the “core” moniker. The URL structure for core subjects, such as concrete mathematics or computational theory and philosophy, falls under “core/(your subject here)” where you would put your preferred subject in place of the text and parentheses. You can find a list of them by simply using the URL /core/.

Image Based On A Photo by Jaredd Craig on Unsplash

The Techniques / Algorithms Taxonomy

The Techniques taxonomy includes posts (tutorials, news, profiles, series, and blogs) dedicated to programming techniques and paradigms. Before coalescing into concrete mechanisms like languages, there is a preliminary step where the abstract core knowledge is organized into a model that is utilizable in a concrete way. These models are known as programming paradigms. A paradigm encompasses both a way of looking at things and the expectations of the structure of those things. Often this is according to a particular attribute or quality. Paradigms include object-oriented, prototypal, procedural, structured, functional, logical, declarative, and more.

Beyond paradigms, some meta-theories and techniques inform the structures of programming and its subsequent products (languages and programs). Some of these are historical, while others have yet to be attained, and others are interesting curiosities. Many of them focus on models and algorithms for specific problems, including parsing, searching and sorting, and machine learning techniques. All of these techniques and practices are documented here.

We categorize these techniques and algorithms under the “techniques” moniker.  The URL structure for algorithmic or paradigmatic subjects, such as declarative programming or graph algorithms, falls under “techniques/(your subject here)” where you would put your preferred subject in place of the text and parentheses. You can find a list of them by simply using the URL /techniques/.

Image Based On A Photo by Lidya Nada on Unsplash

The Languages Taxonomy

The Languages taxonomy includes posts (tutorials, news, profiles, series, and blogs) involving specific programming languages. Programming languages are the product of taking systematic core knowledge and various techniques, including models and paradigms, and implementing them into a concrete and usable system that can be configured or coded, to accomplish the goals of a given domain. My definition here is a bit broad, technically speaking.

Some are more formatting languages but contain modules or elements sometimes involving elements of programming, like HTML5. I include them here and the more traditional programming languages like JavaScript, PHP, Python, or C/C++. Really, if it’s interpreted or compiled in any way in a systematic fashion to accomplish some goal, it qualifies as a programming language. These posts deal with specific programming languages, how to use them, how they’re built, and everything else associated with them.

We categorize all these different specifications and languages under the fairly straightforward “languages” moniker.  The URL structure for each language, such as C, HTML, or Julia, falls under “languages/(your subject here)” where you would put your preferred subject in place of the text and parentheses. You can find a list of them by simply using the URL /languages/.

Image Based On A Photo by ThisisEngineering RAEng on Unsplash

The Applications Taxonomy

Programming languages are just part of the whole picture, though. With this in mind, there’s also be information available on particular applications of those programming languages. For example, the programming languages PHP, SQL, HTML5, CSS, and JavaScript are all employed by WordPress.

The Applications taxonomy includes posts (tutorials, news, profiles, series, and blogs) involving specific programming applications. A programming application is a program created using a programming language that allows the user to further program or accomplish some goal. These include compilers, content management systems, and game engines.

These days, the distinction between a framework/technology and an application is often blurred. In one sense, WordPress out of the box allows you to make a blog. In another sense, it provides functionality that expands within that environment with additional code. The major difference here between something like WordPress and something considering technology such as PyGame is simple.

An application can perform a function or empower the user concerning a task without additional programming. You can install WordPress and never code again, and you’ll still have a blog. You can’t install PyGame and expect to have a game engine instantly. This section outlines various (hackable) applications (that sometimes act as frameworks) such as the aforementioned WordPress and other CMSs, editors like Atom, compiler toolchains such as LLVM, and even game development applications such as Godot, Unity, and even Visual Novel Maker.

We categorize all these different applications, under the popular “apps” moniker.  The URL structure for each application, such as WordPress, Godot, or XCode, falls under “apps/(your subject here)” where you would put your preferred subject in place of the text and parentheses. You can find a list of them by simply using the URL /apps/.

Image Based On A Photo by Pankaj Patel on Unsplash

The Technologies Taxonomy

The Technologies taxonomy includes posts (tutorials, news, profiles, series, and blogs) involving various specific technologies. These are physical and software platforms that we write our software “on.” For example, I listed PyGame, Raspberry Pi, and even packaging an iOS app.

A “technology” is a framework, whether physical or abstract, that defines the environment in which you program. Let us consider a given machine. We must consider its memory, its instruction set, its interfaces, and its organization. When you must consider these things, you are speaking of a technology or platform. It’s possible to do the same thing on two different technologies. However, you’ll likely do them somewhat differently.

You might wonder why something like PyGame is included here. Isn’t it a software framework/library? It’s included here because, much like a computer processor defines your instruction-set, a framework like PyGame offers you an interface to program within but doesn’t actually do anything by itself. In that regard, technologies found here include frameworks such as Laravel, PyGame, the C++ runtime environment, and more.

We categorize all these different technologies, under the “tech” moniker, much like one refers to the “tech industry.”  The URL structure for each technology, such as PyGame or Raspberry Pi, falls under “tech/(your subject here)” where you would put your preferred subject in place of the text and parentheses. You can find a list of them by simply using the URL /tech/.

Image Based On A Photo by Michael Dziedzic on Unsplash

The Disciplines Taxonomy

A discipline (or field) is a domain of interest that employs the concepts and practices of programming.

The Disciplines taxonomy includes posts (tutorials, news, profiles, series, and blogs) involving various fields and disciplines that have something to do with programming and computers. The ability to perform vast computational feats has become essential to almost every realm of human activity. We rely on computers to process, catalog, and transmit information in research, business, and recreation combined.

Disciplines and fields can range from the obvious (such as applied mathematics or bioinformatics) to the niche (like artificial life simulations or machine learning) and even the fun (game development and social networks). Each field easily forms its own microcosm of in-depth studies and histories, gives rise to its own “star” programmers, publishes its own journals, and develops its own history.

WE break down fields into their domains of interest, such as computer graphics, programming language design, software engineering, human-computer interaction, simulations, artificial intelligence, networking, business applications, robotics, cybernetics, and so on.

We categorize all these different fields under the “disciplines” moniker.  The URL structure for each discipline, such as artificial intelligence or front-end development, falls under “disciplines/(your subject here)” where you would put your preferred subject in place of the text and parentheses. You can find a list of them by simply using the URL /disciplines/.

Image Based On A Photo by Jusdevoyage on Unsplash

Qualifiers (Post Types)

How Qualifiers Work

Main taxonomies slice up the content on the site into various categories. However, that content may be one of several forms, such as a news article or a tutorial. One taxonomy may contain several different types of posts, each serving a different purpose. This is reflected in the URL structure, where the main taxonomy comes first, followed by a possible qualifier (such as /people, or /blog).

The General (Blog) Qualifier

In the General qualifier, you will find all posts that are not tutorials, news, profiles, or series. These posts make up most of the content on How To Program anything and often go into reference-level detail regarding various systems, be they programming languages, theories, or applications. They span different taxonomies (Core, Techniques, Languages, Applications, Technologies, and Disciplines).

These differ from tutorials in that they do not necessarily provide a step-by-step process on how to accomplish a given task, and the reader won’t end up with any final product. They also differ from news posts because of their referential nature, which is more timeless than topical. Deep diving into these articles should provide clear and useful information about all the various subjects covered on How To Program Anything.

As shown by the links above, to access only the general posts under a given taxonomy, append the term /blog to the end of the URL.

Image Based On A Photo by Radek Grzybowski on Unsplash

The Tutorials Qualifier

Tutorial posts range over the general taxonomies (Core, Techniques, Languages, Applications, Technologies, and Disciplines) and teach the reader how to do something. Tutorials feature step-by-step processes and explanations or links to more in-depth explanations, which help the reader solve a particular problem or end up with a final product.

Subjects and lengths vary for tutorials. They can range from simple “How do I?” processes to something as complex as building a web app or computer game.

Tutorials are rated by difficulty with green gears by the editors correlating to the old Infocom difficulty levels (Introductory, Standard, Advanced, and Expert). They are also rated by lightbulbs in terms of reception by readers (the more lightbulbs, the better). If a tutorial helps you, please consider leaving a positive rating. If there’s an issue with a tutorial, please leave a comment indicating the issue, and the editors will try to address it.

As shown by the links above, to access only the general posts under a given taxonomy, append the term /tutorials to the end of the URL.

Image Based On A Photo by Apostolos Vamvouras on Unsplash

The Series Qualifier

Sometimes a single post doesn’t suffice to cover the extent of a particular subject. This is often true of larger tutorials such as building a web app or a computer game. Sometimes a series of posts might span different types of posts and core taxonomies (Core, Techniques, Languages, Applications, Technologies, and Disciplines) but are linked by a common thread.

You can imagine a series as a sort of miniature (or not so miniature!) book that aggregates several other posts together to achieve coverage of a subject. This often happens in the intricate world of computer programming.

Take WordPress, for instance: it is programmed in PHP, uses SQL, outputs HTML/CSS/JavaScript, and runs inside a web server. These elements are separate and independent from each other, but they can also be brought together to produce a WordPress website. Parts of a WordPress process could be categorized on this site in several places, but a series would bring all the parts of the process together.

As shown by the links above, to access only the general posts under a given taxonomy, append the term /series to the end of the URL.

Image Base On A Photo by John-Mark Smith on Unsplash

The News Qualifier

The purpose of these posts is to feature new developments and other facets of the computational industry. Frameworks, operating systems, and even hardware are always evolving, and new announcements are made every day. News articles span the six core taxonomies (Core, Techniques, Languages, Applications, Technologies, and Disciplines).

Because computers touch every aspect of our modern lives, news articles can cover a much broader area as well. The technology industry is expansive, with many large, very influential companies such as Apple or Google. News often comes from the web/social media and its effects in society. These articles cover anything considered newsworthy that has to do with computers and technology.

As shown by the links above, to access only the general posts under a given taxonomy, append the term /news to the end of the URL.

Image Base On A Photo by Markus Winkler on Unsplash

The People Qualifier

The technology industry often has big, sometimes odd, celebrated personalities and many unsung heroes whose intellect and contribution have shaped the modern landscape. For every Steve Jobs, there are easily a dozen Brian Kernighan’s, Cliff Jones, or John Hollands. None better or worse, their only inequality being public recognition.

These posts hope to provide profiles on contemporary enthusiasts, both professional and hobbyist, and masters, both historical and current. These profiles span the six main categories (Core, Techniques, Languages, Applications, Technologies, and Disciplines). Through the great examples of others, we can study great works and histories of computational innovation from the viewpoints of its creators.

As shown by the links above, to access only the general posts under a given taxonomy, append the term /people to the end of the URL.

Image Base On A Photo by amir shamsipur on Unsplash

Controlling The Content Filter

How To Program Anything is designed to get you to the exact content you’re looking for as quickly as possible. In that vein, when you click on the upper menu items for the main taxonomies and qualifiers or perform a search, you build a filter that affects the content listed. This filter is always shown below the heading for a given taxonomy/qualifier and might look something like this:

A screenshot of the content filter showing a search term ("John Holland"), a qualifier, and a taxonomy.
An example content filter showing a search term (“John Holland”), a taxonomy (Techniques), and a qualifier (Person)

This filter shows that only posts that match these three aspects will be shown in the list of content items. A post must be in the Techniques taxonomy, be of a Person/Profile type, and somehow match the search phrase “john holland.”

To eliminate any one of these requirements and broaden your search, click on the “Remove” link next to the term, and that aspect will be reset to include all delineations. Next to the taxonomies is a link to the taxonomy map. This interactive map shows every category and subcategory available on the site and is also available under the “Org. Map” option in the upper menu.

The Verbosity Configurator

To better serve different audiences, How To Program Anything employs what we call a “verbosity configurator,” much like a piece of software might change its level of debug logging. This handy widget in an article alters the level of detail the content goes into regarding its subject. Some readers are just looking for a simple, quick answer or tutorial, while others hope to learn more. This tool allows the same article to provide solutions for both audiences.

This shows the three different states of the verbosity configurator: gist, abridged, and verbose.
A screen capture of the various states of the verbosity configurator: gist, abridged, and verbose.

Let’s Give This Site’s Verbosity Configurator A Spin

Asher Wolfstein shall explain what the verbosity configurator does by using itself as an example. Go ahead and press either of the three states to and see what happens.

  • Gist
  • Abridged
  • Verbose

Choose a setting

The Gist of The Verbosity Configurator

Sometimes you want to get straight to the point. You don’t need heady context nor endless background. Then this mode is for you: gist. Selecting gist gets you, well, the gist of the section at hand. On the other end, verbose gives you (hopefully) everything you could want in terms of context, background, and personality. Abridged is somewhere in between. You can change this setting on any section at any time (verbose is the default). Use at your own risk!

The Short of The Verbosity Configurator

In my early days as a human, I was very good at relaying complex and layered information regarding something. I was quite good at being able to explain what happened, including motives and context. In time I realized that sometimes people don’t want all that information. They want you to “get to the point.”

Thus, for the benefit of readers who are more interested in a superfluous survey of a given topic before they delve deeper and otherwise, I create the verbosity configurator. It has three selectable settings: gist, abridged, and verbose (the default). Gist will get you the gist of things: to-the-point explanations with little to no frills or background. Abridged will get you somewhere between no background and all the background. And verbose achieves total information saturation.

You can change these settings one section at a time at any time. I hope this feature will help you get up to speed quickly when you want and offer you the finer details otherwise.

The Long of the Verbosity Configurator

This verbosity setting is actually inspired by experiences in my past. When I was young, I was very good at relaying complex and layered information regarding something. I actually began talking before I could fully walk, which explains a lot. With said skill, I was quite good at explaining exactly what happened as I witnessed it, including motives and context. Early on, though, I presumed that was what I needed to do all the time. Well, not quite so.

I learned over time that there was a third component of communication, the audience’s motives. If someone wanted all that information, it was great. But, if they just wanted to understand quickly, or in fact they already were aware of it, it was much better to just “get to the point.” And so, I learned in time to figure out how to pare my stories down with regards to what I was trying to accomplish.

Some Readers…

In the context of this site, I realized that some readers might desire the full detailed background on every little thing like a proper geek worth his salt, but others… well, there’s a reason the “In 24 Hours” book series exists. The tail end of all this is that sometimes you want to grasp the bare minimum quickly before delving deeper.

The verbosity configurator does just that. If you desire a straight and to-the-point explanation with little to no frills or background, use the “Gist” setting. That’s the gist of it. If you desire something between zero context and outright history of the world, then select “Abridged.” It’s a bit like Reader’s Digest. And lastly, when you’re ready and desire all the information you can handle, select “Verbose.”

The default setting is verbose, but you can change it section by section at any time. I hope that this feature will help you get up to speed quickly when you want and offer you the finer details otherwise.

Image Base On A Photo by Dennis Eusebio on Unsplash