Addison Berry: Getting Started as a Board Director

Planet Drupal - Sat, 2015/05/16 - 8:06pm

A few months ago I ran for, and won, a seat on the Drupal Association (DA) Board as an At-Large Director. I'd like to share my journey with everyone, both to provide another look into the work that the board does, and to understand what it's like to be a new board member. I've now attended two board meetings (April and May) and taken part in my first board retreat, the weekend before DrupalCon LA. There's a lot going on, so I'll break this up into several posts.

On-boarding

Once I was elected, and the board confirmed the election results, Holly contacted me to let me know just before announcing it to the entire community. Shortly after that we scheduled a time to get on the phone, and I started getting access to a bunch of documents. I mean a whole bunch!

That first call with Holly was great for getting me oriented. She walked me through logistical things like board meetings, communication, necessary paperwork, and pointing me in the right direction with the documents to look at for various topics and back story. She also asked if I'd ever served on a board before, which I had not, and took time to explain what that means in terms of expectations for board members (things like publicly representing the board and identifying conflicts of interest). She also gave me a summary of the major topics from the last board retreat, which had occurred in January. She continued from there to summarize the big issues that the board was in the middle of discussing and working on, with an idea of what topics we were looking to tackle during the LA retreat in May. This was incredibly useful to prepare me for my first board meeting. I caught up on details by reading the minutes from the January retreat and this year's monthly board meetings. I didn't have many questions after my on-boarding and I felt prepared to dive into the conversations that were already ongoing.

One thing that I did right after that call was to set up times to chat one-on-one with the DA staff leadership team. I wanted to hear from each of them what they were working on, and understand what they needed to get from the board (and therefore me) to do their jobs better. It was a great introduction to the work that the staff takes on every day, and helped me clarify what I need to keep focused on to help them. It was also just awesome to get to know them a little more as people, which can be hard to do in our crazy, busy schedules.

Board Email

In addition to documents and phone calls, I was also added to the board email list. It is a pretty low traffic list, but I got to see a few conversations run through there prior to my first meeting. We had a thread to help clarify what info we needed to have for the meeting, and that board members should read reports ahead of time so we could get straight to things in the meeting itself. In addition to internal process things like that, this is also a place where members can raise issues they think we need to discuss or vote on in a meeting.

First Board Meeting

I was elected just a few weeks before the April board meeting, and I wasn't required to attend that meeting since I was still getting up and running, but I wanted to dive in. Board members are expected to make all monthly board meetings, with at least 10 a year being the minimum to attend. The time is a set time, and so one thing I knew before I even nominated myself was that I would need to make space for this 2-hour call every month on a Wednesday night from 9pm–11pm (since I live in Denmark).

A few days before each board meeting we all receive a meeting packet which has the agenda, phone connection info, links to any presentations or documents we should review, and a list of the DA key performance indicators (KPIs). This board packet is publicly available as well, and you can check them out yourself and even listen in on the board meeting. I spent some time to read everything over and think about what I might want to bring up in the conversation during the meeting.

I didn't have a whole lot to say as I was just trying to absorb as much as I could. We did however discuss releasing the election results, which I obviously had some thoughts about, having just come through the election process. This issue was a good example of how the DA works with community feedback. We have never released election data in the past, and we hadn't made that an expectation for candidates, so when people asked for the data, we couldn't just hand it out with considering a few things. I think we came up with a good solution to be able to release the data for this election, and we now have a plan in place to incorporate this in future elections. You can read more about this decision in Holly's post 2015 At-Large Election Data Released.

The first part of every board meeting is public (as mentioned above). After the public section, we drop off the phone and meet on another phone line with just the board, Holly, and needed staff. This is a place for us to discuss things that are still in progress, or to handle internal board matters. On this particular call we discussed things like reviewing the Q1 financials and and giving updates on board members' efforts to help raise funds for D8 Accelerate.

In my next post I'll give a rundown of the board retreat and my board experience at DrupalCon LA. A lot of people have asked me how I feel about being on the board after the retreat, and I have to say that I'm very happy. I felt the level and direction of conversation was great. I'll talk more about what that was, and why I'm so pleased, especially compared to my previous DA experience from many years ago.

drupal associationdrupal
Categories:

Another Drop in the Drupal Sea: DrupalCon LA Friday Recap

Planet Drupal - Sat, 2015/05/16 - 7:06pm

From my vantage point the sprint day was extremely well attended. I spent my day working on a patch I had submitted to the Flag module and working on OG Forum and OG Forum D7.

We had the traditional live commit in the afternoon.

There wasn't any announcement if any more critical bugs were squashed for core.

How many of you participated in the sprints? When did you head home? Are you participating on Saturday?

read more

Categories:

clemens-tolboom pushed to feature/2100637-102-hal-collection at build2be/drupal

On github - Sat, 2015/05/16 - 6:34pm
May 16, 2015 clemens-tolboom pushed to feature/2100637-102-hal-collection at build2be/drupal
  • 569bc74 Revert collection to entities and vice versa..

Forum One: DrupalCon LA Round-Up: Wrapping Up and Looking Ahead

Planet Drupal - Sat, 2015/05/16 - 1:34am

A number of us from Forum One are sticking around for Friday’s sprints, but that’s a wrap on the third day of DrupalCon and the conference proper!

Wednesday and Thursday were chock-full of great sessions, BoFs, and all the small spontaneous meetings and conversations that make DrupalCons so fruitful, exhausting and energizing.

Forum One gave three sessions on Wednesday. John Brandenburg presented Maximizing Site Speed with Mercy Corps, a case study of our work on www.mercycorps.org focusing on performance optimization. Kalpana Goel of Forum One and Frédéric G. Marand presented Pain points of learning and contributing in the Drupal community, a session on how to even better facilitate code contributions to Drupal from community members. And finally Forum One’s Andrew Morton presented Content After Launch: Preparing a Monkey for Space, a survey of content considerations for project success before, during, and after the website build process. The other highlight from my perspective on Wednesday was a great talk by Wim Leers and Fabian Franz on improvements to Drupal performance/speed, and how to make your Drupal sites fly.

Then Thursday, Daniel Ferro and Dan Mouyard rounded out the seven Forum One sessions with their excellent presentation, To the Pattern Lab! Collaboration Using Modular Design Principles. The session describes our usage of Pattern Lab at Forum One to improve project workflow and collaboration between visual designers, front- and back-end developers, and clients. This approach has eased a lot of friction on our project teams. I’m particularly excited about how it’s allowed our front-end developers to get hacking much earlier in the project lifecycle. We were glad to see the presentation get a shout out from Brad Frost, one of the Pattern Lab creators. Other highlights for me on Thursday were the beloved Q&A with Dries and friends and sitting down over lunch with other Pacific Northwest Drupalers to make some important decisions about the PNW Drupal Summit coming to Seattle this fall.

In addition to looking ahead to DrupalCon Barcelona, the closing session revealed the exciting news that DrupalCon will be landing in Mumbai next year!

#DrupalCon is coming to Mumbai! Plus other photos from todays closing session https://t.co/Y3vWCQCSTu? pic.twitter.com/zEt4Y6VLxS

— DrupalCon LosAngeles (@DrupalConNA) May 15, 2015

And the always anticipated announcement of the next DrupalCon North America location… New Orleans!

And the next North American #DrupalCon will be…… pic.twitter.com/AXiFxv3gfW

— DrupalCon LosAngeles (@DrupalConNA) May 14, 2015

That news was ushered in soulfully by these gentlemen, Big Easy style, pouring out from the keynote hall into the convention center lobby.

Great way to announce #DrupalCon New Orleans! #DrupalConLA pic.twitter.com/3cRmV8jI1F

— Andy Hieb (@AndyHieb) May 14, 2015

And to finish off the day properly, many of us hooted and hollered at Drupal trivia night, MC’d by none other than Jeff Eaton.

Another fantastic #DrupalCon trivia night in progress… Woo! pic.twitter.com/AzavA2AFXi

— Jeff Eaton (@eaton) May 15, 2015

A great con was had by all of us here at Forum One… On to the sprints!

Categories:

clemens-tolboom pushed to 8.x at build2be/drupal-rest-test

On github - Fri, 2015/05/15 - 10:04pm
May 15, 2015 clemens-tolboom pushed to 8.x at build2be/drupal-rest-test

Forum One: Hacking the Feds: Forum One Among the Winners at GSA Hack-a-Thon

Planet Drupal - Fri, 2015/05/15 - 8:25pm

Last Friday, we attended the Digital Innovation Hack-a-Thon hosted by the GSA… and we won. The federal tech website FCW even wrote an article about it.

Our team, made up of designers and developers from Forum One, along with Booz Allen Hamilton, Avar Consulting, and IFC International, worked on a solution for IAE’s Vendor Dashboard for Contracting Officers. We were tasked with creating a vendor dashboard for displaying GSA data that would enable procurement officers to quickly and easily search and identify potential vendors that have small-business or minority-owned status, search by other special categories, and view vendors’ history.

How did we tackle the problem?

Our team initially split into smaller working groups. The first group performed a quick discovery session; talking with the primary stakeholder and even reaching out to some of the Contracting Officers we work with regularly. They identified pain points and looked at other systems which we ended up integrating into our solution. As this group defined requirements, the second group created wireframes. We even took some time to perform quick usability testing with our stakeholders, and iterate on our initial concept until it was time to present.

The other group dove into development. We carefully evaluated the data available from the API to understand the overlap and develop a data architecture. Using that data map, we decided to create a listing of contracts and ways to display an individual contract. We then expanded it to include alternative ways of comparing and segmenting contracts using other supporting data. Drupal did very well pulling in the data and allowed us to leverage its data listings and displays tools. Most developers see Drupal as a powerful albeit time intensive building tool, but it worked very well in this time critical environment.

Our two groups rejoined frequently to keep everyone on the same page and make sure our solutions was viable.

How much could we possibly accomplish in 6 hours?

More than you might think. Our solutions presented the content in an organized, digestible way that allowed contracting officers to search and sort through information quickly and easily within one system. We created wireframes to illustrate our solution for the judges and stakeholders. We also stood up a Drupal site to house the data and explained the technical architecture behind our solution. Unfortunately, we didn’t have a front-end developer participating in the hack-a-thon, so we weren’t able to create a user interface, but our wireframes describe what the UI should eventually look like.

Some of us even took a quick break to catch a glimpse the Arsenal of Democracy World War II Victory Capitol Flyover from the roof. It was also broadcasted on the projectors in the conference room.

What did we learn?

It’s interesting to see how others break down complex problems and iterate on solutions especially if that solution includes additional requirements. Our solution was more complex than some of the other more polished data visualizations, but we won the challenge in part because of the strategy behind our solution.

We’re excited to see what GSA develops as a MVP, and we’ll be keeping our ears open for the next opportunity to attend a hack-a-thon with GSA.

Finally, a big shout out to our teammates!
  • Mary C. J. Schwarz, Vice President at ICF International
  • Gita Pabla, Senior Digital Designer at Booz Allen Hamilton
  • Eugene Raether, IT Consultant at Booz Allen Hamilton
  • Robert Barrett, Technical Architect, Avar Consulting
Categories:

SitePoint PHP Drupal: Using Ajax Forms in Drupal 8

Planet Drupal - Fri, 2015/05/15 - 6:00pm

In this article, I am going to show you a clean way of using the Drupal 8 Ajax API without writing one line of JavaScript code. To this end, we will go back to the first custom form we built for Drupal 8 in a previous article and Ajaxify some of its behaviour to make it more user friendly.

An updated version of this form can be found in this repository under the name DemoForm (the demo module). The code we write in this article can also be found there but in a separate branch called ajax. I recommend you clone the repo and install the module in your development environment if you want to follow along.

DemoForm

Although poorly named, the DemoForm was very helpful in illustrating the basics of writing a custom form in Drupal 8. It handles validation, configuration and exemplifies the use of the Form API in general. Of course, it focuses on the basics and has nothing spectacular going on.

If you remember, or check the code, you’ll see that the form presents a single textfield responsible for collecting an email address to be saved as configuration. The form validation is in charge of making sure that the submitted email has a .com ending (a poor attempt at that but enough to illustrate the principle of form validation). So when a user submits the form, they are saving a new email address to the configuration and get a confirmation message printed to the screen.

In this article, we will move the email validation logic to an Ajax callback so that after the user has finished typing the email address, the validation gets automagically triggered and a message printed without submitting the form. Again, there is nothing spectacular about this behaviour and you will see it quite often in forms in the wild (typically to validate usernames). But it’s a good exercise for looking at Ajax in Drupal 8.

Continue reading %Using Ajax Forms in Drupal 8%

Categories:

Another Drop in the Drupal Sea: DrupalCon LA Thursday Recap

Planet Drupal - Fri, 2015/05/15 - 5:38pm

There was a shortened day of sessions, finishing with the closing ceremony. In the morning I attended a discussion about documentation on D.O. I attended this session because the point of focus the group chose at my BOF was to do something to improve the documentation. The session was quite well attended, which apparently demonstrates that there's a good bit of interest in improving the documentation. So, I guess I'll be putting more of my time, energy and resources to getting involved.

read more

Categories:

clemens-tolboom commented on pull request symfony/symfony-docs#3917

On github - Fri, 2015/05/15 - 5:31pm
May 15, 2015 clemens-tolboom commented on pull request symfony/symfony-docs#3917

Thanks for the update

Drupal Easy: DrupalEasy Podcast 154: DrupalCon Los Angeles - Day 3 Recap

Planet Drupal - Fri, 2015/05/15 - 3:29pm
DrupalEasy Podcast 154

Ryan managed to catch a few final interviews before leaving town on the last day of DrupalCon. He got in a traditional interview with a Blackmesh employee (who isn't Cathy Theyes), namely Jason Ford. Also is an 15 minute interview with Colleen Carrol of Palantir.net who recaps her session about Sustainable Recruiting Practices.

read more

Categories:

Paul Booker: Collecting total prices on a recipe form using field collections, JQuery / AHAH

Planet Drupal - Fri, 2015/05/15 - 3:26pm
(function($) { Drupal.behaviors.recipesForm = { attach: function (context, settings) { $(".field-name-field-recipe-quantity input[type=text]").focus(function() { $ingredient = $(this).parent().parent().parent().prev().find("select"); nid = $ingredient.find('option:selected').val(); //console.log(nid); $.get('/ingredient/price/get/' + nid , null, updateCost); }); $(".field-name-field-recipe-quantity input[type=text]").blur(function() { total_cost = 0; $quantity = $(this); quantity_val = $(this).val(); if (quantity_val && cost_per_kg) { var item = $(".field-name-field-recipe-cost"); $cost = $(this).parent().parent().parent().parent().find(item).find("input[type=text]"); cost_val = quantity_val * cost_per_kg; //console.log($quantity_val); //console.log($cost_per_kg); //console.log($cost_val.toFixed(2)); $cost.val(cost_val.toFixed(2)); } $('.field-name-field-recipe-cost').each(function() { //console.log(this); //console.log($(this).find("input[type=text]")); //console.log($(this).find("input[type=text]").val()); cost = $(this).find("input[type=text]").val(); total_cost = total_cost + parseFloat(cost); }); //console.log(total_cost); $total_cost = $('.field-name-field-total-cost').find("input[type=text]"); $total_cost.val(total_cost.toFixed(2)); }); $(".field-name-field-recipe-ingredient select").change(function() { nid = $(this).find('option:selected').val(); $.get('/ingredient/price/get/' + nid , null, updateCost); var item = $(".field-name-field-recipe-quantity"); $quantity = $(this).parent().parent().parent().find(item).find("input[type=text]"); //console.log($quantity); $quantity.val(0); var item = $(".field-name-field-recipe-cost"); $cost = $(this).parent().parent().parent().find(item).find("input[type=text]"); $cost.val(0); }); } }; var updateCost = function(response) { cost_per_kg = response['data']; //console.log(cost_per_kg); } })(jQuery); /** * Implements hook_menu(). */ function mymodule_menu() { $items['ingredient/price/get'] = array( 'page callback' => 'mymodule_get_ingredient_price_ajax', 'type' => MENU_CALLBACK, 'access arguments' => array('access content'), ); return $items; } /** * Callback to return JSON encoded ingredient price for given nid. */ function mymodule_get_ingredient_price_ajax($nid) { $node = node_load($nid); //print_r($node->field_cost_per_kg['und'][0]['value']); $cost_per_kg = $node->field_cost_per_kg['und'][0]['value']; drupal_json_output(array('status' => 0, 'data' => $cost_per_kg)); drupal_exit(); } function mymodule_form_recipe_sheet_node_form_alter(&$form, &$form_state, $form_id) { //dsm($form_id); //dsm($form['field_total_cost']); foreach ($form['field_collection_ingredients']['und'] as $key => &$value) { if (is_numeric($key)) { //dsm($key); //dsm($value); $value['field_recipe_cost']["#disabled"] = TRUE; } } $form['field_total_cost']["#disabled"] = TRUE; drupal_add_js(drupal_get_path('module', 'mymodule') .'/scripts/mymodule.js'); } Tags:
Categories: