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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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.…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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 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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…