There is one very simple, all-encompassing reason to hire me: return on investment.
My productivity is well above average. I have consistently impressed clients/employers with my ability to organize and simplify complex tasks, and to accomplish those tasks with extraordinary efficiency and accuracy. I communicate well with my team, and in every shop I've ever been in, all the way back to EKU's computer labs, all of the other coders around me have always looked to me for guidance and correction. I pursue my missions with purpose and intensity, relentlessly pushing the boundaries of technology, equipment, and myself. I don't just try to be an asset to my employers, I make myself indispensable. One employer, quite a few years back, said: "I wish I could clone you."
“I wish I could clone you.”
I studied Computer Science at Eastern Kentucky University, but of course formal education comprises just a fraction of my learning. While my education in computer science is a wonderful foundation, I have been adding to my programming skills continually, since before I even entered college. My skill set is always expanding as I pick up new technologies and techniques.
When I tested at a post secondary level in 7th grade, they gave me the Stanford–Binet Intelligence Scale and came up with 136, 2 standard deviations above the mean (2.4 σ > μ). That puts me in the 98.7775566587th percentile, making me 1 in 82 when it comes to processing logic. (A friend of mine insists that disclosing one's I.Q. is boastful, no matter how relevant it may be to the subject at hand, insisting "they can figure it out," and "you're just telling them you're an asshole." I maintain that this is a relevant fact when selling my intellectual labor. Hopefully you agree with me, not him.
Similar to the concept of "mechanical aptitude," I have a "technological aptitude." Me and computers just get along well together. I code in my free time for fun. This is what I do, and I'm damn good at it. I can sit down with a system and really get to know it quite quickly. I am also quite fast at finding and fixing bugs. Coding is a just a world I am very comfortable in, more comfortable than most.
In my ideal work environment, employees are respected and valued, and there is an established culture of using teamwork to accomplish goals.
Of course, the primary goal of employment is compensation. Gotta pay the bills, right? No matter how good a job might be otherwise, if the compensation isn't enough, then it just won't work. With my degree of skills and experience level, excellent compensation should be a given (don't want me worrying about my bills when I'm managing an important product launch, or resolving a crisis, after all). A good compensation package is a mix of excellent salary, health/dental/optical benefits for myself and my son, continuing education support of some sort, and enough paid time off that I am assured to get enough time to rest and relax with my family that I won't find myself wondering just what the heck I'm working so hard for.
But compensation isn't everything. It's also very important for me to be a valued and respected member of the team. My experience and knowledge provide me with a lot of insight and good ideas, and it's important to me that my input is valued and not ignored or dismissed out of hand. Similarly, it's quite important to me that my supervisors understand that my compensation is an investment, not an expense, and for the company to take an interest in my continued education is to both our benefit, not just mine.
In addition to the above, it is also important to me that the team I am a part of are all focused and dedicated to accomplishing the mission at hand. It seems too often that people get sidetracked, and prioritize things that are irrelevant to achieving the goals at hand. Politics and personal ambitions should not be allowed to interfere with getting the job done as efficiently and successfully as possible.
Finally, I'd greatly prefer a remote position for a couple of reasons. First, for simple comfort: my workstation in my house has been set up and tweaked over decades to provide me with the greatest comfort, ease, and efficiency of production. I am much more productive in my own environment with my own tools. Second, flexibility: not being tied up geographically provides a great deal of freedom as far as living where the costs are lower, and I'd be able to to split my living between the backwoods backwaters of Michigan (where my son lives), and somewhere more civilized.
Over the years, I've dealt with nearly every major platform/language/software. Lots of new technology emerging, and I've been working on picking up as much as I can. Really, as long as it's reasonably documented, there's nothing I can't become proficient in in a matter of days.
PHP is one of my favorite languages, despite all of its shortcomings and the disdain of some (mostly younger) developers. It's mature, stable, and for just about anything you want to do there's a function for it. Also, after so many years of constant use, I am very comfortable with PHP.
Microsoft's scripting environments, like all others, have their good and bad points. I prefer open source, but I've had a reasonable amount of experience with classic ASP, ASP.net, VB.net, C#.net, and the rest of Microsoft's bundle of proprietary software.
Java has never been a favorite of mine, but I'm competent in it. JSP is much the same. I've coded fairly complex flex apps into JSP pages, and combined with Flash/Flex, JSP can be pretty powerful (though you can use Flash/Flex with other server-side technologies, and I would).
I've coded several sites in the Common Gateway Interface. You just don't see that many anymore, though. While somewhat clunky, CGI let me code in Perl, another of my favorite languages. Of course, I would never code a new site using CGI, but I have no fear if I encounter a legacy CGI app.
“When debugging, novices insert corrective code; experts remove defective code.”
Linux is my preferred server OS. Ubuntu is my current favorite flavor, but I've worked with numerous distributions over the years. I really only use the command line when absolutely necessary. Most command line stuff can be done more easily via GUI tools. Some coders kind of sneer at that, but I see the console like the hammer in the age of the nail gun - sometimes it's the only thing that will work, so you have to have it, but you're gonna be using the gun 99% of the time.
Windows is my OS of choice for my PCs, having come up before every kid in the lecture had to have a Macbook Pro. Back when Mac was 5% of the PC population. Back when gaming on a Mac was iffy, and only high-end graphics people developed on Macs. Different world these days, but I have yet to ascertain any compelling reason to prefer Macs..
I've worked with HTML since the days of the <blink> tag, and HTML5 is pretty awesome. There are so many possibilities opening up with semantic tags, the canvas, local storage, service workers, and more, though I am impatient it's taking HTML5 so long to completely eliminate the gaping security hole that is Flash.
I've worked with CSS since the days of table based layouts. With CSS3, it's amazing to see actually responsive web pages, having come up through the days of fixed width and distasteful compromises (hacks) to accomplish what should have been simple things.
“Good code is its own best documentation. As you’re about to add a comment, ask yourself, ‘How can I improve the code so that this comment isn’t needed?'”
I started with Apache back in '99, and my host and I learned much together. For instance, I learned how easy it is to infinitely loop http redirects using an .htaccess file, and my host learned how to prevent dummies from crashing their servers with infinite redirects. Suffice it to say I've come a long way, and not all of my lessons have been learned from my horrible mistakes. Many have been from the horrible mistakes of others.
I've done considerable work with Nginx, and while I naturally prefer Apache, having worked with it for years and years, Nginx offers some considerable benefits, especially if you're expecting to need massive scaling. I've ssen talk of hybrid systems that use both, taking advantage of the benefits of both, and that looks quite interesting.
IIS gets a lot of flak, being an MS product, but really, it's not a bad server. I've done considerable work with IIS, and it has some distinct benefits. I really appreciate some of the debugging and performance monitoring facilities it provides, and it offers some really good options as far as configuring sites and resources.
“One of my most productive days was throwing away 1000 lines of code.”
I've worked with Node a good bit, and it has some impressive strengths. I'm not sure I'm ready to switch over, but for some applications, it's the only real option. For instance, I set up a headless browser using PhantomJS and Node to capture screenshots of web pages and serve back the generated images. NoMinPostcards.com uses this same process to generate the postcards for print production.
MySQL has been my primary go to DB for years. It's really come a long way, and even for enterprise level applications, it's a viable choice. It's really my DB of choice, and I would need compelling reasons to choose otherwise.
SQL Server is an excellent DB, and if you're working on an MS platform and server, it's the obvious choice. It's a very mature and well-maintained DB, and offers significant advantages for enterprise applications.
Oracle has quite a reputation for enterprise DB performance, but in my experience, it's not as fast as MySQL, and every interface I used with it was a little clunky. But, despite its problems, it's a powerful system.
“The web already has a compile step. It's called Reload.”
Postgres is probably my least favorite DB engine. The available management tools are low-quality, and it always seems very slow. It gets the job done, but if you're going open source for your DB, MySQL is always a better option than Postgres.
Access, while a bottom-end DB, is certainly sufficient to handle small to medium data handling needs, and, being an MS product, it has some really nice interface software. I used to use it's schema designer to graphically design and share images of DB schemas I was going to use in other DBs.
I've run into DB2 here and there, but it definitely seems to be the least preferred of the enterprise level DB systems. Much of the work I've done with DB2 has been migrating to Oracle or SQL Server.
Mongo confuses a lot of people, mainly because it's not a relational database, as many think when they see the "DB" on the end of the name. For scalable indexed data storage, it's great, but if you want to relate any data in it, you either have to store it all together in one document, or use a script to process the relations, which is ridiculously inefficient. I've had to work with Mongo being used as a relational DB, and it's a nightmare.
“The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.”
I've worked with several cloud computing providers, including Google Cloud, AWS, and Rackspace. All of the systems I've worked with have been very easy to handle, really just a matter of following instructions. Some configurations can require a bit of finesse, but overall, most providers have removed all the mystery from standing up and maintaining cloud instances.
I've dealt with several JS “helpers” but there's just so many one could never really use them all. Ecma6 has defined a module loading system, but the major browsers haven't fully implemented it yet, so RequireJS, SystemJS, jspm, CommonJS, npm, Bower, Volo, RingoJS, Component, Ember.js, curl.js, and the others haven't gone the route of Flash yet.
My experience with these three has only been in reading about them, or reading code written for them, I haven't even done a Hello World script with these. Wait, with CF I've done a Hello World, but that's all. But I have no doubt I could get up to speed in days and have them mastered in weeks if need be.
I've never used any of the CSS preprocessors, such as LESS, Sass, Stylus, Swith CSS, CSS-Crush, Myth, Clay, DtCSS, CSS Preprocessor or Rework, but I'm aware of them and understand the concepts, benefits, and drawbacks involved. I've looked into them some, and have no concern about rapidly picking one or more up should the need arise.
“Linux is only free if your time has no value.”
I've dealt with numerous PHP frameworks, my favorit being Yii. Symfony2 is pretty god, as well, since they resolved a lot of the problems I had with 1. I've also used Codeigniter and Cake, and I've used portions of Zend, though I've not used the entire Zend package, since it's awfully bloated.
I've worked with a multitude of vendor APIs, some of the most notable being Google Maps, Google Charts, Authorize.net, USPS, UPS, Facebook, Twitter, and LinkedIn. The key to a good API is thorough and up to date documentation. If it's well documented, there's nothing I can't do with them. With poor documentation, it becomes a guessing game. I still get the job done, but it take a lot more time.
Programming in BASIC on my TI-85 is what got me interested in programming as a career. EKU used C++ as their language for CSC majors, so I have extensive experience with that. I also used a good bit of C, VB, Perl, Java, and ARM Assembly code while at Eastern.
Additionally, I have significant experience with SEO, web security, emailing systems, ecommerce systems, Flash, server/DB optimization, graphics design, and coding for mobile environments.
“The object-oriented version of 'Spaghetti code' is, of course, 'Lasagna code'. (Too many layers).”
Unfortunately, a great deal of the best work I've done over the last couple decades is locked in private intranets or behind paywalls, or has been lost in updates, or broken by less-skilled successors. I've tried to provide a decent selection of examples below, but some of the largest, best projects I've done are inaccessible. However, I do have a few small pieces up on github, and those are some of the better examples of my work.
This was a side project done for an employer, basically he had this site, but it was poorly designed and poorly coded, and wasn't making sales. I redesigned and rebuilt the site myself, and was pretty rushed, knocking the majority out in about 2 weeks (the rush shows in the code). The HTNL5 canvas editor is pretty cool, though the technology wasn't quite ready to go this far when I wrote it. There are far better solutions for this now.
This was a project for CSC 350, Fall 2004 at EKU. The instructor made a point of saying this would be good in our portfolios. So here it is. It's a compiler (written in C++) for a language I invented for the assignment. The compiler parses input files into token streams, building an XML parse tree. The result, if there are no syntax errors in the parsed code, is a 16 bit executable compiled in 16 Assembly code. There is also an IDE, written in VB.net, which allows users to write, edit, compile their code into assembly code, and assemble the assembly code into executable files.
Another example of my front-end work, the sites linked from this site (LabelValue.com, TamperSeal.com, and ShopScissors.com) were all my responsibility, from server and DB admin to creation of modules such as a related items module and a reviews module. I also consulted extensively with the firm that did the redesign of labelvalue.com, ensuring the new front end would snap-in nicely to the old back end, and helping to shape the look and feel of the UI.
“Rob did a great job for me. He was responsive to my requests, was able to timely implement any change I requested, and overall exceeded my expectations. He is who I will rely on for all future work, and I'm sure to recommend him to my friends.”
“Rob can take any idea I come up with and find the most efficient way possible to bring it to life on the web.”
While I'm primarily a coder, I've got significant skills and experience in graphic design. In my freelance work and at a couple of employers, I have been solely responsible for creating websites from start to finish, including requirements analysis and planning, wireframing and mockups, UX design, and every other step of the process.
Please use the form below to contact me, and I'll get back to you as soon as possible.