May 14, 2009

Bulk view

Thinking about the next summer dress I’m going to make

I’m trying to decide what to do with this pretty embroidered-border linen I picked up from Fabricland. J- thinks I should make it into a dress.  I think I’ll reuse the princess-seamed V-neck bodice from Vogue 8020, because that actually fits me (hooray!). Instead of continuing the seams into the skirt, I’ll just gather the skirt. I’ll need to either line the dress or wear a camisole and slip.

It’s either that, or try to figure out how to sew two rectangles to each other in a way that makes sense… <laugh>

Drupal: I’m learning how to be a JQuery/Date+Calendar ninja! =)

Our customized Date+Calendar-based Drupal event calendar is coming along quite nicely. The information architect’s design called for extensive customizations, such as:

  • hiding the year view
  • creating a context-sensitive year navigator that displays the entire year, and linking that to the title of the image
  • adding AJAX effects
  • adding a pop-up callout with three of the day’s events
  • displaying times in the user’s timezone generally, and in the user’s timezone and the event’s timezone on the actual event page
  • including dates for the previous month in the month view
  • allowing people to subscribe for notifications for new events in their interest group
  • allowing people to get iCal feeds for their events, all the events, or a group’s events, and these feeds should work without login
  • allowing people to sign up for e-mail reminders

We went with Date+Calendar instead of Event because Date+Calendar seemed more up to date, and its integration with Views meant that it was easy to add in domain access and other constraints. I learned quite a lot of new things in the process of implementing these features, such as:

  • writing a lot of Javascript using jQuery in order to bind events and do AJAX calls
  • writing test cases to check event subscription, event notification, timezone handling, and so on
  • programmatically creating a CCK node type with a date field
  • overriding calendar.inc to modify the way Drupal prepares the calendar
  • overriding calendar.theme to modify the way Drupal presents the calendar
  • making my own set of functions to generate the year navigator, based on the year view in calendar.inc

It took me a bit of time to figure out how this Date+Calendar AJAX patch worked, and I ended up modifying it extensively. I had been getting confused by mini= and view=ajax and all the other parameters floating around. I tried different approaches, including creating a callback function that generated just the HTML for the block, but then I found myself passing in too many parameters to control the URLs for the links.

My aha! moment was when I realized that the way the patch was handling the AJAX was to generate the entire page. When it got to processing the calendar block in the sidebar, the code checked for the $_GET['view'] parameter, and if an AJAX view was requested, it would print out the block and exit without printing the rest of the page. While that worked for the general case, we needed to modify our code so that the calendar blocks don’t appear on the calendar detail pages, so I wrote some Javascript code that requested a page within the right context.

This approach of generating the whole page didn’t quite work when it came to the subscription form that we embedded in event node page templates, though, because it printed out the node content before it generated the form. I used jQuery to retrieve the entire page, and then I extracted just the DIV I wanted to keep.

I still don’t like fussing with CSS (particularly when it comes to collapsing borders or dealing with browser issues), so I’ll leave that in the capable hands of our information architect. But now I’m the jQuery ninja on our team, too, and I know I can rock CCK+Views and calendars for future projects. =D

(p.s. Left out details, but if you’re curious about any of the bullet points, comment and I might flesh it out into its own blog post!)

Learning from Gen Y: Help needed!

In a few weeks, I’ll be giving a talk called I.B.Millennials: Working with and Learning From Generation Y at the IBM Technical Leadership Exchange. I want to help managers and technical leaders understand my generation better, get inspired by ways they can engage, coach and learn from younger members of their team, and find out how we can all work together to make something cool.

I’ve got lots of stories from my one and a half years at IBM, including:

  • how I got to know my team and they got to know me even before my first day at work
  • how my team’s learning from the way I search for information online, the way I reach out and connect, the way I give presentations, and the way I experiment with new things
  • how mentoring and reverse-mentoring are awesome
  • how Gen Yers at IBM are connecting online and in person, and how that’s different from other networking groups within IBM
  • what my manager, my team members and I have talked about
  • how we pulled together a panel of Gen Yers to help clients brainstorm ideas
  • what issues usually come up (face-time, communication, etc.) and how we’ve dealt with them

But I’d love to tell your stories, too. If you’re a Gen Yer, tell me a story about how working with your team has been, and how they’ve been learning from you too. If you’ve worked with Gen Yer, tell me what that’s been like, what you’ve learned, and what you’ve helped them learn as well. Leave your stories below in a comment, or post it on your blog and leave a link back, and I’ll look for a way to feature your story, name, and picture in my presentation to IBM technical leaders!

Best story will get a $25 Kiva gift certificate so that you can support an entrepreneur of your choice in a developing country!

Please post your stories or e-mail them to me by Wednesday, May 20, 2009 to be eligible for the Kiva gift certificate (and lots of thanks and gratitude). If you’re reading this after that date, feel free to share your stories anyway – it’ll be a great way to inspire others!