Remodeling Four Kitchens: A look inside our new brand
With the additions of Advomatic and Manatí, we’ve had an exciting few years at Four Kitchens. While we’ve remained fundamentally the same organization, we’ve also been evolving into something new. It’s time for our brand to catch up.Learn more
A more modern, sustainable approach to higher ed websites with YaleSites
A higher ed website is a product, not a project. Learn about Yale’s sustainable approach to digital development and how your team can do the same.Learn more
News and insights from the Web Chefs
Filter by topic
Filter by type
A flexible field model for tables
When you are developing data models for fields in Drupal sometimes the only thing you can count on is that there will be exceptions to the model. Thankfully, with Drupal, you can incorporate a lot of flexibility into your data model. Typically that flexibility comes at the cost of complexity for you, the developer or site builder, and likely, for your content contributors. It gets even more difficult when those fields are irregular in format, need to be responsive, and are a part of a time sensitive content launch involving content experts with little to no Drupal experience.
Drop that cron! Use Hudson instead
For years, I used cron (sometimes anacron) without asking questions. The method was simple enough, and every project requiring cron-related capabilities documented the setup. There is a much better way, and it involves Hudson.
Initial impressions of HipHop PHP and porting Pressflow
I spent most of the weekend porting Pressflow to HipHop PHP. Josh Koenig from Chapter Three was also kind enough to spend much of his Saturday working with me. Pressflow doesn't quite run on HipHop yet, but we're working on it. Building HipHop PHP and Pressflow Getting a good build of HipHop was quite a challenge. However, if you're on 64-bit Ubuntu 9.10, you just have to follow our build instructions.
Making Drupal and Pressflow more mundane
Drupal and Pressflow have too much magic in them, and not the good kind. On the recent Facebook webcast introducing HipHop PHP, their PHP-to-C++ converter, they broke down PHP language features into two categories: magic and mundane. The distinction is how well each capability of PHP, a dynamic language, translates to a static language like C++. "Mundane" features translate well to C++ and get a big performance boost in HipHop PHP. "Magic" features are either unsupported, like eval(), or run about as fast as today's PHP+APC, like call_user_func_array().
Anticipage: scalable pagination, especially for ACLs
Pagination is one of the hardest problems for web applications supporting access-control lists (ACLs). Drupal and Pressflow support ACLs through the node access system.
Intelligent memcached and APC interaction across a cluster
Anyone experienced with high-performance, scalable PHP development is familiar with APC and memcached. But used alone, they each have serious limitations: APC Advantages Low latency No need to serialize/unserialize items Scales perfectly with more web servers Disadvantages No enforced consistency across multiple web servers Cache is not shared; each web server must generate each item memcached Advantages Consistent across multiple web servers Cache is shared across all web servers; items only need to be generated once Disadvantages High latency Requires serializing/unserializing items Easily shards data across multiple web servers, but is still a big, shared cache Combining the two Traditionally, application developers simply think about consistency needs. If consistency is unnecessary (or the scope of the application is one web server), APC is great. Otherwise, memcached is the choice. There is, however, a third, hybrid option: use memcached as a coordination system for invalidation with APC as the main item cache. This functions as a loose L1/L2 cache structure. To borrow terminology from multimaster replication systems, memcached stores "tombstone" records.
Making the web a better place to teach, learn, and advocate starts here...
When you subscribe to our newsletter!