Web developer

I've been building websites for more than twenty-five years... even predating the term "Webmaster". Now a full-stack web developer, 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 newer 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.
  • 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. Fortunately as web standards are becoming more... standard. It's no longer the frustration it once was.
  • Validation - Validating your code isn't as important as it used to be, but it's still good for resolving errors and better SEO.
  • 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 of my specialties on the web is video. Everything from the videography, to compression-for-web, to the use of the HTML5 video tag. I even built my own web video player that you can see used on my shared videos. My favorite feature of it is, when paused, you can go through the video one frame at a time with the arrow keys. One second at a time with shift-arrow.
  • SVG - Just about 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) & SASS

CSS3SASSHTML 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, floats vs "display: table" vs flex-box vs grids, pseudo-classes and pseudo-selectors, responsive web design, cool new properties being added all the time, it can get pretty complex. Fortunately, I know it all.

SASS is a preprocessor for CSS. It has some cool utilities to make writing CSS code faster like nesting, variables (better than stock CSS variables), partials, and minified output. It lets you write better CSS, more easily. These day, I use it for almost every project I build.

Javascript & jQuery

JavascriptjQueryIf 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 triggering animations and events, making AJAX calls, HTML5 media controls, geolocation, reading local files, changing the URL, timing actions, form validation, and leaving nice notes for my visitors in the console. There are Javascript frameworks that are starting to go mainstream like React, Vue, Ember, Angular, and others. Though the Javascript code you'll find on more sites than any other is the library called jQuery.

Due to new features in modern Javascript and features built-into javascript frameworks when used, jQuery isn't as needed as it used to be. As jQuery is just a library of handy Javascript functions, there's nothing that jQuery can do that regular JavaScript can't. Except speed of writing. jQuery is used heavily for AJAX, DOM manipulation and traversal, animations, binding clicks and other events, parsing JSON and XML, and so much more.

PHP

PHPPHP is the back-end that does the work and outputs dynamic content to the front end. I used Perl from 1998-2008, but learned PHP is much better for web development 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. There are a lot of PHP CMS's and frameworks like Wordpress, Drupal, Laravel, Symfony... all of which I've used, in addition to building sites from scratch, like this one. I even built my own media CMS which I use for the shared media section of this site. I consider PHP my defining specialty and would label myself as a full-stack PHP developer. Every website I've built in the last decade is built with PHP.

SQL/SQLite/Databases

SQLiteMariaDBMariaDBSQL 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/MariaDB, and PostGreSQL. One bigger project I did for the Daily Gazette merged several live databases together (all of which were either MySQL or PostGres) to eliminate the errors we were experiencing from redundant data. WordPress sites use MySQL/MariaDB, and I've built a hundred of those sites. Though most of my personal experience is with SQLite, which I like for the smaller custom sites, as it's super-fast to set up and deploy. Every website that I've built that doesn't have a CMS with a built-in database, I've designed with SQLite. I really like designing databases myself and in general using PHP's awesome PDO API for accessing databases. Though CMS's often have their own interfaces, Laravel uses Eloquent which I use and appreciate. Though to me it does just add another layer of complexity if you already know the SQL command you want to run.

Laravel/Symfony/MVC frameworks

LaravelSymfonyIn addition to building my own sites from scratch, I've also built a few using PHP 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. I like Symfony because it sets a common standard way of programming PHP which comes in handy especially when you have to work with others. Many other frameworks are built with Symfony components, and the one I settled on is Laravel. These days, Laravel is the framework of choice for many PHP developers, so that's what I chose.

Wordpress & Drupal

WordpressDrupalSometimes to build a less unique website fast, it's easier to use a Content Management System like Wordpress, or a Content Management Framework like Drupal. They both have a lot of the common taks handled for you, namely things like user authentication, content adding and editing, and URL routing. This allows you to focus more on the specifics that make your site unique, often being able to add already-written plug-ins and modules that do things that your site is looking to do. I've worked on over 100 Wordpress websites (it's a very ubiquitous CMS) and maybe a dozen Drupal sites. These days I'd either go Wordpress or Laravel though, if needing to build a site / web app.

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 REST calls. You can't do much building of web apps without knowing these formats well.

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.

Twig & Blade Templating

TwigA templating engine offers a clean way to create an HTML output filling in variables sent from another source, usually the controller. My favorite is Twig. It does a great job of separating the logic work from the presentation work. It's what Symfony uses, and at least Drupal uses it as well. Laravel uses Blade, which is similar, but I'm not as big of a fan of the syntax, and it allows PHP to run, which can sometimes be convenient, but it doesn't do a great job of separating the logic from the presentation then.

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.