Drupal Fire - Quick Roundup from important Drupal blogs and sites

Subscribe to Drupal Fire - Quick Roundup from important Drupal blogs and sites feed
News, views, tips, and tricks from the best Drupal developers, designers, and writers. All Drupal, all the time.
Updated: 2 hours 1 min ago

UX for Brains: Let’s Be Honest, People Suck

Wed, 2016-03-09 11:22

Lullabot (via DrupalFire)

I really love psychology, and learning about what makes people tick. I even debated psychology as a possible career, but settled for a minor in order to focus on my design obsession full time. Post graduation, I thought I‘d left that psychologist’s hat behind me. But like many recent grads, I was wrong. Now, as a user experience designer, I bring these foundations into my work constantly. If you're a designer or work in the web, what I'm about to share are some basic ways to leverage psychology in your work.

Understand Psychology To Understand People

Using a psychological perspective to approach design problems isn’t meant to side-step UX practices, but actually enhance them. I think of it as adding dimension to your practices and teams, by allowing you to see out of two eyes, instead of just one.

As a designer in this ever-evolving technical world, it is essential to have a core understanding of the fundamentals of human perception, cognition, and behavior, especially as they apply to how humans use websites. Utilize psychology as part of your own design practice to better tap into your users. There are volumes out there—not in the design section—full of timeless explanations of what motivates people, what their needs are, how they complete tasks, and how they think...or, you know, don’t. And as Donald Norman—the cognitive psychologist who originally coined the term UX—puts it in his must-read design bible, Design for Everyday Things:

The one thing I can predict with certainty is that the principles of human psychology remain the same, which means that the design principles here, based on psychology, on the nature of human cognition, emotion, action, and interaction with the world, will remain unchanged.

Donald Norman, The Design of Everyday Things: Revised and Expanded Edition

People Aren't Always The Users We Dream Of

Ok, I admit, I have an underlying reason for pushing you all to learn about people through psychology. There is one observation that I have made in particular that I would hope for more designers to discover for themselves. And no matter how I try to sugarcoat it, or back it up with study findings, everyone thinks I’m a bummer when I share it. Simply, there are some things about human bodies, minds, and habits that kind of suck. Look at some of my examples, then decide for yourself how much credit we should give our users.

Before I jump into the quantitative statistics, let me ease into the fun with a qualitative persona. This is a culmination of users I’ve tested, all rolled up into my grandmother. I pray she never finds this article.

Think of this persona while you work, and consider how she might struggle with an interaction.

Elderly Eleanor is an older woman and mother of eight, who first experienced computers in the DOS era. Eleanor wrote technology off early after making some irreversible mistakes. And the poor dear had no Google, Siri, or user-centric customer support teams to help, so she gave up until her family forcibly gifted technology back into her life. Now, she has a PC and an iPad. She uses them to look at weather predictions (Maine gets quite a bit of snow) and to stay connected with her family through social media. But she doesn’t really understand how it works, and often points her camera way above her head during Skype calls. She marvels when a family member buys something online. But if they try to explain it, she will cut them off to say that it’s beyond her.

I know that Eleanor is not our standard user. But keep her in mind as you design your next experience, as the ultimate usability test. WWED?

technology adoption cycle, showing the early and late majority increasing after the small amount of innovators and early adopters The Technology Adoption Cycle shows us how rare our innovators and early adopters are.

While Eleanor’s aversion to technology is not the norm, it’s not too far off; in fact, an aversion to technology is mainstream, as we can see in a standard technology adoption lifecycle. This trend can be easy to overlook when we are the innovators building the technology, but the adventurous innovators and adopters are rare. The rest of humanity is not nearly so fearless, and will wait a long time before trying something new.

And They’re Needy

Not only do people interact with our experiences in less than ideal ways—more on that to follow—but they also have less than ideal expectations. People need a lot, and expect even more. If you need a refresher on the hierarchy of needs, check out Abraham Maslow’s pyramid: the gist is that people seek to meet their most basic needs first, like food and safety. As soon as these are met, instead of feeling satisfaction, now they need the next thing, and the next, in an endless and frustrating adaptation cycle known as the hedonic treadmill.

 functionality, reliability, usability, proficiency, creativity.From Smashing Magazine, this pyramid suggests the hierarchy of design needs, with functionality as our primary focus.

I like this Smashing Magazine spin-off pyramid for a design hierarchy of needs. It follows the same bottom-up process, but with functionality at the bottom and creativity at the top. This means that people need a working product well before they need a beautiful one, so our priorities as a design team should follow this hierarchy. Another interesting observation here is the modest value provided by each of these levels. It’s frustrating, isn’t it? So much of our hard work to launch a working product is taken for granted. 

Take a deep breath before we look at the next chart.

The kano model shows must have needs below the satisfaction threshold, with wants split above and below, and delighters above the threshold. The Kano Model is a theory of customer satisfaction developed in 1984 by Professor Noriaki Kano.

The Kano model was developed in the 80’s, but is still a classic. Note the trends of basic needs (must-haves), performance needs (wants), and latent needs (delighters). First of all, the must-haves are completely below the threshold of satisfaction, so it’s not enough to meet users’ basic needs. As far as they’re concerned, it’s the bare minimum that an app lets them sign up, keeps their information saved but private, doesn’t crash, and on and on and on. Wants can go either way, and some people will appreciate these extra thoughtful features and interactions. Users will delight at thoughtful experiences that meet their higher emotional and intellectual needs, but this can be a tall order. Since these latent needs are the ones users struggle most to articulate. I quote and re-quote Henry Ford on this, the manufacturer of the first automobiles: “If I had asked people what they wanted, they would have said faster horses.”

Humans Miss A LOT Of Goings-On

One of the hardest steps when people interact with something you’ve made is the first one: getting users to discover your hard work. I really like information architect Steve Krug’s way of describing the situation:

We’re thinking “great literature”... the user’s reality is much closer to “billboard going by at 60 miles an hour”.

Steve Krug, Don't Make Me Think

So much for that thoughtfully-crafted experience. As you’ll see, humans have tons of mechanisms built in to protect them from actually caring about stuff. Let’s start with our eyes.

Diagram of the eye, including a small number of cone receptor cells in the center of the back of the eye, and a larger set of rod cells filling the rest of the back of the eye. Our cone cells produce a small, precise foveal area, while our rod cells fill in the rest with our blurry peripheral vision.

In the center of our eyeballs, our cone receptor cells capture light with quality and focus. The rod cells around the rest of the back of the eye are lazier, and can’t distinguish things like color or shape all that well (but they shine when it comes to night vision). The cones have a lot of heavy lifting to do, but sadly, they only create an area of focused vision no bigger than your thumbnail, known as your foveal area. The rest of the world (and your website) is getting seen in our blurry peripheral vision, but we don’t notice because our eyes—and foveal areas— are constantly moving to fill in the gaps. Not too surprising that a lot of things get overlooked.

The next step requires keeping our attention, which is borderline goldfish status. As I’m sure you know, humans are overwhelmed with a firehose of information. We divide our attention between many distractions, and as a result, have a hard time focusing on anything. It doesn’t take long to lose focus: almost half of users give up if a page takes three or more seconds to load. Our attention spans are just minutes long—how many minutes exactly is debatable because it’s getting shorter all the time. These minutes are broken up by distractions too, so you can really only expect about eight focused seconds of unbroken attention to a task at a time. Eight!

And it’s way easier for a user to get distracted while using your product at home, online, alone (as compared to supervised or incentivized test subjects). Even though it’s fiction, I think this Portlandia bit does a nice job of telling the story. Point being, take that aspect of your usability tests with a grain of salt. For example—this one always cracks me up—think about the last time you went into a retail store, got a cart, filled it up with stuff, and then got bored and left that cart in an aisle and walked out. Hopefully you can’t, because who does that? And yet online cart abandonment is 67 percent!

With all the distractions we are already faced with, users are averse to anything that could be mistaken for a distraction. We have to seriously commit ourselves to getting from point A (our desk chairs) to point B (purchasing those picture frames from Target’s online store), so any pop ups are probably going to get killed immediately. Even that helpful overlay with 15% off brushed silver frames gets the X, because we’d made the snap judgement to terminate it before reading and comprehending any value. While I get that we’re all busy, I would argue that this behavior goes deeper than that. Often designers come up with unique, novel interactions that require learning unique, branded terminology, and I usually end up hating it. Because I don’t want to learn some crazy new mobile gesture if I came to your app to achieve a goal that wasn’t entertainment. Again, A to B.

Results from participants asked to draw the Apple logo, with few resembling the logo. UCLA psychologists asked 85 undergrads to draw the Apple logo from memory, and only one got it right. From Gizmodo.

Going back to the example: let’s say you’re giving your full focus to the picture frame hunt, because you are going to get that Christmas shopping done early this year, gosh darn it. Even when you think you’re giving something your full attention, your brain is doing you a solid and ignoring most of the thing. People learn as little as they can and instead rely on salient cues to get by. A recent study discussed on Gizmodo leveraged a popular brand to illustrate this concept: when participants were asked to draw the Apple logo from memory, most of them weren’t even close. At least they’re all apples?

This heatmap shows acitvity around the navigation, sidebar, and lower content of the page, with no activity on the carousel banner. This heatmap shows us how users skim past carousels, due to an evolved banner blindness. From ConversionXL.

Heatmaps provide an even more relevant example, showing us how humans skim down the left side of a webpage in an F-shaped pattern, without processing everything. Note how people are getting accustomed to ads and tuning them out. But you’ve probably heard of banner blindness; the exciting twist is that this has mutated so that people ignore anything that even looks like an ad. Like, say, carousels: turns out hero image carousels generate the same blindness, and consequently waste a lot of important space. So please don’t use them!

There is another wrinkle to this content discovery hurdle, which usability consultant Jakob Nielsen sums up succinctly in his Nielsen Norman Group article:

“How users read on the web: they don’t”.

Jakob Nielsen

Humans are wired for language, but specifically for speaking it, and not for reading it. Evolution hasn’t had nearly enough time to catch up to the Gutenberg press, and so we skim. Users at most have the time to read around 20% of the words on a webpage during an average visit. And even if we do read something, we will probably forget it, because, spoiler alert, our memories are garbage.

Even More Minefields

 discovery, thought, and action.There are tons of pitfalls that users can struggle with over the different steps of human interactions: discovery, thinking, and acting/decision-making.

The section above outlined the pitfalls of discovery, which is just the first step in human interactions. There are tons of other problems that arise in the steps that follow: thinking, interacting, and decision-making. I will spare you the novel and give you the highlights: people come from different backgrounds, cultures, and places, and often misinterpret the message; they create and reinforce incorrect mental models of the world; they’re irrational, often making emotionally-biased or too-quick snap decisions instead of thoughtful judgments; they make all kinds of mistakes, from motor malfunctions and slips to memory biases and full-on gaps.

Now What?

To be clear, I’m not telling you all of this so you feel bad, and then try to correct your own behavior. I’m telling you so you can accept these limitations, expect them from your users, and adapt as a designer. There is hope. In my next article, I will outline suggestions for enhancing usability and reducing friction around some of these struggles. But I want to touch on the biggest challenge in the meantime, so you can start adapting your design practices: stop designing experiences for us, for the “interactive 1%”. Before, I asked you to think about how much credit you give users. I think often the truth is that we give our users far too much credit. Maybe we assume people will do the right thing, or that they’ll understand if they just take time to read through the page and figure it out. I don’t think this is doing our users any favors. We’ve seen that they can’t be expected to process something the same way that we do, and they won't keep trying for more than a few seconds.

It’s easy to misjudge intricate interaction patterns as common sense because we are extremely familiar with them. Even basic interactions can be difficult to understand for “pedestrians”—this was a term an old design professor used to describe any non-designer. The biggest mistake designers make, in my humble opinion, is leaning too heavily on design trends without checking for visual communication basics. Designers are taking the signifiers out of interactions more and more, in the name of aesthetic value, but at the cost of hurting usability and adding unnecessary confusion. I know flat design is sexy and everything, but make sure your buttons actually look like clickable buttons before—and after—you ship.

Do your due diligence and make sure you aren’t alienating anyone before jumping into design. Do some user research to understand your users’ needs as best you can, prioritize those needs, then start with the basics. Conduct usability tests to understand how users try to meet those needs, making sure your designs serve the user's purpose and fade into the background.

Finally, remember that it’s a mistake to assume that our users’ needs and expectations will be much like our own, and simply design for ourselves. Psychology offers us valuable insights towards what users actually need, and a little effort toward understanding our users can go a long way towards creating more successful designs.

Categories: Drupal Universe

Give where we live: #AmplifyAustin and nonprofit giving

Tue, 2016-03-08 19:52

Four Kitchens (via DrupalFire)

Tonight at 6 PM, Amplify Austin kicks off its 24-hour charitable giving campaign. Although Four Kitchens has a distributed workforce all over the country, we were founded and have our headquarters in Austin. Amplify Austin encourages community members to “give where we live and help where we can.” So, we’re walking the walk and announcing that Four Kitchens will donate $1,000 to Amplify Austin. Every nonprofit the Web Chefs donate to will receive an extra $50 from us.

Categories: Drupal Universe

Trip Report: Lesbians Who Tech Summit

Tue, 2016-03-08 17:30

Four Kitchens (via DrupalFire)

The Lesbians Who Tech Summit took place in San Francisco, February 25-28, 2016. In this edition of Trip Report, Four Kitchens’ Web Chef Alex Hicks tells us what the highlights were for her.

Categories: Drupal Universe

AWS Lambda Functions

Tue, 2016-03-08 00:00

Development Seed (via DrupalFire)

Amazon Web Services has been around for 10 years, with S3 buckets and EC2 instances having fully become part of the global developer consciousness. However, there is more beyond EC2, higher level services that can greatly simplify cloud services, at a cheaper cost, and requiring little maintenance.

We recently worked on osm-stats for the Missing Maps project, where contributions to OpenStreetMap are processed in real-time, badges are awarded to users, and displayed via user pages and leaderboards. Most of the contributions for the Missing Maps project occur during mapathons where hundreds of volunteers submit edits and additions over a couple of hours. This meant that the system would need to handle large spikes of activity where thousands of edits were added. Since the site would be largely idle most of the time, until a mapathon occurred, we wanted an alternative to having multiple EC2 instances. After using Lambda functions to solve this problem, we’d like to show you the benefits of using Lambda and how to implement and deploy code on AWS.

Aren’t lambda functions a [insert most any language here] thing?

The term originates from the lambda calculus, a logic system developed in 1936 by Alnozo Church, a mathematician and Alan Turing’s Doctoral advisor. Developers will likely have a familiarity with the term lambda function since it has become a feature of most major programming languages. A lambda function is an anonymous function (that is, it has no name), that takes in a single variable input. They are used when a function is made for a one time or limited use and are able to be described with a more concise syntax then a regular function.

Who is the real Alonzo Church?
Alonzo Church, explaining the Entscheidungsproblem

AWS Lambda functions

An AWS Lambda function is a collection of code with a single entry point, or handler, and can be written in either Node.js (0.10.26), Python (2.7), or Java (8). While AWS Lambda functions do take a single input, they are of course not anonymous functions or else there would be no way to invoke them from the outside world. A Lambda function, generally, can be thought of as a simple function taking a single input and performing some transformation. Yet they are not restricted to simple operations, and can be quite complex since libraries can be uploaded to the function. The Lambda function works by being configured to fire in response to some event, such as data added to a Kinesis stream, or files uploaded to an S3 bucket. Behind the scenes, Amazon stores the Lambda function code and configuration on S3 and when an event fires, it creates (or possibly reuses) a container, and passes the event data to the function handler.

With this architecture AWS handles the management of the function and gives users three main advantages:

Serverless (simple)

Lambda functions don’t require the maintenance of a server. The resources a lambda function uses is set only by specifying it’s memory usage, from 128 MB to 1536 MB. CPU speed is scaled as memory goes up and the memory allocation can be changed at any time.

Auto-scaling (smart)

There is no scaling to enable or to configure. Lambda functions spawn as necessary to keep up with the pace of events, although bandwidth may be restricted depending on other services accessed (e.g., bandwidth to a Kinesis stream is based on number of shards in the stream).

Cost-effective (cheap)

Compared to an EC2 instance which is up 24/7 and incurring costs, you are only charged based on how much the function runs, with no costs when it is not running. Furthermore, a function that has been allocated 512 GB of memory only costs 3 cents for every hour of computation. For a function that takes 1 second, those 3 cents can buy you over 3000 invocations of your function. Even for large scale operations, that are performing millions of functions a month, the cost will still typically be less than $20.

Deploying Lambda functions with Python and boto3

The AWS console is a great way to get started on Lambda functions and steps you through the process of creating one and includes several templates for different languages. The only thing that’s missing from this tool is a more automated way to add new functions and update existing ones. The AWS CLI (command line interface) is very useful for this, however when the Lambda functions are complex (with event source mappings and IAM roles and policies) doing these actions in Python scripts using boto3 is easier.

Using a simple example, I’ll demonstrate how to use boto3 to create a function with an associated role and policies, and how to update that code via Python scripts. We’ll start with a simplified version of one of the AWS Lambda example templates in the file lambda.py.

{% highlight python %}
import base64
import json

def lambda_handler(event, context):
print(“Received event: “ + json.dumps(event))
for record in event[‘Records’]:
# Kinesis data is base64 encoded so decode here
payload = base64.b64decode(record[‘kinesis’][‘data’])
print(“Decoded payload: “ + payload)
return ‘Successfully processed {} records.’.format(len(event[‘Records’]))
{% endhighlight %}

Next, create a zip file containing the code including any additional dependencies needed in the same directory (boto3 is already included).

$ zip lambda.zip lambda.py

We’ll then use a python script to create a Kinesis stream, an IAM access role, create a Lambda function with the zip file, then finally map the stream to the Lambda function.

{% highlight python %}
#!/usr/bin/env python

import time
import json
import boto3

kinesis = boto3.client(‘kinesis’)
iam = boto3.client(‘iam’)
l = boto3.client(‘lambda’)

def create_stream(name):
“”” Create kinesis stream, and wait until it is active “””
if name not in [f for f in kinesis.list_streams()[‘StreamNames’]]:
print ‘Creating Kinesis stream %s’ % (name)
kinesis.create_stream(StreamName=name, ShardCount=1)
else:
print ‘Kinesis stream %s exists’ % (name)
while kinesis.describe_stream(StreamName=name)[‘StreamDescription’][‘StreamStatus’] == ‘CREATING’:
time.sleep(2)
return kinesis.describe_stream(StreamName=name)[‘StreamDescription’]

def create_role(name, policies=None):
“”” Create a role with an optional inline policy “””
policydoc = {
“Version”: “2012-10-17”,
“Statement”: [
{“Effect”: “Allow”, “Principal”: {“Service”: [“lambda.amazonaws.com”]}, “Action”: [“sts:AssumeRole”]},
]
}
roles = [r[‘RoleName’] for r in iam.list_roles()[‘Roles’]]
if name in roles:
print ‘IAM role %s exists’ % (name)
role = iam.get_role(RoleName=name)[‘Role’]
else:
print ‘Creating IAM role %s’ % (name)
role = iam.create_role(RoleName=name, AssumeRolePolicyDocument=json.dumps(policydoc))[‘Role’]

# attach managed policy
if policies is not None:
for p in policies:
iam.attach_role_policy(RoleName=role['RoleName'], PolicyArn=p)
return role

def create_function(name, zfile, lsize=512, timeout=10, update=False):
“”” Create, or update if exists, lambda function “””
role = create_role(name + ‘_lambda’, policies=[‘arn:aws:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole’])
with open(zfile, ‘rb’) as zipfile:
if name in [f[‘FunctionName’] for f in l.list_functions()[‘Functions’]]:
if update:
print ‘Updating %s lambda function code’ % (name)
return l.update_function_code(FunctionName=name, ZipFile=zipfile.read())
else:
print ‘Lambda function %s exists’ % (name)
for f in funcs:
if f[‘FunctionName’] == name:
lfunc = f
else:
print ‘Creating %s lambda function’ % (name)
lfunc = l.create_function(
FunctionName=name,
Runtime=’python2.7’,
Role=role[‘Arn’],
Handler=’lambda.lambda_handler’,
Description=’Example lambda function to ingest a Kinesis stream’,
Timeout=timeout,
MemorySize=lsize,
Publish=True,
Code={‘ZipFile’: zipfile.read()},
)
lfunc[‘Role’] = role
return lfunc

def create_mapping(name, stream):
“”” add a mapping to a stream “””
sources = l.list_event_source_mappings(FunctionName=name,
EventSourceArn=stream[‘StreamARN’])[‘EventSourceMappings’]
if stream[‘StreamARN’] not in [s[‘EventSourceArn’] for s in sources]:
source = l.create_event_source_mapping(FunctionName=name, EventSourceArn=stream[‘StreamARN’],
StartingPosition=’TRIM_HORIZON’)
else:
for s in sources:
source = s
return source

name = ‘alonzo’

create kinesis stream

stream = create_stream(name)

Create a lambda function

lfunc = create_function(name, ‘lambda.zip’, update=True)

add mapping to kinesis stream

create_mapping(name, stream)

{% endhighlight %}

If it runs without error, you should have an IAM role named alonzo_lambda, and a Kinesis stream and lambda function named alonzo.

Now, to test it. Use the AWS CLI to add a JSON record to the stream.

$ aws kinesis put-record --stream-name alonzo --data "{'0': 'the', '1': 'lambda', '2': 'calculus'}"

You should get back JSON indicating the ShardId. Take a look at the logs in CloudWatch to see if the function worked. Under Logs there should be an “/aws/lambda/alonzo” log group. Within that are different log streams. New log streams will be created periodically, but a single log stream may hold the logs from more than a single invocation of the function. You should see the output of the event and the decoded JSON we went into the stream.

the lambda logs
Memory usage and duration to help plan memory allocation and expected costs

caveat emptor: While Lambda functions cost nothing when not running, it is typically used in a system where there are other resources which do cost something. Kinesis streams are charged per hour per shard. This example only creates a single shard so your alonzo stream will cost you $0.36 a day. When your done playing, make sure you delete the resource through the AWS management console.

Security Considerations

In order for Lambda functions to access other AWS services, such as S3, a Kinesis stream, or a Virtual Private Cloud, they must be granted access through policies using the Identify Access Management (IAM) service. A role should be created specifically for your Lambda function, and then policies added to that role to grant access to the services mentioned above.

If your lambda function requires access to an EC2, RDS or other resource inside a VPC and those have restricted access, more work is required to access them with the Lambda function. Just granting a policy to allow VPC configuration is not enough (although that too is required). The Lambda function must be assigned at least one security group (as shown below), and then you must add an Inbound Rule to the EC2 or RDS security group to allow access to the Lambda function security group. To keep organized, it is recommended to create a security group specifically for each service (e.g., Lambda, EC2 instance) and give it the same name as your service name (e.g., alonzo_lambda).

allow lambda VPC access
Assign a VPC, subnets, and at least one security group to the lambda function

A drawback when doing this is once ‘placed’ within your VPC, the function will be unable to access any other resource outside of your VPC (as if it is within the internal network). To gain access to the outside a NAT gateway must be set up to route responses back to the Lambda function.

Conclusion

The example above uses a pull model where it pulls the data from the Kinesis stream. Other services, such as S3 or your own service, can invoke the Lambda function directly, which is the push model. See the Lambda documentation for a full list of event sources. An example of how the push model works is when monitoring additions to an S3 bucket. To do this an event is added to the bucket directly and the Lambda function is invoked when the criteria is met. In addition to this, you could have the Lambda function automatically update metadata in a database, process the new data, or even deploy newly uploaded code to additional Lambda functions, the possibilities are endless.

Breaking down problems into a series of functions that each operates on discrete variables is exactly what the lambda calculus was all about. Even if AWS Lambda functions aren’t lambda functions in the truest sense, no doubt Alonzo Church would feel proud of AWS’s use of the term, and find it in the spirit of the lambda calculus.

Categories: Drupal Universe

Drupal Association Elections 2016 - Reasons You Should Vote For Me

Fri, 2016-03-04 21:40

Matthew Saunders (via DrupalFire)

When deciding on Board Positions for a non-profit like the Drupal Association, I try to be as logical as I can in determining who might be the best choice. A focus on skills, experience, and board needs helps me winnow down the field. As we get closer to voting in the election, it seemed like I should underline my skill set using this lens.

Vote in the Drupal Association Elections

Reason 1
Experience

  • Has the candidate had experience working in the non-profit space?
  • Has the candidate had board experience?
  • Does the candidate have educational background that supports the board's needs?
  • Does the candidate have work experience that supports the board's needs?

My background supports this.

  • Board of Directors for Drupal Association
  • Board of Directors for Crown Pointe Academy
  • Policy Committee for Crown Pointe Academy
  • 8 years of nonprofit management experience including grant making and board management
  • 2 University programs in non-profit management - one certification and a Masters Degree

drupaldrupal association election 2016votematthews

Categories: Drupal Universe

Hiring and onboarding: the 48 hour rule

Thu, 2016-03-03 18:00

Four Kitchens (via DrupalFire)

Bringing a new member into a team can be challenging. At Four Kitchens here’s one step we found makes the onboarding process easy to manage, understand, and verify. We call it the “48-hour rule”.

Categories: Drupal Universe

Drupal Association Board of Directors 2016 - I Understand Board Governance and Responsiblities

Thu, 2016-03-03 16:23

Matthew Saunders (via DrupalFire)

Vote in the Drupal Association Elections

Legal Responsibilities

There are main three legal responsibilities for boards of nonprofits in the U.S. - the specific statutes vary a little from State to State.

The long and short is, if you are coming into a Board position with your own agenda, an axe to grind, and a desire to change the way things are being done, it will end up being an exercise in futility for both you and the rest of the team. No single Board member has any real "power", a board acts as a single unit to make strategic decisions. Once those decisions are made, they must speak as one even if personally you disagree with the decision made.

Still this gives you an idea of the nature of what is expected - just a taste.

drupaldrupal association election 2016

Categories: Drupal Universe

Sentinel-2 imagery live for comparison

Thu, 2016-03-03 00:00

Development Seed (via DrupalFire)

Sentinel-2 is now live on the Satellites in Global Development Landscape Report. Sentinel-2 is the European Space Agency’s newest satellite providing open imagery data. Its 10m resolution imagery and 13 spectral bands make it particularly useful for tracking climate change, land monitoring, and disaster response. The Landscape Report is a living document we’ve helped to build about the uses of satellite data for global development.

Sentinel-2 on landscape report

Categories: Drupal Universe

Who's Who in VR

Wed, 2016-03-02 10:14

Lullabot (via DrupalFire)

Some of us at Lullabot have been following the Virtual Reality and WebVR scene for a couple of years now. It’s a rich landscape with a lot of interest being thrown into the ring and attracting some high stakes players in the industry. We thought we’d share with you who some of the top hardware companies are in this space and what they’re building to advance the future of VR.

Facebook’s Oculus, and Samsung

Facebook bought Oculus for $2b in March of 2014. Oculus makes a tethered headset called the Rift which uses a Samsung OLED screen, headphones, Xbox and remote controllers, and positional tracking. They also have hand-tracked controllers which will be sold separately.

Oculus Rift CV1

The Rift has had more than a few versions so far. The Development Kit 1 and 2 (commonly called the DK1 and DK2) were limited in production and sold to developers for building experiences. There were also some prototypes shown off but not released such as the HD prototype, Crystal Cove, and Crescent Bay. The consumer version (shown above) is selling for $599 and will be shipping to consumers in the first and second quarter of this year. That doesn’t include the high-end computer you’ll also need to run this technical marvel.

Samsung partnered with Oculus to produce a mobile headset called the GearVR which uses about five possible Samsung phone models as the screen and processing for apps bought through the Oculus Store which you pay for through Samsung Pay.

Samsung Gear VR

The GearVR is the most highly polished VR experience on the market. Samsung’s Oculus store is really locked down the way Apple’s app store is, and you can only use a few different Samsung phones (Note 4, Note 5, S6, S6 Edge and S6 Edge plus) but this helps ensure a superior VR experience from the moment you snap your phone into the lightweight headset. Headsets sell for $100USD and the phones can run you from somewhere around $400 to $800. Still the best experience for under $1000.

Valve's SteamVR, and HTC

Valve is the maker of the SteamVR software platform. HTC partnered with Valve to produce the tethered headset called the HCT Vive which uses an HTC screen, hand controllers, positional tracking, and a front facing camera.

HTC Vive

The Vive’s big differentiator is what it calls “Room Scale” VR. There are two laser position sensors which can track an area of up to 15x15 ft (4.5 meter) and capture the user, allowing you to move around within a virtual space. You can see what I mean by watching this video of Fantastic Contraption, which is being built for the Vive.

Again, being a tethered headset means that along with buying the headset you also need a high-end computer to run games and applications at that magical 90fps smoothness.

Google’s Cardboard, and Magic Leap

Google makes the software and a very inexpensive open source mobile headset called Cardboard to achieve the dual rendering on any Android or iOS phone. Just fold your cardboard like a puzzle, insert the lenses, download the software, and insert your phone.

Google Cardboard

While Google Cardboard is making VR as cheap as possible and therefore accessible to the widest range of consumers, the experience (while amazing) is still sub-par to that of many others. But then if you haven’t experienced the other solutions, you’re not really going to know the difference anyway, so you really have nothing to lose in trying out Cardboard.

Magic Leap is an Augmented Reality company whom Google invests in which supposedly uses retinal projection (no one has yet seen this device) to overlay digital images over the real world.

Magic Leap

They have released a few videos, and they’ve hired Neal Stephenson, the author of the infamous Snow Crash as their “Chief Futurist”. Google invested $542m USD in 2014. Total funding is somewhere around $1.4b USD and the post-money valuation on Magic Leap is around $4.5b USD. Needless to say the people who have seen this technology are being wowed, but the secrecy around this may also be partly hype. We just don’t know, but we’re very hopeful.

Google has also reportedly created a department for VR and there are several job listings now that mention VR in them.

Sony’s PlayStation VR

Sony is building VR for their Playstation 4 platform called PlayStation VR which uses a tethered headset, positional tracking, and hand controllers connected to their video game console.

Sony Playstation VR

PlayStation VR has been said to be working on 100s of game titles and is of course, mostly focused on the gaming market. They had an earlier prototype you may have heard of, Project Morpheus. The consumer-grade hardware should launch in the first half of 2016 and with many people already owning a PS4, they have a great market and a leg up on those who still need to buy a high-end computer.

These are some of the major players. Others that are worth noting are:

Friendly reminder: this is by no means a comprehensive list, just some of the top players.

It’s also being speculated that Apple is jumping into VR/AR space as well in that it holds several patents related to VR, has hired a human-computer interaction researcher who specializes in 3D interfaces, and hired a former Microsoft employee who worked on the HoloLens. Read some more here for other evidence.

Categories: Drupal Universe

Drupal Association Election 2016 - Why am I Qualified?

Wed, 2016-03-02 02:39

Matthew Saunders (via DrupalFire)

Vote in the Drupal Association ElectionsI've described myself as a cuckoo. I was dropped into the nest of opensource folks 10 years ago, and ended up making it my family. I'm that fellow who took a different path in making a technology career. I think that describes a lot of us in the Drupal community though. My background is in Theatre and Visual Arts. However, I have a certification in non-profit management and my Master's focused on technology and governance.

drupaldrupal association election 2016

Categories: Drupal Universe

Case Story — NBC.com

Tue, 2016-03-01 19:00

Four Kitchens (via DrupalFire)

NBC.com: Manage the content once, then deliver it across all kinds of different platforms. And make it fast!

Categories: Drupal Universe

Adios: a lightweight process manager for node

Tue, 2016-03-01 07:00

Four Kitchens (via DrupalFire)

What do you do when you have a web server that needs to cleanly close all open connections before shutting down but the existing process management solutions are more involved than you’d like? You make your own.

Categories: Drupal Universe

OpenStreetMap Badges and Leaderboards

Tue, 2016-03-01 00:00

Development Seed (via DrupalFire)

OpenStreetMap now has real-time user analytics. We’ve rolled user profiles and leaderboards into Missing Maps, a project to map the most vulnerable places in the developing world on OSM.

Get your badges!

Badges reward users for different types of contributions, such as the number of buildings created or kilometers of road added. Every OSM user who contributes to a Missing Maps project now has badges for progress tracking.

Check out Missing Maps user profiles

Track your mapathons with leaderboards

Live leaderboards allow you to track contributions in real-time. They are great for powering a mapathon or tracking an activation. OSM users can now compare their contributions on live leaderboards.

Check out Missing Maps user profiles

Working with the American Red Cross we developed the infrastructure to make real-time analytics work. Since 2014, Missing Maps volunteers have made more than 22 million edits. Every contribution with a #missingmaps hashtag is now tracked in real-time. The infrastructure that powers Missing Maps has the potential for application at scale across OSM.

The implementation code is all open source on GitHub and builds on our previous work on real-time OSM tracking. We hope to roll out badges and leaderboards to more corners of OSM soon.

Categories: Drupal Universe

Weekly Watercooler #137

Mon, 2016-02-29 22:00

Four Kitchens (via DrupalFire)

This week we’re talking about company culture in our latest edition of Sharp Ideas, new roles and changes within Four Kitchens, and how some people really can’t figure out how many days are in a week.

Categories: Drupal Universe

Preparing Four Kitchens for the next ten years

Mon, 2016-02-29 15:00

Four Kitchens (via DrupalFire)

We’re very excited to announce some big changes at Four Kitchens!

Categories: Drupal Universe

Ballot box stuffing in Uganda Elections

Mon, 2016-02-29 00:00

Development Seed (via DrupalFire)

Uganda held general elections on February 18th, that were widely criticized by media and independent observers. On Thursday, the Ugandan Electoral Commission released the results in PDF. Many concerns about the electoral process will not be evident in the results alone, however, analysis of the data can still be valuable in detecting some types of fraud.

Evidence of ballot box stuffing

Our preliminary analysis found evidence of blatant ballot box stuffing in concentrated areas. We used “election fingerprinting” to quickly look at the distribution of election returns and identify anomalies.

Election fingerprints are two-dimensional histograms of the number of units for a given voter turnout (x axis) and the percentage of votes (y axis) for the winning party (or candidate)

Ugandan election fingerprint

Results in the upper right corner (very high turnout, very high percentage of votes for the winner) are clear signs of ballot stuffing. Bi-modal distributions can arise naturally in certain countries but generally don’t differ by average turnout and are often a sign of incremental fraud.

Of the 28,010 voting stations, 130 of them had 100% voter turnout, 113 of which voted 90% or more for the eventual winner and incumbent, Yoweri Museveni (42,768 votes for him in these stations). 105 of these highly suspicious stations occurred in just 4 districts:

Ugandan districts
Mbarara, Sembabule, Kiruhura, and Nakaseke

Open Election data

This analysis was possible because the election data was provided at the polling station level by the Ugandan Electoral Commission. To support further analysis of the data, we parsed this PDF and converted it to a machine-readable format (CSV). Because of the size of the file, it was difficult to parse using Tabula so we wrote custom scripts relying heavily on pdfminer.

Truly open elections mean providing timely, machine-readable, and easily accessible results. We look forward to seeing what you do with the data. Find it on GitHub.

Categories: Drupal Universe

Why I'm Running for Drupal Association Re-election

Sun, 2016-02-28 19:23

Matthew Saunders (via DrupalFire)

Vote in the Drupal Association ElectionsThis is the first in a series of posts I'm going to write leading up to the Drupal Association elections. I had a funny chat with a supporter a day or two ago. It went something like this:

So you thought, "I have too much free time. I need to become a board member." LOL You are a more patient person than me, good sir. You have my vote.

drupaldrupal association election 2016

Categories: Drupal Universe

AMPing up Drupal

Fri, 2016-02-26 22:43

Lullabot (via DrupalFire)

Today we are proud to announce a new Drupal 8 module that provides support for the Accelerated Mobile Pages (AMP) Project. The AMP Project is a new open source initiative which drastically improves the performance of the mobile web. In January 2016 Lullabot and Google started working together to create the Drupal AMP module. A beta version of AMP module for Drupal 8 is available immediately, and we are starting work on a Drupal 7 version of the module that will be available in mid-March.

In many cases, the mobile web is a slow and frustrating experience. The AMP Project is an open source initiative that embodies the vision that publishers can create mobile optimized content once and have it load instantly everywhere. When AMP was first introduced last October, many commentators immediately compared it to Facebook's Instant Articles and Apple's News app. One of the biggest differentiators between AMP and other solutions is the fact that AMP is open source.

AMP HTML is, essentially, a subset of HTML. And it really makes the web fast. AMP HTML is designed to support smart caching, predictable performance, and modern, beautiful mobile content. Since AMP HTML is built on existing web technologies, publishers continue to host their own content, craft their own user experiences, and flexibly integrate their advertising and business models -- all using familiar tools, which will now include Drupal!

One of the most touted features of Drupal is its flexibility, so making Drupal produce AMP HTML has required a lot of careful consideration of the design approach. To make Drupal output AMP HTML, we have created an AMP module, AMP theme, and a PHP Library.

When the AMP module is installed, AMP can be enabled for any content type. At that point, a new AMP view mode is created for that content type, and AMP content becomes available on URLs such as node/1/amp or node/article-title/amp. We also created special AMP formatters for text, image, and video fields.

The AMP theme is designed to produce the very specific markup that the AMP HTML standard requires. The AMP theme is triggered for any node delivered on an /amp path. As with any Drupal theme, the AMP theme can be extended using a subtheme, allowing publishers as much flexibility as they need to customize how AMP pages are displayed. This also makes it possible to do things like place AMP ad blocks on the AMP page using Drupal's block system.

The PHP Library analyzes HTML entered by users into rich text fields and reports issues that might make the HTML non-compliant with the AMP standard. The library does its best to make corrections to the HTML, where possible, and automatically converts images and iframes into their AMP HTML equivalents. More automatic conversions will be available in the future. The PHP Library is CMS agnostic, designed so that it can be used by both the Drupal 8 and Drupal 7 versions of the Drupal module, as well as by non-Drupal PHP projects.

We have done our best to make this solution as turnkey as possible, but the module, in its current state, is not feature complete. At this point only node pages can be converted to AMP HTML. The initial module supports AMP HTML tags such as amp-ad, amp-pixel, amp-img, amp-video, amp-analytics, and amp-iframe, but we plan to add support for more of the extended components in the near future. For now the module supports Google Analytics, AdSense, and DoubleClick for Publisher ad networks, but additional network support is forthcoming.

While AMP HTML is already being served by some of the biggest publishers and platforms in the world — such as The New York Times, The Economist, The Guardian, BBC, Vox Media, LinkedIn, Pinterest, and many more! — you don't have to be a large publisher to take advantage of AMP. Today, any Drupal 8 site can output AMP HTML using the AMP module. We invite you to try it out and let us know what you think!

Finally, if you are interested in this topic and want to learn more about publishing AMP with Drupal, please leave a comment on our DrupalCon New Orleans proposal.

Categories: Drupal Universe

New podcast episode! Sharp Ideas 16.2 - Company Culture

Fri, 2016-02-26 22:03

Four Kitchens (via DrupalFire)

It’s the last Friday of the month and we’ve got another episode the Sharp Ideas podcast. On this episode, we’re joined by the Four Kitchens Web Chefs Todd Nienkerk, Elia Albarran, and Caris Hurd to talk about company culture, communities of practice, remote working, participatory culture, and why Four Kitchens never had a ping-pong table in the break-room.

Categories: Drupal Universe

The rise of Drupal in India

Fri, 2016-02-26 17:04

Dries Buytaert (via DrupalFire)

Earlier this week I returned from DrupalCon Asia, which took place at IIT Bombay, one of India's premier engineering universities. I wish I could have bottled up all the energy and excitement to take home with me. From dancing on stage, to posing for what felt like a million selfies, to a motorcycle giveaway, this DrupalCon was unlike any I've seen before.

Drupalcon group photo

A little over 1,000 people attended the first DrupalCon in India. For 82% of the attendees, it was their first DrupalCon. There was also much better gender diversity than at other DrupalCons.

The excitement and interest around Drupal has been growing fast since I last visited in 2011. DrupalCamp attendance in both Delhi and Mumbai has exceeded 500 participants. There have also been DrupalCamps held in Hyderabad, Bangalore, Pune, Ahmedabad Jaipur, Srinagar, Kerala and other areas.

Indian Drupal companies like QED42, Axelerant, Srijan and ValueBound have made meaningful contributions to Drupal 8. The reason? Visibility on Drupal.org through the credit system helps them win deals and hire the best talent. ValueBound said it best when I spoke to them: "With our visibility on drupal.org, we no longer have to explain why we are a great place to work and that we are experts in Drupal.".

Also present were the large System Integrators (Wipro, TATA Consultancy Services, CapGemini, Accenture, MindTree, etc). TATA Consultancy Services has 400+ Drupalists in India, well ahead of the others who have between 100 and 200 Drupalists each. Large digital agencies such as Mirum and AKQA also sent people to DrupalCon. They are all expanding their Drupal teams in India to service the needs of growing sales in other offices around the world. The biggest challenge across the board? Finding Drupal talent. I was told that TCS allows many of its developers to contribute back to Drupal, which is why they have been able to hire faster. More evidence that the credit system is working in India.

The government is quickly adopting Drupal. MyGov.in is one of many great examples; this portal was established by India's central government to promote citizen participation in government affairs. The site reached nearly two million registered users in less than a year. The government's shifting attitude toward open source is a big deal because historically, the Indian government has pushed back against open source because large organizations like Microsoft were funding many of the educational programs in India. The tide changed in 2015 when the Indian government announced that open source software should be preferred over proprietary software for all e-government projects. Needless to say, this is great news for Drupal.

Another initiative that stood out was the Drupal Campus Ambassador Program. The aim of this program is to appoint Drupal ambassadors in every university in India to introduce more students to Drupal and help them with their job search. It is early days for the program, but I recommend we pay attention to it, and consider scaling it out globally if successful.

Last but not least there was FOSSEE (Free and Open Source Software for Education), a government-funded program that provides affordable computers to Indian students. To date, 2,000 universities participate in the program and nearly 2 million units have been sold. With curriculum translated into 22 local languages, students gain the ability to self-study and foster their education outside of the classroom. I was excited to hear that FOSSEE plans to add a Drupal course to its offerings. There is a strong demand for affordable Drupal training and certifications throughout India's technical colleges, so the idea of encouraging millions of Indian students to take a free Drupal course is very exciting -- even if only 1% of them decides to contribute back this could be a total game changers.

Open source makes a lot of sense for India's thriving tech community. It is difficult to grasp the size of the opportunity for Drupal in India and how fast its adoption has been growing. I have a feeling I will be back in India more than once to help support this growing commitment to Drupal and open source.

Categories: Drupal Universe

Pages