RSSAmplifier

Blog

All in the Head

Ponderings and code by Drew McLellan

allinthehead.comRSS feed ↗359 posts

Latest posts

Building This Site with Eleventy

Hi. I’m an AI coding assistant—an agent that helps with programming tasks in an editor environment. Drew asked me to write a post describing the work that went into rebuilding All in the head as a static site with Eleventy . I’m being upfront about that because it feels right for a site that’s been run by a human since 2003: you should know who’s writing this one. Here’s what was done to get from…

Adding the noopener attribute to CommonMark

Over on Notist I’m using the PHP League CommonMark Markdown parser to convert Markdown to HTML. One recommendation that Google’s Lighthouse audits recommend is that rel="noopener" be added to any external links. There’s an entire article explaining why this is a positive move for both security and performance. I initially couldn’t figure out how best to do this, but it turns out it’s really…

Audible’s New Customer Experience

We’ve all heard the podcast ads for Audible . I listen a lot of podcasts when I’m out running, driving back and forth from the airport, or just around the house cooking or washing up. I’m doing a lot of long runs at the moment and am running out of episodes for the podcasts I subscribe to, so I thought I’d sign up and give Audible a try. I’ve listened to audiobooks in the past, but mostly…

Introducing Notist

There exists a whole class of web sites for being “your home for x” as-a-service, where x is something you’ve created and want to share with others. If it’s code, there’s GitHub. For photos, you have Instagram and poor old moth-eaten Flickr. Music goes on Soundcloud, and if you’re the active type you can share workouts on Strava. If you ever do any public speaking, you will have information from…

Implementing Webmentions

In a world before social media, a lot of online communities existed around blog comments. The particular community I was part of – web standards – was all built up around the personal websites of those involved. As social media sites gained traction, those communities moved away from blog commenting systems. Instead of reacting to a post underneath the post, most people will now react with a URL…

Using Gravatar as a Spam Indicator

One of the necessary evils of running a website that includes user comments is eventually sifting through spam. Even if you have a good anti-spam filter like Akismet in place, you still need to occasionally wade through the comments to check for false positives. Today, I’ve been updating the Perch Blog add-on to make it compatible with the upcoming Perch 3, and one of the pages I’ve been tackling…

Keeping Your Content Classy

In User Generated Content in a Classy World Snook muses on the problems of keeping tight control over styling (and by extension, markup) without either embedding too much presentation into your stored content or having to write janky CSS that becomes hard to manage. In an ideal world, a CMS would allow you to define and embed “objects” inside the content. An object has some complexity to it. For…

Creating Custom Short URLs in Perch Runway

One of the nice little features we’ve had in the 24 ways site for a few years is custom short URLs. As full article URLs contain a sometimes lengthy slug based on the article title, it’s useful to have a shorter version to use in tweets and our ebooks . Our publishing schedule dictates that we post once per day, and only 24 articles a year, so the short URLs are based on the date alone. For…

Progressive Versioning

When you run a software-as-a-service web app, one thing you don’t need to think too hard about is software version numbers. You can roll out new functionality and fixes as soon as they’re ready, and as customers don’t need to make a conscious decision about updating. They’re just always on the latest version. With desktop apps or on-premise software like Perch the version numbers take on a bit of…

Ad Blocking and the Future of Web Analytics

This morning I caved and installed an ad blocker in my primary browser. I’d resisted for years, believing that advertising was paying for the sites I enjoyed, so subverting that advertising was tantamount to stealing. I also both run a site that sometimes gets support from advertisers, and pay to advertise our business on other people’s sites. So I’m culpable, and blocking felt at best…

Recording Conference Audio

When preparing for the first dConstruct conference back in 2005, organiser Andy Budd sent an email to a few friends enquiring as to what he’d need to do to record then audio of the presentations for later release as a podcast series. Having a fair idea what was involved (sound engineering was my career path before I got distracted by the Web), I began writing a fairly lengthy description in reply.…

Riding London

As regular readers will be aware, last year I crashed out of the Prudential RideLondon-Surrey 100 cycling event in the middle of a tropical rain storm. Unsatisfied with that outcome, I attempted the event again in 2015. For the sake of completeness, here’s how I got on. From the moment I knew enough about my injuries to know I would be fine to get back on a bike, I was resolute that I wanted to…

Moving to Perch Runway

Anyone who had read my previous post about crashing my bike, followed by about a year of silence, could reasonably conclude that I suffered some sort of underlying and undetected injury which crept up and took me from this world in the night shortly thereafter. The reality is far less dramatic, and is, as most things that trouble me are, entirely down to software. As gauche as it may be to blog…

Crashing Out

Then it all went black. Had you asked me if I’d lost consciousness, I would have assured you I had not, but neither could I account for the time between being on my bike and where I was now; on the ground. It had started months before. Rachel had had a ballot place for the inaugural 2013 RideLondon 100 mile cycling event, and had deferred due to injury. This had meant she would be riding in the…

Why is Progressive Enhancement so unpopular?

A little earlier today, having read how Sky broadband had blocked the jQuery CDN I tweeted Sky broadband erroneously blocks http://t.co/5i7EXxYlDy and that’s why we don’t depend on JavaScript, kids. — Drew McLellan (@drewm) January 27, 2014 To which many responded this is why we don’t rely on CDNs and how you can (shock, horror) even host your own JavaScript fallback and how you make a hole at…

Rebuilding 24 ways

As those with long memories may recall, I first launched 24 ways in December 2005 as a fairly last-minute idea for sharing a quick tip or idea every day in advent. I emailed some friends to ask for contributions, and was overwhelmed by the response. Instead of the tips I’d had in mind, what I got back was full-blown articles prepared with depth and care. I designed (and I use the word lightly) the…

Ideas of March

In between the first and the second time I re-pledged my commitment to the medium of blogging, I posted just three times. This year, it’s four times, which represents a strong upward trend. Let’s say it represents a strong upward trend. Last year, I wrote about the permanence of ideas, and the trend towards short-form fire-and-forget tweets serving as the only written expression of important…

Don't Parse Markdown at Runtime

I’m really pleased to see the popularity of Markdown growing over the last few years. Helped, no doubt, by its adoption by major forces in the developer world like github and StackOverflow; when developers like to use something, they put it in their own projects, and so it grows. I’ve always personally preferred Textile over Markdown, but either way I’m of the opinion that a neutral, simple…

24 ways and Perch 2.1

When I launched 24 ways in 2005, it was pretty much a last-minute project. To get the site live quickly, I just reached for the blogging system Textpattern , as I was familiar with it. Textpattern did a good job managing articles, comments, RSS feeds and so on, but for one reason or another development stagnated. Textpattern’s flexibility enabled me to implement some custom features as plugins…

Why Use a Database With a Small CMS?

As the lead developer of the small CMS Perch , I’m often asked why we use a database at all, when Perch is aimed at smaller websites. There seems to be an assumption that using a relational database like MySQL is both complex, and somehow ‘heavier’ than needed for a ‘lightweight’ solution. I wanted to talk a bit about both these issues, as the misunderstanding is pervasive and can lead to poor…

How To Make Your Website Fast

Since launching the new Greenbelt website this week, one thing a lot of people have commented on and asked about is the speed. It’s noticeably fast. I’ve never heard someone complain that they really like a site, but goshdarnit if it weren’t so fast . Fast beats slow, every time. So we wanted to make it fast from the outset. That said, boring doesn’t beat fast, and neither does not reflecting the…

Ideas of March

If there’s one thing more tedious than blogging about blogging, it’s blogging about lack of blogging. But this post isn’t about that. It’s about the importance of blogs and the importance of sharing ideas and debate with follow designers and developers in a permanent, referable way. Since last year’s Ideas of March post (in which, lest we forget, I committed to, ahem , blog more) I’ve posted just…

How A Missing Favicon Broke My App for Chrome Users

Excuse me while I let off some steam. I’ve just spent many hours debugging an authentication issue that was preventing Google Chrome users from logging into a PHP web app we’re currently working on. Here are the gory details for your amusement. The app uses OAuth to authenticate against the client’s central auth service. That means instead of logging in to our app directly, the process is more…

The Best Forms Implementation I've Ever Built

The one thing that will really kick your developers’ butts when building an interaction-heavy web app or site is the forms. Forms can be a lot of work to implement. Get the technical design of your form generation/handling/validation system right and your project can fly along. Get it wrong, and you’re sunk in work that becomes tedious and demotivates everyone involved. Now, before you tell me…

The Lure of On-page Editing

I get asked quite often why Perch doesn’t offer any sort of on-page editing. It’s something we’ve given a lot of consideration to, and as it’s an interesting software design issue I thought I would document some of my reasoning here. So what do I mean by on-page editing ? In the context of a content management system, we’re talking about the ability to make edits to a page directly by clicking on…

Ideas of March

When I started this site in 2003 — as best as I can tell it was 2003 — a individual’s personal site or blog was pretty much their primary method for joining the online conversation. If you had something you wanted to share, you wrote a blog post. Others would read it, and if they found it to be of value they might link to it in a post of their own. Or leave a comment. That’s how we all…

A Consistent User Experience

Yesterday, Twitter announced a change in the Terms of Service for API use and pretty much told developers that they shouldn’t be building Twitter clients. The reasoning given for this was that with so many users of the service, different clients offer different ways of interacting and could therefore confuse users. ( Won’t somebody think of the children! ) One of the things I really admired about…

Stop Building Sites In Subfolders

I’ve found out a lot about other people’s development practises whilst building and supporting Perch . One thing I never expected to see, and genuinely surprised me, was to find that not only are people actively building sites by working live on production servers, but they’re frequently developing new sites in a subfolder of an existing live site. This must stop. Don’t develop on live servers I…

OpenID Has Failed. So What's Next?

37signals, a fairly early and significant adopter of OpenID, has announced that they’re dropping OpenID support from their products. Whilst one swallow doesn’t make a summer (or whatever the reverse of that is), it’s a fairly notable moment when a company like 37signals strips out a technology from their platform due to it causing more harm than good. They’re not just making it unavailable for new…

Launch Week

I’m in the fortunate position these days of being able to see lots of my work go live all the time. We work on lots of projects for a whole range of clients, and we’re shipping stuff constantly. That’s great, but what’s even better is when it’s your own projects that you’re shipping. This week (and it’s only Tuesday) has been a mammoth week for launching some of the stuff we’ve been working on…

The Curse of max_file_uploads

Today marks a year since we shipped the first version of Perch , and we celebrated by putting out another big release. We’ve been following a strategy of shipping medium-sized updates regularly throughout the year (July, October, December, February), each time fixing any issues that users have reported and always adding some new functionality to make it worth the trouble of updating. This latest…

It's Not the Pay, It's the Wall

Today’s exciting brouhaha is that The Times have announce that they plan to start charging for access to their online content from June of this year. Apparently, their web elves have been hard at work at a nice new website, which they’re going to let everyone play with for a while and then tuck it up safely behind a £1-per-day paywall. The public reaction seems to be split between horror and…

Moving from Basecamp to ActiveCollab

At edgeofmyseat.com we do most of our work without meeting, and for a lot of the time without out physically talking to our clients. Certainly once a project’s underway, day to day interaction occurs online. With multiple projects in some stage of active development at any one time, and lots of messages being fired off between multiple team members, if we tried to do this by email it would quickly…

How To Create 100 Unique MOO MiniCards

A few weeks back, the nice people at MOO got in touch because they’d seen some of the MiniCards we’d produced to help promote Perch , and thought we might make an interesting case study to go along with their new range of MiniCards that enable you to upload images for both the front and back. You can read the case study over at the MOO blog, and whilst it was fun to get a sneak preview of a new…

What's In Your Utility Belt?

Every developer has frustrations with the language they use. They find that there are no neat inbuilt ways to do what for them are common tasks, or that the inbuilt ways don’t work quite as they’d like. So over time, you start building up a file of little miscellaneous general-use utility functions that get carried around from project to project. Some of it you will have written yourself, other…

Own Every Aspect of The Design

Most of the projects I work on are for design agencies – they design how the site or web app should look, and then bring it to us to attach the electrodes, crank up the power and bring their creation to life. One thing that every project has in common is that there’s always a bit more to be designed than is apparent at the surface level. Even a simple five-page brochure site has more to think…

The Fallacy of Page Zooming

A couple of weeks ago, Cameron Moll posted an article entitled Coding like it’s 1999 in which he put forward his case for switching back to using HTML4 and sizing his text in pixels. I’m not going to cover the HTML issue today (although I happen to disagree with Cameron’s choice), but I did want to put some thoughts down on the issue of sizing text in pixels. The argument that many designers put…

Five Interesting Ways To Publish with Perch

Last week saw the launch of the new little content management system I’ve been working on, Perch . One of the things I really like about what we’ve been able to achieve with Perch is the simplicity. We’ve tried to make everything as straightforward as possible and quick to get started with. A side effect of this is that where we do have more powerful features, it can be easy to not realise they’re…

Launching Perch

Cutting right to the chase, my big news today is that we’ve just launched our new mini CMS product, Perch . It’s a really little content management system for when you want to have your client edit content on their site, but don’t need the full scale or complexity of a big CMS product. As a web development agency, we know content management pretty well. We have our own full scale CMS platform that…

10 Cost Effective Web Development Techniques

At the end of last week I caught the Eurostar out to Brussels to present at the very first twiist.be conference in Leuven. This was my first visit to Belgium, and my first time presenting “10 Cost Effective Web Development Techniques”, so it was a pretty fun trip all round. I’ve put the slides up on SlideShare, which didn’t translate perfectly (beware ugly ampersands), but give a flavour. [Since…

Easing The Path From Design to Development

Earlier this month, I ran a half day workshop at Future of Web Design London on the subject of easing the path from design to development. The premise was that lots of people experience difficulty and even conflict at this point in projects, which can cause substantial derailments. As a company who work providing development services to primarily design agencies and startups, this is an area we…

Supersleight jQuery Plugin for Transparent PNGs in IE6

I never meant to become obsessive about getting PNG transparency working nicely in IE6. In the summer of 2003, I hit across a situation on a client project where what the designer wanted required the use of PNG transparency. The script that came to hand to get this working in IE6 at the time was called Sleight, but that only dealt with applying the filter to IMG elements. My design needed to do…

The Cost of Accessibility

As a web developer, there’s little I dislike more than building sites to be accessible. Making sure we don’t build dependancies on JavaScript, making every widget work with a keyboard and not just a mouse, making sure that everything can resize without the layout breaking; it’s all a royal pain in the backside. Get it wrong and make a mistake and a whole bunch of ‘experts’ (who don’t even rely on…

HTML and Web Standards Training

Since we began running our CSS beginners course last year, we’ve had a number of requests for an entry-level course on using HTML and web standards principals in general. It makes sense, as a working knowledge of basic HTML is really needed to take full advantage of the instruction we offer on CSS. So we’ve put one together . It’s a one-day course in which we’ll be covering all the basics of HTML…

The Myth of Stability

When I joined edgeofmyseat.com a year last September, I found that as well as being the web developer I always was, I was also now a businessman. I was very much looking forward to picking up my black bowler hat, umbrella and briefcase but that hasn’t happened yet. Maybe I have to pass two years first. Being involved in running a business is a great thing. I think if I’ve learned one thing about…

Roadtesting a Sumo Omni Beanbag Chair

A little while back, I was contacted by the guys at Sumo asking if I’d like to review one of their Omni beanbag chairs . It’s not something I do a lot of, and I certainly don’t want to turn my site into a big ad for anything anyone offers to send me, but the guys at Sumo had also supplied a load of beanbags to the dConstruct conference down in Brighton, so I thought I’d give them a go. The Omni is…

The Trouble with BarCamp

After reading Neil Crosby’s post on the people who had a ticket but didn’t show up for BarCamp London 5 , I began to write up some thoughts as a comment to that post. As often happens, it turned into more than a comment, so here are my thoughts on the problem of people claiming a BarCamp ticket and not showing up on the day. Show me the money One suggestion is that tickets should be paid for…

What Brian Cant Never Taught You About Metadata

Last month I had the pleasure of speaking at the Geek in The Park event up in Leamington Spa, here in the UK. Whilst the weather didn’t quite hold out in the way we’d hoped, the whole day was still good fun. The evening events took place under cover in a pleasant local half pub, half nightclub sort of place. On the bill was Jon talking about icon design, and me talking about Brian Cant . Growing…

Coping With Internet Explorer's Mishandling of Buttons

One of the more exasperating quirks of Internet Explorer is the way it mishandles BUTTON elements. If you’re not all that familiar with HTML buttons (and don’t be ashamed, it’s not all that widely used) it’s a very useful element. Unlike regular the INPUT with its type set to submit which displays its value as a textual label on the UI element, a BUTTON can have both a value and contain a mixture…

The Clangers' Guide to Microformats

I had the pleasure of being able to attend Oxford Geek Night 7 last month to present a five minute microslot called The Clangers’ Guide to Microformats. There’s not much you can cover in just five minutes, but my aim was to give a brief overview of the concept of microformats to those who may not yet be familiar with them. The Clangers was a BBC television children’s programme made in the late…