Status updates and enforcing the crispiest-possible 88x31 badges across the web
I've tracked my reading progress on my site for a bit now. I'd originally done this by fetching my progress from external APIs and sources on platforms like Oku , fetching and parsing the DOM on the StoryGraph and eventually importing and managing my own data. For years I've been reading and listening to audiobooks in Apple's Books app. Much like Apple's other media apps (music and TV, namely), Books has slowly moved in a direction that makes impor
I've nearly entirely rewritten my site over the past few months. First, I refactored the frontend into a Laravel application that leveraged the same postgREST endpoints that my long-running 11ty site used. Next, I wrote a new administrative application in Filament and migrated off of Directus . If I did this right, the changes went largely unnoticed.
Since adopting Navidrome to stream my own music I've been tracking my listening activity from my instance and have recently added pages for all of the albums in my collection, with a record for each track and the track list and track duration displayed on the album page.
As I've continued to over-engineer this site, there's been a mounting tension between what is and isn't dynamic. What should be dynamic, what needs to be dynamic, how often a given page or element is updated.
For reasons that elude me I cannot get Open Graph tags to work when anything from this site is posted on Mastodon. I've fiddled with server configs, my aggressive robots.txt and still — nothing. They work everywhere else . So I built an oEmbed endpoint.
Now that I have several sections of this site served dynamically using PHP I've finally put together a single command to work on the site locally.
Migrating from Plex to Jellyfin to Navidrome has meant refactoring how I record listens at each step. Much of the code architecture has remained the same — error reporting, inserting tentative artist and album records, but the data retrieval and recording has shifted.
I built myself a TV guide. Why? Because the more I tack things on to this site for my own utility, the less I want to use other services. So I built a TV guide.
When I moved this site to my own hosting I rewrote the dynamic code that had previously been handled by edge functions in PHP. To speed up build times and make things scale nicely as I add more content and pages, I recreated my media pages as an amalgam of PHP and Liquid templates that 11ty writes out as complete pages at build time.
"What did you do over the break?" "I moved everything to my own hosting!" ... I mean, that's hardly everything and it's far from the most important thing (or set of things) that I did, but it is a thing .
Google claims that its Core Web Vitals initiative has saved users 10,000 years of collective waiting time. The problem is, they sloughed those costs and headaches onto developers.
Giving some well-deserved appreciation to the LAMP stack, a key building block of the modern-day internet that you use daily. It’s everywhere. It may never die.
When we were creating our theme and setting up our WordPress installation, we noticed that every single static asset had a query string in the end of the URL like ?ver=3.5 and we didn't want that because we were using Cloudflare and we were having problems updating the cache. So, we decided to remove that from our URLs. But how?
No último tutorial sobre a criação de uma framework que segue o modelo MVC, criamos uma página dinâmica com acesso à base de dados.
No seguimento da criação de uma framework PHP que utilize o modelo MVC, hoje explicamos como se criam os controladores.
Continuamos a construir a nossa framework que terá como base o modelo MVC. Neste artigo criamos o coração da nossa framework.
O modelo MVC é algo muito utilizado atualmente. Nesta primeira parte iremos explicar a estrutura base de uma aplicação MVC e criar o ficheiro principal
O modelo MVC (Model-View-Controller) é um modelo extremamente utilizado nas aplicações web. Apresentamos uma breve explicação sobre este modelo.
Depois de termos ensinado a configurar o plugin php-gettext com o PHP, agora é hora de saber como utilizar o plugin.
A linguagem PHP está repleta de extensões. Uma muito utilizada e útil é o Gettext que nos permite traduzir um site muito facilmente.
Existem vários comandos que nos permitem imprimir frases. Porque é que existem vários? Alguns tornam o texto mais claro, como o 'printf' e o 'sprint'.
Já pensou em qual a melhor forma para inserir variáveis dentro de strings? A interpolação ou a concatenação. Venha ver.
O PHP 5.6.0 trouxe aos desenvolvedores novas funcionalidades e formas de trabalhar. Uma das melhores novidades é a nova sintaxe das funções variádicas.
A linguagem de programação PHP é das mais utilizadas atualmente do lado do servidor. Hoje trazemos 5 dicas que para vos ajudar!
A tag de fechamento do PHP ( ?> ) pode causar alguma confusão visto que é omitida pela maioria dos desenvolvedores. Mas porquê?
A API de passwords introduzida na versão 5.5 do PHP é excelente. Trouxe quatro novas maravilhosas funções. Resumimos a forma como cada uma funciona.
Explicamos como fazer a listagem em log de todos os erros produzidos pela linguagem PHP num ficheiro através do .htaccess.
Os DOCBlocks do PHP são extremamente úteis para os desenvolvedores que desejam partilhar o código. Venha conhecer as tags mais utilizadas.
Esta é a continuação do tutorial sobre como adicionar menus de administração a temas e plugins do WordPress.
A criação de temas e plugins para o WordPres leva a uma necessidade constante de criar menus de administração. A criação dos mesmos é muito simples.
Como você sabe, PHP é das linguagens de servidor mais utilizadas no mundo. Hoje trago-vos uma das funções mais interessantes desta linguagem.
Depois de publicar um artigo sobre as diferenças entre os operadores '==' e '===', vou falar sobre as diferenças entre os operadores '&&/||' e 'AND/OR'.
Os operadores '==' e '===' por vezes podem confundir-nos um pouco em relação ao seu uso e para que servem. Fica aqui a explicação de cada um."
O operador ? é, por vezes, intrigante. Chama-se operador ternário e explicamos para que serve este operador condicional em PHP.
Efetuar pedidos POST e GET utilizando a função ajax do jQuery e responder utilizando a linguagem de servidor PHP.
Como fazer a listagem de uma tabela MySQL com interface web, botões de navegação e limitação do número de linhas por página.
Por padrão, nos artigos do WordPress, quando se clica em "Ler mais", o utilizador é redirecionado para onde estava a ler. Aprenda a remover essa opção.