Programming for developers!

A little context:

I've been in programming for a long time.

I really like it. It's logical, methodical, and requires a great deal of foresight.

I've seen a lot of code.

The good, the bad, the ugly. I draw from the best and avidly avoid the worst.

I've written a lot of code.

It's surprising just how much code one can accumulate over a career. Chances are if it can be done, I've done it.


Languages

JavaScript

I started writing my own JavaScript in 2011. Before then, it was something I used sparingly. Currently, it's my most heavily used language.

I prefer vanilla code over most frameworks and 3rd party softwares (though I do use a few and have knowledge of many more).

JavaScript Coding Practices
  • I follow OOP principles
  • I understand prototypal inheritance
  • I write in CommonJS and deploy in AMD
  • I use objects with small property, logical names
JavaScript Tools

node

I've been using Node for over two years now, and I've reworked a lot of my software to use it instead of PHP.

angular

I like Angular fairly well. I use it from time to time, depending on the project.

express

I really don't like Express. I use it as my local development server.

mongoDB

I like Mongo. It's very handy!

jQuery

I still use jQuery for some things (mainly light object/data work).

Notable mentions

  • React: I understand it. I can use it. I like the core principle. I think it's best to use it only as needed.
  • Browserify: I still use it on occasion (prefer webpack).
  • Webpack: I use webpack for bundling and (on small apps) even the development server.

PHP

I'm well versed in PHP. It was the first programming language I learned, but these days I find it verbose and a little heavy on the overhead.

I built much of my initial infrastructure around Apache, MySQL, and PHP.

I also know my way around WordPress, though I've never really cared for it.

I still launch in Apache (my host does not support Node). I'm slowly transitioning from relational databases to ORM. I still use SQL from time to time.

I have used Symfony before, and I looked into Laravel a while back.

In truth, I have little interest in PHP anymore. I recommend Node where possible.

Dynamic Site Builder

The DSB was driven by PHP (1.0+) and RESTful JS APIs (1.5+) until v1.72. (covered in projects)

With the introduction of 2.0, the original PHP architecture has been modified to a "plug and play" class system using a PSR-4 compliant autoloader.

Although future PHP development will be as limited as possible, it has been updated to play nice with the new and improved backend driven by Node.

HTML

I've done quite a bit of work in HTML and the DOM. I've even developed code in both JS and PHP to easily create complex HTML elements with minimal fuss.

These days I use Jade almost exclusively for my HTML, Markdown for code documentation, and I briefly used HAML and Handlebars/Mustache before Jade.

I'm also somewhat familiar with Twig, Slim, and ERB.

CSS

I strongly dislike regular CSS. I've created my own framework libraries to keep me out of stylesheets as much as possible.

These days I use SCSS to make it all more programmatic. I can use other frameworks (such as bootstrap, boilerplate) if need be.

I would very much like to switch to a JS solution, but I hate LESS. I may attempt my own JS style engine in a year or two.

CSS Tools

sass

I prefer SCSS over SASS style, but I can use either.

compass

I'm familiar with Compass, but I do not currently use it.

materialize

I have used a custom build of Materialize. It has some pretty nice features!

bourbon

I used Bourbon briefly. I prefer it over Compass for smaller projects.

Things you should know about me

I follow a very object-oriented approach.

Modular, recursive, agnostic code. Yum.

I document almost everything.

How I write my code is very neat. It's beautiful, really.

I have my own code and "standards".

Of course I'm familiar with others, and can stick with them if need be.

Joel Test: 8 of 12

It does indeed work both ways.


  • Do you use source control?
  • Yes, Git.
  • Can you make a build in one step?
  • Yes, and segmented (via batch files).
  • Do you make daily builds?
  • No, no need on my own software.
  • Do you have a bug database?
  • No, bugs don't last long around me.
  • Do you fix bugs before writing new code?
  • Yes, I almost always unit test directly after drafting.
  • Do you have an up-to-date schedule?
  • Yes, I write TODO punch-lists daily.
  • Do you have a spec?
  • Yes, though loosely based and all in my head.
  • Do programmers have quiet working conditions?
  • No, sometimes it's distracting here (and I like music).
  • Do you use the best tools money can buy?
  • No, but it's more than adequate.
  • Do you have testers?
  • Yes, me!
  • Do new candidates write code during their interview?
  • Yes, I would require this.
  • Do you do hallway usability testing?
  • Yes, I always observe others using my GUIs to see the shortfalls.

Tool Preferences

These are just the tools I like to use. They're not must haves, but highly preferred.

  • SVN: Git(Hub)
  • IDE: Netbeans
  • OS: Windows 7

Workstation Preferences

These are similar to my own setup. They help me do my job at an optimal efficiency.

  • Monitors: 3, independent swivels, 1080p or higher
  • Memory: DDR3 or higher, 1333mhz or higher, 8gb min, 16gb okay, 32gb preferred
  • CPU: 4.2ghz+, 8 core
  • GPU: > 4gb GDDR5 256-bit PCI-E 3.0 CC 1200mhz or higher
  • Storage: 250gb+ SDD and 1tb+ HDD
  • Keyboard: Mechanical. Must have numberpad.
  • Input: DPI adjustable mouse, Weighted with macro/aux buttons preferred.
  • Auxillary: Laptop at least 3.2ghz+ 4 core with 8gb memory.

Sample code may be provided to qualified inquirers.

Contact me for details.