Web Development

This site is running a custom theme. Here's what I went through to create it.


DigitalOcean DDNS

Years ago, when I first bought nitkin.net, I thought it'd be pretty neat to give my home server a domain, say, home.nitkin.net. At the time, IMeanWebHosting handled DNS through CPanel. CPanel doesn't have an API to update DNS records, so DDNS was a long shot. Instead, I wrote up a little script that'd simply track my home's IP address, and figured I could update the records by hand when things changed. (As it turns out, RCN never changed our IP in the 2 years that home.nitkin.net was up for, so the whole DDNS thing was entirely unnecessary. (That's all back here, along with some introductory material.)

But times change, people move, and shared servers are outgrown. I graduated from school and moved out to Colorado (anyone want to hire an electrical engineer who's pretty good at website stuff and Linux?), and switched hosting providers.


When I was setting this website up, I ran across a Wikipedia article on domain hacks. That's the official-sounding version of when a top-level domain (TLD) is part of a website's name. Things like who.is or blo.gs. It struck me that I could use India's TLD, .in, to shorten my own website's URL. I ran a whois search and it was availiable. Then it wasn't anymore. Someone had noticed my search and bought it to try and ransom the site.

That's how it works, I think. Some predatory whois sites automatically purchase domains searched, then offer to sell them back for some increased cost.

I checked again today, two years later, and it was available again! I'm not sure if I like nitk.in more than nitkin.net, but for now I have them both.

And, really, ben@nitk.in is a pretty darn cool email.

PHP Strangeness

A few days ago, IMeanWebHosting ran a system update. (I rent hosting space from them.) For some reason or another, the update reset PHP settings, including extensions, upload limits, and their ilk.

My website was replaced by a one-line message:

Fatal error: Class 'PDO' not found in /home/nitkinne/public_html/includes/database/database.inc on line 184As exciting as single-line errors are, they don't quite meet mettle for my website.

Image Overhaul

The big slideshow used priorWhen I set this site up, I decided to collapse all images used into a slideshow. Each post has a couple relevant images attached, which show up in a teaser slideshow on the mainpage and as a large image within the article. 

But the slideshow had two problems. First, when writing a step-by-step piece (like this), images couldn't be placed in a relevant section of the text. For a while, I resorted to referring to images by number, but I wanted pictures next to the relevant text. 


The player, pretheming. The pause and unmute buttons are hidden; others are entries in a plain list.
Unformatted, white, ugly list. Sorry,
  • .
  • For a final project in German, my girlfriend decided to compile translations and other work into a website. She thought about using other formats, like a paper, but decided that web would make a compelling presentation. It'll also be useful long-term to track projects and act as a supplementary resume. Lafayette offers a similar service, LaFolio, but it's heavily Lafayette branded, is provided by servers outside of her control, and will become dated shortly after graduation. (18 months away!?)

    So, she decided to make a website. First step was checking for a domain. A quick search didn't turn up anything great, so she decided to piggyback on nitkin.net for now. If, in the future, she does want her own domain, aliasing the current site to a new url will be simple enough. For now, she's helen.nitkin.net

    With hosting out of the way, I set up Drupal for her. The default themes didn't quite jive, so we made a Zen subtheme. As they say, imitation is the sincerest form of flattery: her site is almost identical to this theme. Different colors, but same two-column layout with the same left-column heading. 


    The time of day occupies almost the entire screen.
    I'm just not _that_ into the time of day.

    Roundcube is the email client for nitkin.net. In addition to being functional, it's very pretty (as opposed to, say, SquirrelMail) and extensible. I thought it'd be neat to add a to-do list to the client, and found a calendar while I was at it.

    Unfortunately, the calendar was very, very ugly. Not a poorly-styled sort of ugly. A something-is-wrong sort of ugly. (See before and after pictures, above.)

    Custom DDNS

    A few years ago, I set up a home server. It runs a few services - mostly MythTV and an FTP server. When I first set it up, I gave it DDNS through DynamicDNS (it was heartofgold.dyndns.com). I became fed up with their policies fairly quickly - especially their expiration rules, and replaced them with afraid.org DNS.

    Afraid.org offered free DNS, but the service also has an expiration. I missed a deadline, and my lovely domain (bam.boozle.co) went dark. But now, I have my very own address: nitkin.net, and all of its derivatives. I've wanted to give the home server the address home.nitkin.net for a while, and now I have time to fiddle.

    Every computer on the internet has an IP address which identifies it uniquely. But you browse using names, which aren't directly linked to machines. Essentially, when you type an address into the URL bar, various servers recursively evaluate it, looking for an IP address to connect to. For my URL, home.nitkin.net., the request is first passed to a root server. That server looks at the net portion of the URL, and forwards the request for home.nitkin. to the root net server. That server resolves nitkin to a machine owned by IMeanWebHosting, and asks that server to resolve the last part of the URL: home. home resolves to the IP address of my home server, which is returned to you.

    (In reality, there's tons of caching going on. As likely as not, searches like en.google.com are common enough that the first server you ask has the IP saved.)

    To assign the name, I just needed to add an A (address) record to the nitkin.net nameserver. Adding the record is trivial. Keeping it up to date is harder.