Programming is very exciting to me. It allows me to use the computer’s language to replicate my ideas digitally. This can then be distributed to people worldwide, making the computer platform a very powerful thing to harness. What makes programming languages different from other kinds of computer languages is that a programming language is compiled and used to write the majority of the software being made. My goal is to be able to harness the power of programming to be able to make games and write other software efficiently. In this pursuit I’m trying to learn C++, Java, and programming for Android.

C++ is a high-level, object-oriented programming language used to develop computer-based applications, whether through the command line or through an executable. The advantage to C++ is its ability to explicitly define memory commands and being backwards compatible with C, which is not object-oriented. Java is another object-oriented, high-level programming language used to develop computer-based applications, but Java is given built-in 2D art commands and the ability to produce GUIs easily through Java Swing. Java is also very portable, being able to run on anything that has the Java Virtual Machine (JVM). The main drawback to Java is that you are not allowed to explicitly define memory commands but instead uses garbage collection to filter through the memory, which can sometimes be CPU-intensive in itself. Android is programmed using Java and is structured with XML markup. C++ can now also be used by developing with the Native Development Kit (NDK). Android is becoming the biggest OS on the mobile market making this platform the best mobile OS to distribute to the largest amount of people.

Programming languages’ functionality can also be extended through libraries. Libraries are third-party code resources that people have created so they can be pulled from later on when needed in a program. This is usually through pre-built functions that are stored in the library that can be reused in code to improve efficiency. Libraries can also be written in several languages, this gives the programmer a vast resource to pull from that is not available in the native language of choice. e.g., LWJGL, which gives users of Java OpenGL features and a few extra game-related features that were previously available only in C++.



“Imagination is more important than knowledge.”
Albert Einstein



Scripting is a large part of what I generally write when coding. A scripting language is generally set apart from the others in the fact that it usually supplements another programming language which acts as a framework for the scripting language. Many people don’t think about this when coding JavaScript or PHP, but they are scripting languages to the markup, which makes up the “meat and potatoes” of the site. Other arguments state that a scripting language differs from a programming language in the fact that it interprets the input into another language rather than compiling it, which is a different abstraction. While this usually holds true, the distinct line between these two types of languages is gradually being blurred with languages such as Python. Python is compiled to bytecode and then at that point is either interpreted or compiled depending on the situation. This holds true in other languages too. That makes the first model that we presented  earlier more accurate in how to discern the two apart.

With that in mind, JavaScript, abbreviated JS, is one of the top languages I use. This is largely due to the fact that I do a lot of coding on the web, and JS allows me to add an extra dimension to my designs. I also tend to script a lot on Khan Academy in a JS library known as Processing.JS, a JS port of the Processing language which is derived from Java. It allows me to manipulate easily things on an HTML5 canvas. I also frequently use JS with popular libraries such as jQuery, and I would like to experiment with other libraries such as AngularJS, React, Node.JS, and D3.JS.

Among other languages, PHP is also a major language I use. Through WordPress development, this very site, and other server-side projects, I use PHP to communicate between client and server. AJAX (Asynchronous JavaScript and XML) can also be used to allow JS to communicate to PHP too. The MySQLi interface of PHP also allows PHP to interface with MySQL for databasing. Node.JS also comes in to allow JS to handle full-blown server-side network management through a socket-based realtime system. All of this allows for networked games, membership management, and many other programs that can do cool things through the power of networking and databasing.






HTML and CSS is a big part of what I use on a day-to-day basis. With the latest editions to these languages that are an integral part of the web, these languages have taken entirely new abilities. With HTML5, the web has been introduced with new structural elements, video and audio capabilities natively, the amazing canvas, and the deprecation of old elements that have been replaced by more suitable counterparts. CSS3 has gone on to add tremendously more customization even to this day. This adds many exciting new features, such as CSS animations, shadows, border-radius, box-sizing, ::before and ::after, and many other great additions that changed the face of the internet as we know it. Of course, these new features didn’t come without its downsides. All the new properties and pseudo-selectors brought many inconsistencies that we’ve slowly seen smoothed out. During that time, and to this day, many libraries were released that worked with different rendering engines and old versions to let developers use the new features on older browsers as a polyfill. Many of these are still extremely popular to this day and even used in this very website to help smooth out the inconsistencies across browsers.

As CSS4 is still being worked on and planned to be released around 2020, there have also been many exciting third-party additions. Preprocessors, for example, have come to light and have made writing CSS much easier in some respects. Most of them utilize a programming language known as Ruby which is derived from C. It utilizes Ruby’s “gems” to compile a preprocessed language, such as Sass, to CSS. This has allowed us to use CSS variables, auto prefixers, more advanced math operations, and more through the power of third-party additions known as mixins. There also have been some exciting developments in browser APIs (application programming interfaces), such as the Web Audio API, which makes game sound handling easier through native JS. Inline SVG has also become popular recently, allowing you to make vector graphics straight inside your HTML, no external file required.

XML in Android is also something I’ve been experimenting with for making Android apps. XML allows you to harness the power of Android layouts to structure your app and invoke certain Java functions through markup attributes. While that is entirely separate from the web, it’s still a very powerful tool to learn to be able to create Android apps.

HTML and CSS have come a long way, and with all the new technology, it doesn’t seem to be stopping any time soon.