PHP UK is a fantastic developer conference which I have enjoyed attending many times in the past. This year was a little different, as I took to the stage for the first time!
Two Factor Authentication is an important method for ensuring account security. When I added it to my work Slack account, the mobile app refused to let me back into my workspace. Fortunately, there's a fix, though it does involve jumping through a few hoops!
Paywalled cookie banners are a new twist on the cookie pop-ups we've all come to know. But what exactly is the twist? How do they work? Are they even legal?
Idempotency is a critical concept to be aware of when building robust APIs, and is baked into the SDKs of companies like Stripe, Paypal, Shopify, and Amazon. But what exactly is idempotency? And how can we easily add support for it to our Laravel APIs?
Discover how to tackle Laravel's testing challenges in multi-database scenarios. Say goodbye to the notorious 'Lock wait timeout' error.
I recently appeared on Evervault's Decrypt podcast, and had a great time! We talked about the importance of developing empathy for users, product roadmap challenges, issues adding AI to dev workflows, and managing the transition from a development role to a leadership one.
Learn to seamlessly integrate YouTube videos with sleek icons and optimised loading techniques. Discover best practices for faster, smoother video integrations!
Value objects are a great way to add safety and consistency to a dynamically-typed application, while also improving readability and testability.
Effortlessly collect SEPA bank details using Stripe and Cloudflare Workers. Learn how to streamline the process in this serverless tutorial.
Discover how to effectively A/B test content on social media, even with the challenge of link preview caching. Boost engagement with the right headline and image combinations.
Rolling averages are perfect for smoothing out time-series data, helping you to gain insight from noisy graphs and tables. This new package adds first-class support to Laravel Collections for rolling average calculation.
Lazy loading of images helps to radically speed up initial page load. Rich site designs often call for background images, which can't be lazily loaded in the same way. How can we keep our designs, while optimising for a fast initial load?
How can we best showcase a portrait image in an application designed for landscape images? TV news has the answer! With a small bit of CSS, we can achieve an eye-catching "blurred background" effect.
Multi-tenant applications in Laravel typically detect the tenant from the URL. Queues and artisan commands are powerful tools, but have no URLs attached. How do we make them tenant-aware?
It's an increasingly-common experience for online publishers to discover that their content has been stolen wholesale, and posted on a different domain without permission. What can you do if this happens to your site?
Google drive is a handy place to store videos. Often those videos need to be shared and embedded elsewhere, but finding the embed code for these videos isn't nearly as simple as with Youtube or Vimeo!
Fonts are one of the largest resources on any page after images, and can have a big impact on CLS when they vary in size from the underlying system font. Font subsetting allows us to radically shrink font file sizes, speed up initial page loads, and improve our page speed scores.
Back in 1990, Ireland qualified for the men's football World Cup for the first time. It was a very exciting time for the whole country, though as an eight year old I wasn't quite up to speed on the finer details of why...
Responsive ads are a great way to maximise publisher revenue from display ads. Not knowing the size of the ad to be served in advance can have a big impact on Cumulative Layout Shift (CLS), and, ultimately, Google rankings. How do we maximise revenue while minimising CLS impact?
Google Analytics is a very powerful tool for understanding the source of web traffic. A common source of confusion is the "Direct" channel source - where does this number come from?
Google's Two-Click Penalty is intended to protect users and advertisers from accidental clicks on ads. When does Google apply the penalty, and how can we avoid it impacting our sites?
Core Web Vitals are a series of metrics which attempt to put an objective measure on web page performance. They cover the speed of site loading, the way the page jumps around while loading assets, and how quickly a page can be used by a visitor. In short, they attempt to quantify how fast a page "feels". These metrics will be used in the Google rankings for a page, so what are the common optimisations we can make to ensure our pages score well?
Privacy regulation requires getting user consent before making analytics calls. A common question of site owners is "how many users do I have who are on site but not allowing cookies? The Measurement Protocol API is a way we can estimate how many users fall into this grouping.
With the release of Android Lollipop, the way that Chrome manages tabs was changed. When the task switcher is activated, each tab shows separately, almost like a new app. How do you ensure your website stands out here? Fortunately with the release of Chrome 39, there is a way – you can now customise the toolbar colour with just one line of HTML, the theme-color meta tag!
Eircom's eFibre product is their fastest home broadband offering, promising speeds of up to 100mb. The connection speeds are generally quite good, being capable of handling TV, Netflix and a handful of other connected devices all at once without any real issue on the speed. However the one black mark against the service would be the intermittent issues with the eircom DNS servers. This can often cause internet connection problems, where the net connection shows as active but nothing loads. Frustrating!
At the Dublin leg of the 2014 Agile Tour, I gave a talk based on my experience leading a team's agile transition from a classic waterfall approach. When preparing our move to agile, I found it fairly easy to find the success stories from other company's transitions. However, during our transition, we hit some rocky patches along the way, often making us question the whole transition. So for my talk I focused a little more on the things that went awry for us along the journey – what can happen when a number of smart people make what look like sensible, low-risk calls which turn out to be neither!
One of the nice things about using git for version control is the amount of data it stores during development. Git log is a powerful tool for finding out what’s been going on in your project, all via a simple text-based interface. But if Jack Nicholson has taught us nothing else, it’s that all work and no play makes Jack a dull boy. So we took a look at some of the more fun and interesting ways of generating code visualisations – GwitLog, Gource and Christmas Commits.
When doing any sort of non-trivial development, sooner or later you’ll likely end up having to send emails from your application. Email is a key part of many application for things like event notifications or user account verification. Testing that the right mails get sent at the right times can often be more hassle than it really should be. Fortunately, a tool called Mailcatcher exists to make this process much easier.
Recently I ran in to a particularly odd database problem – a mysql table that both existed and didn’t at the same time.
Character encoding in PHP can be fun at the best of times. Trying to send a non-ASCII character in a html email – a euro symbol, for example – can be just such one of those times.
Recently I needed to move a database I had running in RDS to a machine on a new digitalocean account. Usually a fairly simple process, the first step of which is to export the database using mysqldump. But when I ran the command locally, I got an unusual error - "Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1':You have an error in your SQL syntax"
Recently I was working on a new project on a virtual box set up through vagrant. For those of you who haven't used it, vagrant is an amazing tool that makes it crazy-easy to set up and deploy uniform development environments on virtual servers. However, I ran in to a very frustrating issue when trying to install the node.js framework express through npm.
Topical pages like the Property Tax Calculator tend to get shared more often on social networks, so we took a few small steps to ensure that the page looked it’s best when it shows up in a twitter timeline or Facebook feed
Last week we launched a Property Tax Calculator on Daft.ie. This calculates the Local Property Tax (LPT) due to be paid when the new tax scheme starts in July 2013. So, where did the idea come from, and how does it work?
How much traffic is a mention on RTE's lunchtime Liveline show worth to a website?
Google recently published a list of 30 updates made to search over the tail end of 2011. Tucked away in the middle of the list is mention of improved support for rich snippets. However it looks like google has also been testing out ways of extracting structured data from pages which have no defined snippet and contain multiple items – starting with real estate classifieds. What’s equally interesting here is that it seems having clear and valid markup may have an extra impact on your site’s appearance in the Google results and number of visitors clicking through!
We’ve decided that in running the half marathon that we’d like to try and raise money for the Mark Pollock Trust, which is where you hopefully come in…
Daft.ie is Ireland's largest property portal. After listing an advertisement, it can be "renewed", confirming continued availability, and pushing the ad back towards the top of the rankings. As ads can only be renewed once a day, a question we often get asked is "what's the best time to renew my ad in order to get maximum exposure?" Great question! Let's figure it out by taking a look at the time ad replies are sent through the site.
Twitter recently launched “Hovercards” on the web interface. Whenever I move my mouse up, down or across my timeline, these hovercards are springing up and obscuring other tweets in the timeline. Personally, I’ve been finding this feature far more annoying than useful, so would like to turn it off. Let's try this with a bookmarklet.