This was another huge leap for me, as it involved starting a company from nothing, with 3 people including myself. I built the entirety of the infrastructure, and we ended up scaling to over 50 people globally. During this time I had a slew of tasks, including ensuring the infrastructure was up and running, upgrading it, making sure systems were monitored and accessible, managing all networking for the infrastructure, and managing a small team. I also ended up training a few interns. During this time we ended up moving from a cloud-based infrastructure to a baremetal one, which I also oversaw.
As it stands right now, this infrastructure is still standing the test of time and serving plenty of people.
The following were set up by me:
Within the span of a couple weeks, I set up a CI system that is capable of continuous deployment of all of our software. Yes, you read that right. I have a Jenkins setup that can deploy version upgrades of itself. Beyond this, it is almost entirely immutable. I can guarantee the version of any piece of software we have.
This is possibly one of the greatest strides I've ever made in the neverending quest of using software to make myself obselete.
Marking one of the largest companies I've worked for as a software engineer, I ended up again wearing multiple hats, by choice. Upon entering, I was tasked with UI engineering. This quickly evolved into me taking my own strides to help ensure good quality code and consistency throughout the UI engineering organization. I ended up spinning up my own Jenkins and SonarQube instances, which began running builds and monitoring codebase quality. Beyond this, I significantly tightentened the ESLint standards, and implemented Babel in multiple projects so that ES2015+ was available for us.
Strides were also made to move the existing Jenkins setup towards a more future-ready version, using multibranch pipelines and Blue Ocean for effect. Unfortunately, for a company of such a size, the red tape involved is significant. I'm happy to say that I've at least provided a baseline from which the organization can move forward on.
This job was a very fun one for me, for multiple reasons. I wore many hats, and learned a ton. First, I began as a software engineer. After fixing up the VM situation, I wrote some scripts to help automate setting up the initial development environment. As well, beyond simply working on the product, I worked on simplifying the deployment process, including but not limited to continuous deployment to multiple environments, (almost) including production.
After a while of working on the software engineering side, I moved to SiteOps, where my duties included maintaining servers, spinning up new servers, handling requests that might require root access, being on-call, and some projects for our own and other teams. The time in SiteOps was responsible for a lot of my learning experience, as I learned rather quickly how to deal with multiple various systems including, but not limited to, LDAP, Puppet, Icinga, RHEL, and numerous in-house tools. This experience helped me gain knowledge of beyond full-stack software engineering: a realm I like to call devops.
This time was dedicated to the development of Macy's mobile site, and also the development of the Node.js proxy layer between the data service and the mobile site.
This was a huge jump for me, as it marks my move from Fort Wayne, Indiana to San Francisco, California. This also was my first time in an Agile development environment. As well, this was my first time being dedicated to only one job, UI development. Ironically, however, as you'll read, I learned many things outside of the realm of UI development.
This time was responsible for me widely expanding my knowledge of Bash and Zsh scripting, as we had a script to get new systems going that I ended up entirely rebuilding. I was primarily a UI developer, but, being detached from most of the team, ended up trying to take the lead for our side of the team in getting new developers up to speed, getting their systems set up, and getting them familiarized with some of the systems and how development was handled. Having previously been a sys admin, backend developer, front-end developer, and database admin helped me dramatically during this.
A rather notable achievement during this time: We had a team in Brazil who did not have the proper laptops to begin work. Due to tight security protocols, they could not use American Eagle machines to work, thus machines had to be sanctioned through their parent company, AvenueCode. Thus, the American Eagle developer images for the systems were unable to be used. I, also working for AvenueCode, had to help with getting them the proper systems to work on, create a system image for them to use, and make sure that they all got up and running. I am proud to say that after I jumped in and got them all up and running, they went from a 0 story-point iteration to an over 100 story-point iteration.
Some notable personal achievements during this time include:
This job was responsible for the expansion of my knowledge in MySQL. I used mainly PHP and JavaScript during this time, but also realized that I didn't know as much about MySQL as I thought I did. I ended up much more knowledgeable about MySQL after this.
My knowledge grew absurdly during this time period. My tasks included building website backends and databases, maintaining previously-written code and previously-built databases, managing multiple CentOS servers (mainly command-line, however sometimes Plesk was used and I personally prefer the former), and building a remote backup system first out of PHP and later out of Node.js, amongst others. This job accounts for a gigantic increase in knowledge of MySQL database design (EER models and the likes), OOP, CSS3, HTML5, Node.js, DOM JavaScript, cross-browser compatibility, jQuery, and data minification.
Major accomplishments during this time include:
This job consisted of building a website backend from scratch using PHP and MySQL. Given that my knowledge of PHP had grown quite extensively over the previous few years, a framework was built from scratch using a rough MVC-style structure and a self-built ORM system was used as well. One of my much better projects, it ended up being cancelled, unfortunately. The database was well built, however my lack of knowledge at the time caused me to use the MyISAM engine, preventing relations and transactions (which I honestly didn't even know about at the time).
This job simply included building intranet applications using JavaScript, PHP, MSSQL, and MySQL. The majority of SQL work consisted of MSSQL queries, which I applied my knowledge of MySQL to. This work accounts for my first dabble into the MSSQL, MySQLi, and PDO PHP extensions. All JavaScript work was done for the absurdly cutting-edge web browser IE7. At one point we ended up upgrading to IE8, and there was much rejoicing.
12 months of pure, unadulterated, rifle-carrying boredom in which I got a lot of personal time to continue expanding my knowledge of web development. I did eat at Burger King sometimes, which was pretty cool.
I started out as a salesperson, cold calling and calling interested leads. After a while, the whole socially awkward thing proved my skills as a salesperson entirely subpar, so I was moved to web development. My tasks included building nickolsdirect.com from scratch, design and all. It included a PHP backend, and the design was based on absolutely positioned elements (cutting edge, I know). This website accounts for my first dabble into both AJAX and MySQL. There was no real structure to the PHP code to speak of, and that was a downfall. The website has been changed entirely since I last touched it.
Nothing special here. During my internship, the Information Services department was outsourced to Perot Systems, so I worked under that company for a minute period of time. No real change in tasks from the previous, however I did feel cooler.
This was my high school paid internship. I was in charge of multiple tasks throughout the entire venture. These tasks included obtaining backup tapes from the servers and prepping them to be shipped to a remote location, answering help desk calls, transporting newer computers around the hospitals, fixing computers within each of the hospitals, data entry for the phone system, grading HIPAA compliance tests for personnel, and designing and building up portions of the intranet. I commuted between Lutheran Hospital, Dupont Hospital, and St. Joe Hospital.
So, this was back in the days of high school. I was in charge of building up leocma.com, which used the Mambo CMS (which is Joomla at this point, if I remember correctly). This was back in the newbie days of web development, so it was mainly messing around with the CMS and the layout, and adding minute bits of PHP where necessary, via the CMS. The site is currently down, I'm not entirely sure what happened to the whole bit.
This is what I do. This is what I love. This is my passion. People watch sports, play games, and do whatever in their free time. In my free time, I do this. I love finding ways to make the web better, and I love learning new technologies that do make the web better. I research all of this on my own. I am entirely self-taught, and very proud of my abilities and how far I've come. I've been doing this for 13 years and I will not stop.
I never will be the best. Best is a very subjective term which can only be defined by the person saying it. I can never hope to be the best. That said, I can hope to be the best I can be. I strive to expand my knowledge and better myself with every experience. Any criticism that is given is taken as constructive, as an opportunity to learn. I love learning.
I am a huge supporter of LGBT rights, and human rights in general. If you are not an LGBT-friendly employer or you discriminate in any way, do not contact me for any reason.
I am a strong proponent of the Oxford comma. I believe that not using it should be punished by being placed barefoot in a room full of Legos.