Biography - What's happening in Dymatic's life?

This is an online journal of my internet life that anyone has the rights to view, edit (I don't see why they would want to do that), and redistribute for free. It may be unnecessary to put this here and some people are bound to find it boring. However, if you know me personally and would like to catch up without actually contacting me here is your chance to do it.





March 17th, 2011 - Trisplit internet persona \\ Entry 2
It has always been a rule of mine to not share my true identity on the internet. After 2 years of online activity I have never broken my rule. I use one of three possible identities for different purposes. My most notable internet pseudonym is Norton Jenkins.

Norton Jenkins is the internet version of how I really act in real life. The only purpose this name servers is protection from people in the real world knowing my identity and from people on the internet knowing my real identity. Norton Jenkins is the name used when there is really no meaning trying to be conveyed to another person or group of people.

Dymatic Is the name that anyone on this blog will recognize me by. It was started recently at the time of this blog's creation but has been used elsewhere on the internet. Dymatic is a shift of the word "Dynamic". Dymatic is used when I am trying to express something of importance to someone or a group of people. If I feel that what I am saying could be useful to someone this name is used. It is mostly used in a formal manor.

Whenever I am not using a pseudonym I just choose to remain completely Anonymous. I do not share any information regarding age, gender, country, name, contact information, or anything that can be specifically traced back to me. This is the name I go by when I do not feel that knowing my name will benefit the other person in any way.

March 19th, 2011 - Community service \\ Entry 3
I have long been an advocate for healthy community activities. My main focus has been internet communities, what keeps them thriving, and what doesn't. Real life communities are just as important to me. Today I signed up for community service for trash cleanup in the marshes of my town. The marshes have long been subject to trash dumps, littering, and I assume illegal chemical dumping. This is the first project the town has every coordinated so I was quick to be a part of it. Hopefully if we show this small scale project enough support it can grow. Similar to what I hope to happen with the D.O.W

July 13th, 2011 - Java \\ Entry 4
For the past few weeks I've been taking a course for Java programming at a local college. My grades have all been wonderful, but I forgot to hand in a lab so it is currently suffering. I will start uploading my programs to my blog so that I can see the progress that I make and hopefully someone finds some use in them. They are written in Java, so they are lightweight but MAY be a bit hard to run. Desktop applications and I don't mix well, so it is all command line for the time being. If anyone wishes to GUI-ify my programs go right ahead.

December 19th, 2011 - An update, finally \\ Entry 5
Well, my fifth entry is coming half a year away from my last one. I just rediscovered this autobiography page and figured it was time for a brief update. Whenever I find that I have neglected to send the updates for one of my programs that I promised to upkeep for quite some time I usually get too embarrassed to even do it, the same feeling is associated with editing old pages.  Speaking of my old programs, something has changed from my last entry about it. I handed in the lab and ended up graduating with a 4.0, a grade that I feel was pushed a bit by my professor because of my age. Also, the need for people to add a GUI to my programs is no longer existent, since I now use the Desktop Applications setting from my integrated development environment of choice, Netbeans IDE.

May 26th, 2012 - NRSL, a promising project \\ Entry 6
After my last post a LOT has happened. My computer, Phoenix, has entered the age of stability. I have names for different time periods on my computer, and the age of stability is but just one. It comes after the instability of the distrohopping age, and now I am dead-set in my ways of computing.

As my choice in operating system became more stable, my favor in programming language fell apart. I used to be a hardheaded Java developer, but about two months ago I took an interest in C++. I started without a book, and quickly found that after pointers I needed a bit of a push. I read the first few chapters of "The C++ programming language" and then found the rest out from the internet.

My two notable programs so far have been a program that learns from talking and SCT, my most recent and favorite project. It allowed me to invent my OWN programming language, which I call NRSL. NRSL is technically the third language that I learned, but the learning curve was none because I made it. All it really does is translate keywords back and forth, but it is still functional and I now use it for everyday projects. It compiles into C++ executables.

June 17th, 2012 - Commands                          \\Entry 7
I have been experimenting a lot with mastering the Linux command line and some light BASH scripting. My desktop has an issue with a USB port and a module that checks its health reading "Over-current condition on port 7" in any tty, so that wasn't an option. In an attempt to install a heavily command-line centric Window Manager, I tried Dynamic Window Manager and found that it had too many configuration issues. I blogged about it, and then went on to using Aweosome, which I am currently using. In my recent shenanigans with the command line, I have learned how to send email from the command line, how to log into my desktop from another desktop, and have to communicate via IRC on the command line.

June 24th, 2012 - Guru                                        \\Entry 8
Last year when I learned Java I started a project codenamed "Guru" and technically called LASIDE (the Lame and Simple Integrated Development Environment). Recently I have been messing around with Qt and C++ and decided to revive the project. 30 files and a few thousand lines of code later, Guru was complete. It is now going through the reviewing process by Canonical, but I hope to have it included in the official repositories.

Oct 27th, 2012 - Intermediate                               \\Entry 9
Since the Guru project failed and ended I have been messing around a lot with the concept of extensibility and configurability in my software. Note that these are not just buzzwords, but actual concepts as it relates to computer programming. All of my major programs now contain a configuration file to turn variables within the program on or off, and they are being designed to handle varying workloads. SCT, the specific code translator, was the first program to be "extensible". The user truly chooses what to do with the program via a language definition file. The program will literally adapt to its needs.

Over the summer I took a quick leap into the world of AI, and it turned out to be a nearly life-changing experience. I made an IRC bot that learned from destructuring sentences or being explicitly taught via a learn file along with a new plugin system called Crunch. Crunch follows the Observer pattern guidelines. It is a hand-written C++ subscription system.

From nAI was born the NTK (Noran ToolKit) which had a bunch of useful tools for dealing with C++ programs, including easy usage of configuration files and command-line arguments via the portable crunch plugin system. My interest in AI quickly lead me to the programming language called Lisp, which I had wanted to learn for a while. I sat down and started hacking some Lisp, and within a week I was decent with using it.

Due to Lisp's low amount of popularity, I abandoned it and moved to C++ for a while. This was all before my life was changed by the programming language called Clojure. It is a Lisp (untyped, yay!) with built-in concurrency libraries and Java interop. Since I learned Clojure I have not used anything else. In fact, I am currently writing my own object-oritented template-enabled markdown language.

When I look back on the years when I was a beginner, I can't help but wonder why I struggled with such basic programming examples. Simple problems that old me came up with silly solutions to solve. To me this is evidence that I am no longer a beginner, but I am moving more and more into the world of the intermediate.

June 7th, 2016 - Advanced Learner
It's been four years since my last entry in this autobiographical page. Luckily, the last time I was here I decided to turn this page (as well as my "Custom Programs") page into drafts. I say "luckily", because some of the entries were (and still are) embarrassing to me. Yet, they are just embarrassing to me because I have advanced in my programming / computer science life to the point where I understand that most of the things I was talking about were either gross misunderstandings or simply too simplistic.

The point of this entry  isn't for me to tote about how much more advanced over a 15 year old I was in order to feel good about myself. In fact, it's the contrary. I am making this blog article to benchmark my future excursions into the realm of computer science. I hope to look back on this page in, say, 5 more years, and garner the same reaction from this post as I did with my previous post.

Before I write about what I've been working on lately, let me fill in some gaps that should have been updated in this page before.

I did continue learning Clojure. In fact, I learned Clojure so well that I created a little project in it - https://github.com/dymatic/MicroMarkup. MicroMarkup was a flat-file standard for storing tables and arrays -- an idea I became obsessed with.

Around this time, I ceased using my monicker of "dymatic" in lieu of my real name. I found it to be more professional, which I became concerned with around this time. I wanted to be able to show prospective employers my github portfolio without them questioning why my name wasn't present on any of the projects. So, I reinvented my online presence. New github, new blog (tutpi), new IRC presence... Eventually, I came back to my old presence a bit. I still prefer to use this blog, as it has an existing audience, and I'm more familiar with the WYSIWYG editor.

After the reinvention, and learning and using Clojure and another lisp dialect (Racket), I picked up Haskell. Haskell became the programming language that I consider to be my first "real" language, in which I made "real" applications that I truly ended up using. The main application I made in Haskell was called Quill, which was yet another flat-file language, like MicroMarkup. Eventually, I strayed away from Haskell in favor of Rust, which was a poor idea.

I used Rust for two programming projects: citadel and a rewrite of quill. However, Rust was still in beta at this point. So, I held off learning the language until its features stabilized. Yet, that was stressful. The Rust team wasn't keeping promises. Higher-kinded types didn't make it into the 1.0 release (and, as a matter of fact, are still not a feature of the language about a year later). My patch was rejected by the rust team (to fix a bug that is still present in the code base) due to a lack of regression and unit testing. All of this compounded and started what I call the "programming break".

My Programming Break lasted almost 2 years. I didn't have a project from about July 2015-September 2016. During this time, I get truly obsessed with Minecraft, and had my personal life take off. I started dating, got very much into physical fitness (bicycling and weight lifting), and meditation. It was a very educational, emotionally and mind-expanding period in my life, from which I grew as a person and programmer.

My programming break came to an end in September of 2015, when I restarted going to community college (at age 18). I had gone to college when I was 14 and 15 to learn console Java and Android, respectively, but had taken a break from college to finish high school. Since I had gone when I was 14, I was given the opportunity to jump directly into CS216 - the Intermediate Java course. A team and I created Five Points, a traffic simulation written entirely by our class, no external libraries that the java standard library does not include. It turned out to not work by the end of the semester, due to our GUI team leaving their tasks unfinished, yet it did serve to do one thing - rekindle my love of programming.

Using an Object-Oriented language for the first time in nearly a year was a breakthrough for me. I could create an extensible, well-documented, performant codebase with minimal thought using Object Orientation. At this point in my life, I was less concerned with the "purity" and "mathematical beauty" if my code as I was with the pragmatism of it. I wanted it to do a job, not be a mental exercise. This eventually led me to Mono.

I had been a Linux user for about 6 years at this point. I wasn't abandoning a platform I loved, so I had ignored C# - a language I enjoyed using at school. One day, I sort of had the epiphany - "I should try Mono!"

Much to my surprise, the Mono environment is VERY well designed. Monodevelop is like Visual Studio-Lite. It has seamless Code Completion, the same build environment (more or less) as Visual Studio, integrated debugging, and gobs of other features I didn't think it would have. So, I began churning out projects.

HumDrum, Kast, ToDo, MarkovGenerator, PerkinsMonitor... 4 large projects and 1 hobby project in as short as 4 months. My love of programming had officially been rekindled. PerkinsMonitor, my latest project, has been the most involved project I've ever worked on in my life.

Unlike every project prior to this one, it makes heavy use of third-party libraries. I was originally opposed to using third party libraries (or even my own code, if I forgot how it worked) because of the stress that "magic" was going on under the hood. However, once I started unit testing my own code, giving it proper documentation, etc. I found how tedious (and expensive) it would be to maintain my projects like this. So, I decided to learn some new technologies.

I went from not using / knowing any third party libraries to using CSS (which I had almost no experience with), Javascript (same as CSS), html, jquery, SQL, json, and ASP.NET. Tons of frameworks, languages, and technologies I didn't know before tackling the project.

I learned how to deploy SSL certificates, how to set up remote servers (and link them to a domain name), and how to use databases. That final revelation was huge for me, since making database-esque flat file formats had been a huge recurring theme in my programming projects: MicroMarkup, Tables, Quill, Bottomless, Scribe, etc. And now that I understand relational database systems (or, at the very least, how to interact with them) I do not have to waste time reinventing the wheel.

So, this was just an update. I'm making this page public again. I am looking forward to coming back to this very page in a couple of years, and marveling and how I've grown as a programmer (and person) in the same way that I did when I was reading my older entries. Till the next one, Nathaniel. (not dymatic).