Web developer

I've been building web sites for more than twenty years... even predating the antiquated term "Webmaster". As such, I've become a pretty solid full-stack web developer, and have made a career in the field. While there are literally hundreds of different technologies/skills that can be used to build websites, I've listed a few of my personal best below:

HTML(5)

HTML5HTML is really the foundation of the web. It's the first code browsers receive when loading a web page. Because the basics of HTML are very easy to understand, it's easy to claim proficiency. HTML5 is what powers the modern web, and there is a lot to know to call yourself an expert. Here are a few of HTML5 technologies and skills that I know really well:

  • Javascript - JavaScript existed long before HTML5, but now some of the new elements (like progress) require JavaScript to work. There are also a lot of Javscript APIs in HTML5 which I use regularly including Geolocation, XMLHttpRequest2, History, and the File API. I discuss more about JavaScript below.
  • Browser compatibility - One necessary pain when developing websites is making sure the HTML, CSS, and Javascript work across all current browsers, and depending on the client's needs... legacy browsers as well. This particular site is tested across the latest versions of Chrome, Safari, Firefox, Opera, Maxthon, and Internet Explorer.
  • Validation - Not everyone validates their code, that is... making sure it follows all HTML5 standards. But I've seen a lot of those people have issues with their site that could easily be resolved if their code was valid. That is why all of my sites are validated, and I'm able to justify any rare piece that doesn't validate.
  • Semantically-correct coding - Writing code to be semantically correct (that is, only using the <table> tag for tables, etc.) is important for readability, SEO, validation, and screen readers for the impaired.
  • New and deprecated elements - Having developed websites for more than two decades, I've seen a lot of tags come and go. Knowing which are currently valid is important to building websites that will stay relevant longer in this ever-changing medium.
  • Video - One area where I'm definitely stronger than most web developers is video. Everything from the videography, to compression-for-web, to the use of the HTML5 video tag. I'm working on my own HTML5 video player - it's still not done, but you can see it by adding "?player=dan" to the end of a URL of one of my shared videos.
  • SVG - Now that browser support is here, any image that can be represented by vector, should be an SVG. They're significantly smaller, faster-to-load, and look sharp at any resolution... like the HTML5 and CSS3 logos on this page. And of course the "Dan Goodspeed" logo at the top of the page. SVG also offers interaction, like when you mouseover the top logo, it turns on outlines and changes color. You can't do that with a JPG/GIF/PNG. It also animates a little when you load the page.

CSS(3)

CSS3HTML tells the web browser what to display, and CSS tells the browser what it should look like. Again, on the surface, it's really basic. But once you get into the realm of cross-browser compatibility (which is admittedly getting easier with time), best practices, margins and padding, stylesheet vs embedded vs inline, clearing floats, pseudo-classes and pseudo-selectors, cool new properties being added all the time, it can get pretty complex. Fortunately, I know it all.

Javascript

JavascriptIf HTML and CSS are what tells the browser what the website should look like, Javascript tells the browser what the site should do. It's come a long way from the mouseover image-swaps from the 1990's. I use it for things like APIs (such as Google Maps and Analytics), HTML5 media control (like triggering play/pause for videos), geolocation, reading local files, changing the URL, timing actions, form validation, and leaving nice notes for my visitors in the console. But these days, the jQuery library is king, with its code being used on about 60% of the top million sites on the internet.

jQuery/DOM manipulation

jQueryjQuery is just an extensive library of pre-written functions for JavaScript. There's nothing that jQuery can do that regular JavaScript can't. Except speed of writing. I used to write all my own AJAX and DOM manipulation functions for the sites I built, and it was not a speedy process. When I finally researched jQuery and learned what it could do, it immediately became part of every new project I worked on. I use it heavily for AJAX, DOM manipulation and traversal, animations, binding clicks and other events, parsing JSON and XML, and so much more.

PHP

PHPPHP is where front-end and back-end development meet. I had been using Perl from 1998-2008, but learned PHP is much more my style and by 2011 it was my main programming language. I love the way it defaults to HTML output. There's a lot to PHP, and you can still be an expert at it without ever using 75% of what it can do. Wordpress is written in PHP, and I've set up maybe a half dozen Wordpress sites (like my personal blog, Your Niskayuna, Your Clifton Park, and a blog for my baby niece). I use PHP's PDO extension heavily for all my database access. I like using the PHPti library for basic template inheritance, which I use on this site, though I am starting to learn some MVC frameworks like Symfony (see below). I'm a big fan of the Imagick ImageMagick library, and use it heavily for the thumbnails on my shared media section. PHP's built-in session control makes tracking users a breeze. You may have noticed my logo up at the top slowly animated in on your first page load, but after that, it was just a little dash of animation. PHP session control! (with a dash of JavaScript/jQuery/SVG magic).

SQL/SQLite

SQLiteSQL is the general term for the language used to talk to many databases. It has a lot of flavors, of which I've used SQLite the most, followed by MySQL, and PostGreSQL. My biggest database project so far was for the Daily Gazette, where I merged several live databases together (all of which were either MySQL or PostGres) to eliminate the errors we were experiencing from redundant data. Everything is running smooth in the one PostGres database now. I've also used MySQL a few other times setting up WordPress sites. Though most of my experience is with SQLite, which I like for the smaller sites, as it's easier to set up and deploy. I've designed about a dozen SQLite databases, including the shared media section of this site, and the Prime Care Refer site (which also includes user management). You may notice that the searches are fast and accurate. And in 2015, I was hired by Spotlight Newspapers to write a program to export/transfer hundreds of thousands of records from dozens of tables in an Ellington PostGreSQL database dump to a SQLite format that the papers' web developers could read and import into their new CMS.

XML & JSON

XML & JSONWe've come a long way since storing textual data in tab-delimited text files. XML and JSON both offer ways to structure the data, and dynamically add optional fields which just can't easily be one in tab-delimited files, or even databases. It makes it a great format to pass around data between PHP and JavaScript. And now they both have easy ways to convert XML and JSON to their native data objects, it makes building dynamic websites so much easier.

LAMP stacks

LAMPThere are plenty of different types of server setups to host web sites, and the most popular, and the type I use the most, are called LAMP stacks... usually meaning Linux/Apache/MySQL/PHP. We already went over PHP and MySQL. Apache is my favorite web server software, and one of its coolest features is htaccess. It's a powerful directory-based settings file, and I use it for things like sexier URLs, updating URLs, password protection, and blocking IP addresses. And Linux... I couldn't imagine running my web server on any non-UNIX based system. I've been using some flavor of UNIX since the mid-90s. I'm comfortable with the command line.

Symfony/MVC frameworks

XML & JSONIn addition to building my own sites from scratch, I've also started learning frameworks. The Model-View-Controller is a methodology of building sites through separation of concerns. The model holds all the back-end functions, database calls, etc. The controller takes the URL requests, passes whatever is needed to the model, and then takes the data to the views, whose job is just to output the result in some orderly fashion. Symfony isn't quite an MVC, but rather a large set of components that offer oft-needed functions/tasks. There are often conflicts if you get your function libraries from different sources, so what sets Symfony apart is its ability to follow guidelines when building components so that they all work together, like a symphony (get it?). It is quickly becoming a standard in PHP applications, and several popular frameworks and CMS's such as Drupal, Laravel, Magenta, Joomla, and Silex are all built using Symfony.

Web/graphic/responsive design

I've been a graphic designer for as long as I can remember. I took Graphic Design in college, I've been the lead web designer for countless projects, I just love organizing data in a way that's useful and easy on the eyes. A useful web design trend that has really taken off the past few years is responsive design. It takes a lot more work, but when a site is built responsively, it uses media queries and other tricks to make the page content flow to the width of the browser window, from a big desktop display down to a smartphone. It's really a far better option than to have separate sites to maintain for each device size. You can feel free to try it out on this page, by changing the size of the browser window.

DRY Programming

A programming technique that can be applied to almost any language... PHP, JavaScript, even CSS and HTML is "Don't Repeat Yourself". The DRY principle is stated as “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.” The idea is to functionalize and abstract your programming. It makes the code neater, maintenance easier, and it just helps keep everything in sync. An easy-to-understand example would be changing the button colors on your site from green to red. It's easier to change .button {color:green;} to .button {color:red;} once than to find every button instance on your site and set their color that way (that's also a great example of why you shouldn't typically write inline CSS). The idea is even more important once you start working with real programming languages like PHP and JavaScript. A happy coincidence is the opposite of DRY... WET - "Write Everything Twice".

Search Engine Optimization

SEO is a tricky field, as what "works" is constantly changing. There are some general rules which always apply - writing validated semantic HTML, have quality linkable content, and a good title tag. But there is SO much more than this... using Google Analytics, quality canonical URLs, using H1 tags, the list goes on. And it's also important to note when you should put the extra effort into SEO and when you shouldn't (internal web applications, for example).

Contact me!

If you would like to get in touch with me about a potential job, just shoot me an e-mail at email obscured.