Where The Guardian advertises developer jobs

Screenshot of code from The Guardian website with WE ARE HIRING written in ASCII art
Screenshot of code from The Guardian website with WE ARE HIRING written in ASCII art

This evening I was reading an article by Giles Fraser on The Guardian website and I was intrigued to understand how they coded the drop-cap at the top of the article:

Screenshot of dropped cap
.drop-cap > .drop-cap__inner

So being versed in the ways of the web developer I highlighted the letter, right-clicked and selected Inspect (I’m using Google Chrome, other browsers are also available). This opens a code inspector where you can poke around the HTML, CSS and JavaScript that builds a webpage, and it even allows you to edit it in situ to better understand how it all fits together.

I smiled when I saw, at the top of the HTML code, written in a comment in a combination of text and ASCII art:

WE ARE HIRING

WE ARE HIRING

Ever thought about joining us?
http://developers.theguardian.com/join-the-team.html

What a terrific idea! Brilliant targeted advertising.

 

XAMPP Apache won’t start on Windows 10 — a fix

At work yesterday I discovered that the localhost Apache web server on my PC wouldn’t start; it was running XAMPP.

Each time I tried to start Apache from the XAMPP control panel I got these error messages in the console:

08:59:34 [Apache] Attempting to start Apache app…
08:59:35 [Apache] Status change detected: running
08:59:35 [Apache] Status change detected: stopped
08:59:35 [Apache] Error: Apache shutdown unexpectedly.
08:59:35 [Apache] This may be due to a blocked port, missing dependencies,
08:59:35 [Apache] improper privileges, a crash, or a shutdown by another method.
08:59:35 [Apache] Press the Logs button to view error logs and check
08:59:35 [Apache] the Windows Event Viewer for more clues
08:59:35 [Apache] If you need more help, copy and post this
08:59:35 [Apache] entire log window on the forums

Fix

Reinstalling XAMPP didn’t fix the issue. But this did, spotted on the ever-wonderful Stackoverflow:

  1. Press Windows + R to bring up the Windows Run… dialog.
  2. Type services.msc and click OK.
  3. Scroll down the list of services to find World Wide Web Publishing Service.
  4. Right-click it and select Properties.
  5. Change the Startup type to Manual.
  6. Click Stop and wait for the service to stop.
  7. Click OK.
World Wide Web Publishing Service properties dialog
This is the naughty culprit

That fixed it. Now Apache is running, as evidenced by the green light on the XAMPP control panel:

XAMPP Control Panel
Both Apache httpd and MySQL are running

Bulk install packages in Sublime Text

A couple of weeks ago I was setting up a new laptop and kept putting off installing Sublime Text (my code editor of choice) because I knew that it would also involve about fifteen minutes patiently working through my curated list of packages (add-ons / plugins), installing each one by one.

There’s got to be a simpler way, I suddenly thought. Sublime Text saves me so much time doing other stuff automatically, surely they’ve thought about this too.

I was right.

In fact, front-end developer extraordinaire Paul Irish asked this very question back in 2012.

How do it it

So, here is how to do it:

  1. Install Sublime Text (2 or 3).
  2. Install Package Control.
  3. Create a JSON file listing the "installed_packages" you want (see below) and save it to Packages/User/Package Control.sublime-settings.
  4. Restart Sublime Text and allow it to pick up and install the new packages.

Just be aware of any packages that need dependences that Sublime Text cannot install, for example Git or Zeal (offline documentation browser).

Save locations

You can easily find the save location by going to Preferences > Browse Packages.

On Windows the save location is:
C:\Users\[YOUR USERNAME]\AppData\Roaming\Sublime Text 3\Packages\User

Package Control.sublime-settings

This is my installed packages list from work and home; I keep a copy in Dropbox so that I can keep the two in sync.

The names listed are exactly as they are listed in the Package Control: List Packages list.

{
    "installed_packages": [
        "Alignment",
        "AutoFileName",
        "Autoprefixer",
        "Bootstrap 3 Snippets",
        "BracketHighlighter",
        "Color Highlighter",
        "CSS Color Converter",
        "CSScomb",
        "DevDocs",
        "Emmet",
        "GitGutter",
        "Handlebars",
        "jQuery",
        "JSHint Gutter",
        "Markdown Preview",
        "MarkdownEditing",
        "MarkdownTOC",
        "Package Control",
        "Placeholders",
        "Sass",
        "Search WordPress Codex or QueryPosts",
        "SideBarEnhancements",
        "Status Bar File Size",
        "SyncedSideBar",
        "Tag",
        "Theme - Minimal",
        "TodoReview",
        "Tomorrow Color Schemes",
        "View In Browser",
        "WordPress",
        "WordPress Developer Resources",
        "WordPress Generate Salts",
        "Zeal"
    ]
}

 

Needless to say, doing that made installing Sublime Text so much easier and quicker.

I will try to keep this list updated, as much for my own benefit as any one else’s.

GitHub repository

I have stored my most up-to-date settings in a GitHub repository: sublime-text-settings.

Writing to the Google Chrome console from PHP

Chrome Logger is a Google Chrome extension for debugging server side applications in the Chrome console.
Chrome Logger is a Google Chrome extension for debugging server side applications in the Chrome console.

This afternoon I finally got round to figuring out why my workaround for changing the Divi projects custom post type to anything you want had broken in Divi 2.5.

In the end it was deceptively simple. I’d set the priority values for the add_action($hook, $function_to_add, $priority) and remove_action($hook, $function_to_add, $priority) functions too low.

WordPress uses the priority value to determine in which order particular actions are run. The default value is 10. The higher the value, the later it will be executed.

While I was investigating this, it crossed my mind that it would be really useful if I could write values to the Google Chrome console in the same way that you can when writing and debugging JavaScript.

It turns out you can, using Chrome Logger plus the ChromePhp library.

With the Chrome Logger extension installed and enabled on the tab I wanted to write to, all I had to do was include the library and log some data. Like this:

<?php
    include 'ChromePhp.php';
    ChromePhp::log('Hello console!');
    ChromePhp::log($_SERVER);
    ChromePhp::warn('something went wrong!');
?>

Very useful. And as well as a library for PHP there are also libraries for

  • ColdFusion
  • Go
  • Java
  • .NET
  • Node.js
  • Perl
  • Python
  • Ruby

You can find details on the Chrome Logger website.

 

New website for Pittenweem Properties

Pittenweem Properties: self-catering in the East Neuk of Fife
Pittenweem Properties: self-catering in the East Neuk of Fife

Over the last few months in the evenings and at weekends, I’ve been working on redesigning the Pittenweem Properties website for friends here in Anstruther. The site launched a couple of weeks ago.

Pittenweem Properties offers high-quality self-catered holiday accommodation and property management services in and around Pittenweem. They currently manage properties in Carnbee just outside Anstruther and Pittenweem. But their portfolio is growing and for good reason — the properties they own and manage are to a very high standard and in a beautiful part of Scotland: the East Neuk of Fife.

WP Booking System

The site was quite fun to build.

We used Trello for communication and project planning, WordPress (of course!) as the content management system, and the Divi theme from Elegant Themes which allowed me to very quickly design and build the site. I also changed the built-in projects custom-post-type to properties using the method I blogged about in March: changing the Divi projects custom post type to anything you want.

For the booking calendar we turned to a premium theme: WP Booking System which we found intuitive and offered most of the features we needed:

  • Multiple booking calendars.
  • Submit booking requests via form.
  • Display anywhere (on page or within widgets) using a shortcode.
  • Customisable display features, including splitable legend for check-in and check-out).

If this plugin had also allowed online payments, say via PayPal, then it would have been absolutely perfect but as it is we’ve been really happy with the functionality and usability of this plugin.

There is a free version of the plugin, but it offers only one calendar and has customisation limitations. The premium version costs only US $34 (approx. GBP £21.50).

Next…

While the site is now live there are still a few bits and pieces to do, such as keep an eye on analytics data and try to improve search engine rankings.

Websites are never really finished, are they?

It was a fun project to work on. Time to focus on optimising family finances and admin, and cracking on with writing my book.