Drupal NYC August Meetup

Events happening in the community are now at Drupal community events on www.drupal.org.
robloach's picture
Start: 
2009-08-12 18:30 - 21:00 America/New_York
Organizers: 
Event type: 
User group meeting

DrupalCon Paris is coming up quickly, so August's Drupal NYC meet will consist of mental (and physical) preparations for DrupalCon through a discussion of our favorite Modules For That, and a performance tuning discussion with litwol.

When?
August 12th, 2009, 6:30 PM - 9:00 PM
Where?
7 World Trade Center, 29th Floor (Mansueto Ventures)
Directions?
http://tinyurl.com/mansuetoventuresdirections
Plans?
  1. Who are you? What do you want to get out of this?
  2. Case Study: Poverty's Demise by Darryl Penrice (details)
  3. There's a Module for That: discussion of the little known module gems.
  4. Advanced Performance Tuning discussion with litwol - Click for more info (anchor)
  5. Drupal Drinks and Drupal Fun at the classic Dakota Roadhouse
Homework?
Create a list of all your favorite modules and be prepared to talk about its use. Rules people, we expect a demonstration!

SIGN UP CLOSED: If you'd like to attend, contact Oleg asking him to add you to the guest list so that you can get into the building. Thanks!

Comments

Could anyone please video

skyredwang's picture

Could anyone please video tape "Advanced Performance Tuning with litwol"? I won't be there, but I know he will do something amazing and crazy that will make me regret that I can't be there.

I Second Video Taping

stuart-gdo's picture

I also probably won't be able to make it. Would greatly appreciate someone video taping the meetup. Or maybe moving it to an alternate date (wishful thinking?).

Something that I've been

capellic's picture

Something that I've been interested/obsessed with for some time is the poor performance of rarely used sites. I noticed, especially when a site is under development and not being visited by anybody but the client and I, that the site is very slow on the initial load if I haven't visited it in a while. The page will will take 8 to 15 seconds to load. The client is not impressed and I hate the idea of a visitor having that experience.

Yes, I have caching, compression, CSS, JS turned on. (I don't cache blocks as I have noticed that does very funny things to my sites.)

I learned that when cron runs, it will clear the cache tables which has caused me to reevaluate whether I need to run cron every 15 minutes, but I also have this performance problem when visiting sites first thing in the morning that aren't running cron (dev environment).

I thought it might be a module that I am using, but just this morning I saw that a freshly installed version of Open Atrium was loading slowly on my initial visit.

I'm hoping that the issue of very low volume sites can also be addressed? I would like to come to a better understanding of how the caching layer works, how Drupal knows when to regenerate cache and how using Views (with it's own caching layer) might complicate things.

I should also point out that I've discovered that Boost is trying to address this issue by implementing "pre-caching" [1]. There is a patch that allows an admin to manually invoke a crawler (using the batch API) to hit every node -- no, not the best solution for big sites, but it will work for me with sites under several hundred nodes. There is mention of prioritizing nodes, by only hitting ones in menus, or specific URLs, etc. There is also discussion of putting this on cron, which is the only real solution to me since cron's cache clearing step is what's causing my problem in the first place. (Or is my solution easier -- like overriding the call in cron that clears the cache?)

[1] http://drupal.org/node/337391

Since I posted the above,

capellic's picture

Since I posted the above, I've come up with a decent solution. I wrote a module that allows users to designate specific URLs for pre-caching. This module will call these URLs when cron is called, so important pages are cached immediately after the cron flushes the cache. There is more here: http://capellic.com/blog/pre-caching-low-volume-website

There's a Module for That!

robloach's picture

We could talk about all our favourite non-popular modules and send some of them over to There's A Module For That at @drupalmods.

Awesome idea!

jpowell-gdo's picture

Awesome idea!

I like this

casaswing's picture

I like this idea.

Video...

jpasila's picture

happy to bring my video camera and take care of this or use one that others may have...

What would be really cool is

capellic's picture

What would be really cool is if we had the means of setting up a camera on a mini tripod in the middle of the table, pointed at the presenter/screen, plug it into a laptop and then streamed it over livestream.com so people can watch in real time and it's archived. I recall litwol filming some of the meetups -- but the process of getting those up on the web is so time consuming.

NYC Drupal Meetups On The Web

Brian@brianpuccio.net's picture

I would be more than willing to do some editing, transcode, post and host these videos and put them together. I'd love to attend these meetups, but can't since I'm about 45 minutes outside the city via LIRR and will never be able to get there on time for these evening meets unless I start arranging time off, which I can't do for the next few months. If I could watch them afterwards, I would be really happy so I'd love to do whatever work is needed to get these edited and up online where people can watch them and subscribe to them as a video podcast.

Rules Module

capellic's picture

I am wondering if anybody is using the Rules module and if they could explain how it is used with or as a replacement of Triggers/Actions. Demo is extra credit!

rules

tom_o_t's picture

I'm using rules for some work I'm doing at Sony, but I won't be at this month's meetup. I'd be happy to present on it next month though.

where I recently used rules module

ericg's picture

on http://opengreenmap.org I am using the Rules module in a few places where I need more control than is given by only triggers and actions.

For example, using only triggers and actions, I can set something to happen when nodes are updated, but I can't have that happen only when a certain node type is updated or even only when a certain field in that type changes. With rules I can.

On that site, a point on a map (called a "green site") can be added by a user that is a member of that map/group or by someone that is not. If you are not a member of that group, the site you add remains viewable only to group members until a group admin marks it as approved. I want to send an email to the user when the site they suggested is approved.

With rules I was able to set it so that when a node of type "green site" is updated and the value of the field "awaiting_approval" changes from NULL to 1, an email is sent to the user that had submitted the node that contains links back to the map and to the site they added.

here is the export of that rule, import this into your dev site to see how it is setup

array (
  'rules' =>
  array (
    'rules_3' =>
    array (
      '#type' => 'rule',
      '#set' => 'event_node_update',
      '#label' => 'send email to user that suggested a site upon approval',
      '#active' => 1,
      '#weight' => '0',
      '#categories' =>
      array (
      ),
      '#status' => 'custom',
      '#conditions' =>
      array (
        0 =>
        array (
          '#weight' => 0,
          '#info' =>
          array (
            'label' => 'Updated content is Green Site',
            'arguments' =>
            array (
              'node' =>
              array (
                'type' => 'node',
                'label' => 'Content',
              ),
            ),
            'module' => 'Node',
          ),
          '#name' => 'rules_condition_content_is_type',
          '#settings' =>
          array (
            'type' =>
            array (
              'green_site' => 'green_site',
            ),
            '#argument map' =>
            array (
              'node' => 'node',
            ),
          ),
          '#type' => 'condition',
        ),
        1 =>
        array (
          '#type' => 'condition',
          '#settings' =>
          array (
            'field_name' => 'field_awaiting_approval',
            '#argument map' =>
            array (
              'node' => 'node',
              'node_unchanged' => 'node_unchanged',
            ),
          ),
          '#name' => 'content_rules_field_changed',
          '#info' =>
          array (
            'label' => 'Updated content\'s field \'field_awaiting_approval\' has been changed',
            'arguments' =>
            array (
              'node' =>
              array (
                'type' => 'node',
                'label' => 'Content containing changes',
              ),
              'node_unchanged' =>
              array (
                'type' => 'node',
                'label' => 'Content not containing changes',
              ),
            ),
            'module' => 'CCK',
          ),
          '#weight' => 0,
        ),
        2 =>
        array (
          '#type' => 'condition',
          '#settings' =>
          array (
            'code' => 'return $author->uid > 0;
',
            'vars' =>
            array (
              0 => 'author',
            ),
          ),
          '#name' => 'rules_condition_custom_php',
          '#info' =>
          array (
            'label' => 'Execute custom PHP code',
            'module' => 'PHP',
            'eval input' =>
            array (
              0 => 'code',
            ),
          ),
          '#weight' => 0,
        ),
      ),
      '#actions' =>
      array (
        0 =>
        array (
          '#weight' => 0,
          '#info' =>
          array (
            'label' => 'Send a mail to a user',
            'arguments' =>
            array (
              'user' =>
              array (
                'type' => 'user',
                'label' => 'Recipient',
              ),
            ),
            'module' => 'System',
            'eval input' =>
            array (
              0 => 'subject',
              1 => 'message',
              2 => 'from',
            ),
          ),
          '#name' => 'rules_action_mail_to_user',
          '#settings' =>
          array (
            'from' => '[author:site-mail]',
            'subject' => 'Your suggested Green Site has been approved',
            'message' => 'Your Green Site suggestion, [node:title], has been approved by the Mapmaker

you can see your site on the map, [node:ogname], at
http://opengreenmap.org/node/[node:og-id]',
            '#argument map' =>
            array (
              'user' => 'author',
            ),
            '#eval input' =>
            array (
              'token_rules_input_evaluator' =>
              array (
                'message' =>
                array (
                  0 => 'node',
                ),
                'from' =>
                array (
                  0 => 'author',
                ),
              ),
            ),
          ),
          '#type' => 'action',
        ),
      ),
    ),
  ),
  'rule_sets' =>
  array (
  ),
)

Not another anon caching technique

litwol's picture

There are too many solutions available to optimizing anonymous user performance experience. My discussion will focus on how you can achieve the same level performance for authenticated users. Being a New Yorker i hate having my time wasted on big over the top theories, so instead i will focus on practical solutions that are flexible enough to adapt to other sites' needs.

I will present with a healthy balance of theory behind this architecture and practical examples how to achieve it.

Sometimes it is more important to be able to ask correct questions of your infrastructure to identify where you can optimize things rather than being told a one off solution, so i will focus a little on how to take a look at YOUR infrastructure and optimize it to YOUR client's needs (as well as what tools to use).

Who is this for?: Not beginners, not themers. Developers, performance tuners and business owners that can hire developers/performance tuners but need convincing what I'll be showing actually works.


------------------
Sometimes interesting things appears on http://litwol.com

Drupal Guild will meet at the small tables

johnvsc's picture

bring your questions
as always for n00bies

johnvsc@gmail.com
917.676.0677

I'd be happy to help out

jpowell-gdo's picture

I'd be happy to help out with the Guild at the small tables.

There sounds like a few really interesting things going in the main room, but I'm sure I can get notes from someone.

Guild Modules?

robloach's picture

Although it's great to get different discussions going, I'd love to hear what everyone's favourite modules and solutions are! :-) ...... Oleg asked for the small tables for the performance tuning talk because he didn't want the projector. Anyway we could use that for the Guild talk?

Lucky we have many small

litwol's picture

Lucky we have many small tables :)


------------------
Sometimes interesting things appears on http://litwol.com

Whatever works best

johnvsc's picture

I think that the introductions as a whole group are best... and we can break off into smaller groups for economy sake.

I don't mind being out near oleg if he wears some cologne ... or brings some vodka

8)~
johnvsc@gmail.com
917.676.0677

I agree. And this is why I

capellic's picture

I agree. And this is why I think that sharing modules/recipes/solutions should happen when we're all together. Not sure how it should work in the agenda, though. If we do it first, then new folks aren't getting as much out of it because they haven't been able to yet ask their burning questions to get that initial foundation.

Great meetup everyone

casaswing's picture

As always thanks to everyone. Darryl, your presentation was awesome!