SPUDSTALKER

My List of Web Tools

Table of Contents

  1. A Static Site Generator
  2. GIMP
    1. Caveat
  3. httpd(8) or Another Light Web Server
  4. Let's Encrypt
  5. FastCGI
  6. m4
  7. awk
  8. sed
  9. vi
  10. Conclusion

The following is my list of web design tools.

This isn't your nephews list of tools (ha ha, my play on the "grandfather's *" snowclone), it's my list of things you can use to create websites (like this one) with minimal headache... of course, if you have a nice *nix/*bsd background.

Instead of trying to install and maintain an enormous collection of bloated web authoring tools, why not use what you already have installed?

This list is essentially in descending order of binary size, with exceptions... you get the idea.

A Static Site Generator

This website has been maintained over the past several years in a few different static site generators, both homemade and prepackaged: from simply rewriting my ancient PHP script which served the site from a SQLite database to generate static pages offline; then to Jekyll; to a set of awk scripts I wrote; to hugo; and now, simply using a program I wrote in go to generate the site.

When I adopted the "offline generation" workflow in 2014 I had no idea how popular static site generators would become for simple, and even not-so-simple, websites. Pick one you like and focus on getting things done instead of server-side scripting.

GIMP

Face it. Modern web design usually has some kind of graphic element, although I salute those who refuse to adapt (Cryptome).

GIMP has the benefit of being free (of course), and available on almost any platform.

Along with that, it's not too terribly difficult to learn to use (especially if you've used any raster editor beyond MS Paint before), and there are innumerable tutorials floating around on the tubes.

Caveat

I advocate not overdoing it. Back in 2007-2010 (approximately... no definitive references here), there was a disturbing prevalence of things like HTML image MAPS for navigation, and we all get annoyed with websites which are basically nothing but images inside of hyperlinks split apart and merged together in HTML.

So, use it to add a little spice, but don't dump red pepper flakes into your website.

httpd(8) or Another Light Web Server

I use lighttpd nginx at the moment, since I'm confined to the linux server platform (again, at the moment). But OpenBSD's httpd(8) should be commended for its simplicity and light weight, along with being more capable than the httpd's designed for embedded applications and running on toasters.

For instance, the configuration for adding SSL to your site isn't buried in the documentation... it's listed front and center on the server's (very small) man page.

There are, however, instances where you can go even simpler. If you allow file uploads, for instance, you can use a smaller, simpler httpd for serving those files without the security implementations of running a server with PHP or some other scripting language with an eval() function on the same server that delivers this user-generated content.

For local development, when that pesky file:/// protocol get in your way (XMLHttpRequests, cookies, etc.), it's also handy to have something like thttpd installed, so you can simply move into the directory your files are stored and run it.

Let's Encrypt

Any platform can run letsencrypt or certbot, and integrate (completely free and flexible) SSL for the HTTPS protocol. This site is a good example. Set up a cron job, create some backup RSA keys, use the --webroot option for easy installation, and set the response headers for public key pinning... easy.

FastCGI

Whether you want to run PHP scripts (ewwww) or your own CGI scripts, the FastCGI protocol can improve their performance (with the exception of PHP vs. built-in modules, which come with their own problems ((a huge list of dependencies, not the least of them))), and keep your server from running thousands of processes for the same login/guestbook/mailer form.

Devlopment for FastCGI is well beyond the scope of this article. To start with, read the specification.

m4

People don't give m4 the credit it deserves. I played with it when considering what to maintain this site with, and abandoned it merely because awk was slightly more flexible (up for debate).

The first thing you should understand about m4 is that quoting is the most important concept you can understand. Get this down first if you feel like using it.

awk

My favorite tool/scripting language. Flexile, fast, and exceptionally suited to working with text processing, unlike most general purpose languages people use.

sed

Even faster, although slightly less flexible. I use it in addition to awk, and, like most *nix nerds, to make sense of humongous error logs or STDOUT's.

vi

Obviously, you need a text editor.

Conclusion

This is by no means an end-all list. Not everybody is comfortable with using these tools.

However, this is mostly what I use, and haven't had (too many) problems yet.