Programming #
My first experience with writing any instructions for a computer to interpret was when my father introduced me to HTML5. After playing around with it for a little while, I quickly switched over to Java as a primary language and I also learned a bit of Windows Batch scripting as well. My first project was working on a platform game in Java, where I used the Netbeans IDE and followed a tutorial. During this time period I had also started working on an Astrophysical calculator and a simple 2-d Game engine in Java. I had also worked on a small quiz in Windows Batch for a school project and also tried to mimic 'telnet towel.blinkenlights.nl' in windows Batch with delays - which never ended up panning out but had me learn a lot about the tools in the Windows' command line. I had also tried to program in C++ but never got the environment set up correctly.
2 years later my school had a Unity 3D game development seminar that intrigued me and prompted me to start learning C# programming and setting up a Unity3D environment. While I did make a few things outside of the tutorials, I mostly stuck to the given tutorials and then expanded upon them after I was finished. About a year later, I was beginning to get bored of Minecraft but I was interested in trying to make Minecraft mods - so I set up a modding environment in Eclipse with Minecraft Forge and followed a few tutorials, but since I had no big graphics design experience I didn't take it too far other than learning more about how the Game Engine works and how to interface with it.
My first official program was a small parsing program in Java for the company I started working at which needed to have an interface to abstract the process away while also quickly processing the data. At the same company around 5-6 months later I had also made another parsing program in Python to automatically extract information using Regex from an email and put it in a spreadsheet for engineers to view and manage. While at this time I was primarily developing in a Windows environment, I was also just beginning to learn Linux-primarily focused on Kali Linux with a bit of Ubuntu. Also, at this time I had started programming a bit in NASM assembly and was enjoying it a lot and diving into scripting with Windows PowerShell to automate administration on Windows machines.
In the second semester of my first year of College I took a deep plunge into the world of Linux. My first install was Manjaro but only a few days later I wiped it out in place of Arch Linux since I wanted to do an install on my own. During this I learned a lot about scripting with POSIX shell, bashisms, but ended up using zsh as my default shell. Also, I started developing in C, as well as NASM, and with a bit of Python for prototyping/ plotting with matplotlib. Now, I primarily develop in Assembly(gas and NASM), for x86 and ARM architectures, and C(gcc). I have programmed a bit in Rust but I found that it is not as portable to embedded environments and not as suited for low level development that I am used to. I have exposure to Hardware Descriptor languages, Verilog and VHDL, but do not have as much practice on them as I do in Assembly and C. (I worked on a DE10-Lite Nano).