This session will address how complex social networks of various types can be built with Drupal. The nuances of Feeds, Walls, Sharing (both private and public), Friends, Following, and (most importantly) Privacy will be explored, and options for building these features with Drupal will be discussed, with examples from the real world.
This is an advanced session but anyone with social-networking dreams would benefit from learning the challenges in building one.
How do you make a network "Social"?
A Drupal site is a network of users and content, but it is not inherently social. It's greatest original feature was the ability for multiple users to collaborate in managing the system. We'll talk about what makes networks social and what makes them fun: Feeds, Activity, & Sharing.
"News Feeds" can show not only your friend's content, but your friends-of-your-friends content when the target is your friend. Sound complicated? It is!
"Activity" is when you become friends with someone, join the site, "like" something, commented on something... the list goes on. Without activity display, a social network feels more like a MySpace than Facebook. But be careful... if you list each new activity all of your friends make, it can get clogged with redundant announcements. Learn how we devised a system that lets us smartly group recent activity taken by user, taxonomy term, or node.
Great social networks may be easy to use, but the logic behind true social networks is very complex.
The Details
- Building news feeds for friends and "followed" terms with Search API with Apache Solr
- How to let users "share" content and write on other users "walls".
- Creating an "activity" system that shows users activity around the site and can group similar activity together.
- Privacy & Permissions: How to give control where control is due.
About the Speaker
Jonathan is the Founder & CTO of ThinkDrop Consulting, a Drupal consulting company in Brooklyn, New York and has been developing with Drupal for more than 7 years, coding with PHP for more than 11 years, and hypertexting with HTML since 1997.
This session was originally given at DrupalCampNYC 10 in December of 2012
Slides available at https://docs.google.com/present/view?id=dg3sc8t9_2cbxfbnqg
NOTE: I apologize for the layout problems, Google Docs Presentations look different on different operating systems
A lecture prepared for the first session of the "Certificate in Community Management" proposed by Ichec. More info available here: http://www.ichec-entreprises.be/certificat_en_community_management-6993.html
This is the slide deck used to support the 2 1/2 days of training given about Community Management at ICHEC Entreprises for the "Certificate in Community Management" - Spring 2012 session
A lecture prepared for the first session of the "Certificate in Community Management" proposed by Ichec. More info available here: http://www.ichec-entreprises.be/certificat_en_community_management-6993.html
This is the slide deck used to support the 2 1/2 days of training given about Community Management at ICHEC Entreprises for the "Certificate in Community Management" - Spring 2012 session
Managing Professional Information Overload (K-ACTE version)Heather Braum
This presentation was given at the K-ACTE conference for Career & Tech Educators in Kansas in July 2012. It is targeted at educators, but most people in any profession would benefit from the information found in this session. It covers tips, resources, and tools to help you better manage professional information overload!
A new proposed mechanism for organizing blog comments for a particular post so that they are most relevant to what the user is looking for when they read the post.
Presentation given at Children England's Virtually Ready conference, 24 January 2013.
**CREDITS**
This presentation is remixed and adapted from “What the F**K is Social Media” by Martha Kagan of espresso.com under Creative Commons Licence Attribution-Non-Commercial 2.5, and added to with nuggets of our own received wisdom (yes, really).
Thanks also to Idealware.org for their excellent Social Media Decision Guide which informs some of the slides on which social media to use.
All images are from iStockphoto.com unless otherwise acknowledged.
http://creativecommons.org/licenses/by-nc/2.5/
The Grow Project Presentation - Venture Lab: Designing a New Learning Environ...Lia
The Grow Project was conceptualised to bridge the gap between theory and practice for children of all ages and capabilities, learning about the natural sciences and specifically, about how things grow. The project is based on three main premises:
1) That we learn more effectively by putting theory into practice.
2) That we can learn from and teach each other.
3) That contact with people from other countries and cultures facilitates inter-cultural tolerance, understanding and respect.
The idea is simple. Children start growing projects, (they can be large or small scale depending on the individual preferences and circumstances of the teams) the details and progress of which are posted on their blogs. The Grow Project is the name of the overall project, but contains sub-projects which are named simply based on whatever is being grown. We have used The Tomato Project as an example, but other projects could be The Sunflower Project, The Runner Beans Project, The Cherry Project etc. Each home page will differ slightly in its design to incorporate what is being grown. Other children growing the same things or children growing different things can follow other teams, offer advice and support to each other and depending on their location, teams may even be able to visit each other in person.
The annotated slides from a webinar I presented for http://www.pkids.org about social media and public health . Links to the recording archive are listed in the first slide notes.
Presentation a BGIedu (Bainbridge Graduate Institute) alumni workshop "Introduction to the Social Web". Topics included Shared Language, Definitions of Social Web, Social Networking, Social Media, Web 2.0, Blogs, etc.
Social Networks and Security: What Your Teenager Likely Won't Tell YouDenim Group
John Dickson's presentation to a group of Chief Security Officers (CSOs) about the security implications of social networking sites such as LinkedIn, Facebook, Twitter and MySpace. He encourages CSOs to approach social networking as a business issue rather than a security issue if they want to maximize their influence.
Data Visualization and Social Network Analysis for Recruiting.Matt Charney
This presentation focuses on how employers can leverage big data to analyze, visualize and utilize visualization to understand how their workforce is connected and who the real influencers are in any organization. Seeing networks at work can help increase retention, boost employee referrals and create higher impact outcomes by allowing HR to focus on who really matters in an organization.
Objectives of attending this session:
1. Attendees will understand what data visualization is, why it matters and how recruiting and HR leaders can apply some of its basic concepts to improving both day-to-day operations and long term strategic outcome within their own organizations.
2. Attendees will learn what data visualization tools, paid and unpaid, are available, how they compare and what they can do to select, implement and optimize these tools within their current HR Technology stack.
3. Attendees will see real life examples of how real recruiting and HR organizations over came real challenges in the real world by using data visualization and learn how these case studies can be applied to their current and future talent practices and processes.
This is the first part of my introduction to cryptography lectures I have presented at numerous institutions in Lithuania. The presentation is based on the book by known cryptography expert Christof Paar.
Managing Professional Information Overload (K-ACTE version)Heather Braum
This presentation was given at the K-ACTE conference for Career & Tech Educators in Kansas in July 2012. It is targeted at educators, but most people in any profession would benefit from the information found in this session. It covers tips, resources, and tools to help you better manage professional information overload!
A new proposed mechanism for organizing blog comments for a particular post so that they are most relevant to what the user is looking for when they read the post.
Presentation given at Children England's Virtually Ready conference, 24 January 2013.
**CREDITS**
This presentation is remixed and adapted from “What the F**K is Social Media” by Martha Kagan of espresso.com under Creative Commons Licence Attribution-Non-Commercial 2.5, and added to with nuggets of our own received wisdom (yes, really).
Thanks also to Idealware.org for their excellent Social Media Decision Guide which informs some of the slides on which social media to use.
All images are from iStockphoto.com unless otherwise acknowledged.
http://creativecommons.org/licenses/by-nc/2.5/
The Grow Project Presentation - Venture Lab: Designing a New Learning Environ...Lia
The Grow Project was conceptualised to bridge the gap between theory and practice for children of all ages and capabilities, learning about the natural sciences and specifically, about how things grow. The project is based on three main premises:
1) That we learn more effectively by putting theory into practice.
2) That we can learn from and teach each other.
3) That contact with people from other countries and cultures facilitates inter-cultural tolerance, understanding and respect.
The idea is simple. Children start growing projects, (they can be large or small scale depending on the individual preferences and circumstances of the teams) the details and progress of which are posted on their blogs. The Grow Project is the name of the overall project, but contains sub-projects which are named simply based on whatever is being grown. We have used The Tomato Project as an example, but other projects could be The Sunflower Project, The Runner Beans Project, The Cherry Project etc. Each home page will differ slightly in its design to incorporate what is being grown. Other children growing the same things or children growing different things can follow other teams, offer advice and support to each other and depending on their location, teams may even be able to visit each other in person.
The annotated slides from a webinar I presented for http://www.pkids.org about social media and public health . Links to the recording archive are listed in the first slide notes.
Presentation a BGIedu (Bainbridge Graduate Institute) alumni workshop "Introduction to the Social Web". Topics included Shared Language, Definitions of Social Web, Social Networking, Social Media, Web 2.0, Blogs, etc.
Social Networks and Security: What Your Teenager Likely Won't Tell YouDenim Group
John Dickson's presentation to a group of Chief Security Officers (CSOs) about the security implications of social networking sites such as LinkedIn, Facebook, Twitter and MySpace. He encourages CSOs to approach social networking as a business issue rather than a security issue if they want to maximize their influence.
Data Visualization and Social Network Analysis for Recruiting.Matt Charney
This presentation focuses on how employers can leverage big data to analyze, visualize and utilize visualization to understand how their workforce is connected and who the real influencers are in any organization. Seeing networks at work can help increase retention, boost employee referrals and create higher impact outcomes by allowing HR to focus on who really matters in an organization.
Objectives of attending this session:
1. Attendees will understand what data visualization is, why it matters and how recruiting and HR leaders can apply some of its basic concepts to improving both day-to-day operations and long term strategic outcome within their own organizations.
2. Attendees will learn what data visualization tools, paid and unpaid, are available, how they compare and what they can do to select, implement and optimize these tools within their current HR Technology stack.
3. Attendees will see real life examples of how real recruiting and HR organizations over came real challenges in the real world by using data visualization and learn how these case studies can be applied to their current and future talent practices and processes.
This is the first part of my introduction to cryptography lectures I have presented at numerous institutions in Lithuania. The presentation is based on the book by known cryptography expert Christof Paar.
OVERVIEW
Twitter Bootstrap is a wildly popular HTML and CSS framework for building websites and web applications. It is the number 1 project on GitHub. Bootstrap supports responsive web design, allowing the layout of your page to adapt to the device (desktop, tablet, mobile). This talk will introduce you to the basics of using Bootstrap and show you how to build responsive web layouts to build your own app.
TARGET AUDIENCE
Beginner web developers
ASSUMED AUDIENCE KNOWLEDGE
Working knowledge of HTML5 and CSS3.
OBJECTIVE
Learn how to use Twitter Bootstrap to quickly build a beautiful, responsive web app.
FIVE THINGS AUDIENCE MEMBERS WILL LEARN
Twitter Bootstrap basics
Bootstrap CSS basics
Bootstrap responsive layouts
Bootstrap components
JavaScript Bootstrap plugins
(Practical) Beyond Responsive Web Design (WordCamp Miami 2011)arborwebsolutions
My presentation from WordCamp Miami 2011, Beyond "Responsive Web Design". This is a totally re-worked version of my previous presentation, with a focus on how to actually implement responsive design.
Social journalism: Community building through social networksJD Lasica
A presentation to the Pacific Northwest Newspaper Association Summit in Seattle on 10 ways to use social networks and social media to engage local readers.
The 10 ideas for building local community:
1. Be first with breaking news
2. Leverage Twitter
3. Enable conversations
4. Get widget-happy!
5. Community video
6. Geocoding & citizen photography
7. Create local map mashups
8. Hook up with Facebook
9. Tap into sharing economy
10. Study, borrow, steal
Responsive Web Design - Introduction & Workflow OverviewAidan Foster
Responsive Design's is a way of making a single website that works well on mobile, tablet, and desktop browsers. Back in 2010 Ethan Marcotte, first coined the term "responsive design" and described it as having 3 components:
Flexible Images
Fluid Grids
CSS Media Queries
Well it seems Ethan let quite a few cats of out bag with this one, and we've been trying to herd those cats ever since.
What started as exclusively a front-end web design technique has expanded to include a whole new range of both front-end and server-side programming techniques. The real challenge came when we also suddenly discovered that tried and true practices for project management, and creative concept development all started to fall apart. It’s not practical to create photoshop mockups of ever page in a site at every device size - There’s simply too many variables to account for in graphic design software.
Responsive Design requires a new process for creating websites, and new ways of interacting with teams and clients.
This presentation will outline a birds-eye-view of Responsive Techniques, Strategies, Tools, and Gotchas of RWD. It will focus on some of the new workflow techniques needed and cover some suggestions for where to go to learn more.
Slide Summary
1-25: History of Responsive Design
26-50: Coding Basics (Developer Focused)
51-57: Progressive Enhancement
58-70: Mobile First
71-93: Responsive Workflows
96-99: Selling Responsive Design
Introduction to Cryptography Parts II and IIIMaksim Djackov
These are the second and third parts of my introduction to cryptography lectures I have presented at numerous institutions in Lithuania. These introduce PRNGs, assymetric ciphers, key exchange, digital signatures and certificates. The presentation is based on the book by known cryptography expert Christof Paar.
The presentation covers the following:
Basic Terms
Cryptography
The General Goals of Cryptography
Common Types of Attacks
Substitution Ciphers
Transposition Cipher
Steganography- “Concealed Writing”
Symmetric Secret Key Encryption
Types of Symmetric Algorithms
Common Symmetric Algorithms
Asymmetric Secret Key Encryption
Common Asymmetric Algorithms
Public Key Cryptography
Hashing Techniques
Hashing Algorithms
Digital Signatures
Transport Layer Security
Public key infrastructure (PKI)
A short introduction to cryptography. What is public and private key cryptography? What is a Caesar Cipher and how do we decrypt it? How does RSA work?
Recommenders Systems tutorial slides from the European Summer School of Information Retrieval (ESSIR).
Covers basic ideas on Collaborative Filtering, Content-based methods, Matrix Factorization, Restricted Boltzmann Machines, Ranking, Diversity.
The slides include material from Xavier Amatriain, Saul Vargas and Linas Baltrunas.
Need a ten minute overview of responsive web design? In this talk we'll talk about the problem responsive web design (RWD) is trying to solve, what RWD is, the basic implementation aspects of RWD and some of the latest developments and sources of information if you want to learn more about RWD.
Building Recommendation Systems on Social Data @KTH - FutureFriday - March 2014Nima Dokoohaki
My talk entitled" Computing in Social Networks: Building Recommendation Systems on Social Data "
Given at Future Friday event, KTH ICT March 2014
The talk is televised by Swedish TV Kunskapkanalen/ UR Samtid
OpenID vs Facebook Connect vs FriendConnectDerek Gallo
Quickly examine the difference of OpenID, FacebookConnect and Google's FriendConnect. What are the Pro's and Con's and which if not all should you use?
Personas were made famous by Alan Moore in "The Inmates are Running the Asylum", a seminal book on user interface design for computer programmers. They have been used for decades in the marketing industry to help target specific market segments with ads and products. Personas help you frame feature discussions while developing your software, guide your communication and conference strategy, and ultimately help you to have a more popular, better project.
This presentation will cover the basics of:
* What is a persona?
* How do I come up with one (or several) for my project?
* What can I do with them?
An overview of Drupal as a Content Management System presented at the Web Content Mavens in Washington, DC by Phase2 Technology Project Manager Joel Sackett.
Appleseed provides Open Access to all its users, while maintaining the privacy and security of your data. The is the first open source, fully decentralized social networking software. Protect your privacy, Move around without losing friends, Support open standards.
Social web for Tech Comm, STC March 2013Anne Gentle
In a world where readers simply expect websites to offer well-connected experiences, technical documentation
teams must consider the possibilities now available to us through collaborative means. Having worked with blogs,
wikis, open source software, and social networking techniques, I want to share what I’ve learned about documentation as conversation. Through my work with the
OpenStack project, I have further refined my approach to technical content strategy with collaborative, community methods. My presentation shares the methods we use with OpenStack, the ways my thinking has changed, pitfalls to avoid, and measurements that help refine the strategy.
2014 TheNextWeb-Mapping connections with NodeXLMarc Smith
Slides from a talk at the 2014 TheNextWeb in Amsterdam.
NodeXL social media network analysis of Twitter reveals six common structures in Twitter networks.
IBM Connections - Bridging the Gap (delivered at DanNotes, Nov 2011)Stuart McIntyre
Stuart McIntyre outlines why organisations need to embrace social technology, why IBM Connections is one of the leading solutions, what features it has, and how to get started.
Delivered at DanNotes - the Danish Lotus user group - in Korsor in late November 2011.
Drupal is an enigma to its initiates and a sonic screwdriver to its experts. In module-land, users solve their own problems, the result being a myriad of puzzle pieces. Every ambitious drupal-focused company is building shortcuts to combine these pieces, be that through their own vertical Distributions, reusable Features or demo frameworks with Drolutions. What markets will Drupal conquer as these concepts mature? How can start-ups and enterprises leverage Drupal's rapid development velocity? How can you play your part in Drupal's vertical revolution?
Use A/B testing to monitor the impact of changes of web page elements that lead to more downloads, user contributed content, increased revenues, or whatever result you want to achieve. A/B testing involves testing two versions of a website - an A version (the control) and a B version (the variation) - with live traffic and measuring the effect each version has on your conversion rate.
Results of A/B tests are used to make informed decisions about how to structure and present content on a site. There is no longer a need to guess what the site's user response is to changes, simply test and look at the trends in the data.
The power and ease of use of the Optimizely framework is further enhanced using the Optimizely Drupal module. We will discuss the current and future integration of A/B testing with Drupal and Optimizely using the Optimizely Drupal module in detail. The presentation will end with a discussion of what future integration of Optimizely with Drupal is desired to further leverage the partnership.
Behat is a tool that makes behavior driven development (BDD) possible. With BDD, you write human-readable stories that describe the behavior of your Drupal site. These stories can then be auto-tested against your website, whether in the midst of development, or on a live site. And yes, it’s as cool as it sounds!
Behat, if embraced by enough Drupal folks, has the potential to vastly improve the way we build and test Drupal websites. Testing language can be developed by module maintainers, and allow nearly codefree testing to be developed by everyone, as needed, per site.
Behat IS NOT unit testing nor a specification testing tool. Behat is a Scenario-oriented BDD framework with functional testing capabilities as part of a communication process between stake-holders and developers. Think Agile User Stories meets Selenium.
Behat is currently used to test Drupal.org, allowing a variety of coders to work on a single site, and ensure that no existing functionality will break as they add new features. Or as it's migrated from one version to another. Imagine that on your site.
We will review Behat (and Mink, and related code), how to use it with Drupal, Drush, and the existing modules/code to support that. We will demo live testing, and so how easy it is to write tests, with and without code.
In all the years of designing for Drupal, the one thing I have learned is to always borrow from the best and build it into a base theme. Now, I know you’re saying to yourself — not another base theme. But why not? If I told you your theme could be responsive from the start, have flexible regions that you didn't have to design for, and that you could avoid the JQuery conflicts that plague Drupal 7, would you be interested?
Drupal Commerce - The Product vs Display Conundrum and How to Explain it to a...nyccamp
A key concept in Drupal Commerce is the Product Display vs Product model used to separate physical products from their display on the website.
Depending on your point of view, this makes perfect sense or is a conceptual or practical nightmare. However you feel about it, understanding the reasoning behind the concept is essential when it comes to planning and implementing a Drupal Commerce project.
http://nyccamp.org/sessions/drupal-commerce-product-vs-display-conundrum-and-how-explain-it-customer
Promotions Vouchers and Offers in Drupal Commercenyccamp
Drupal Commerce is an incredibly powerful suite of modules for creating e-Commerce sites in Drupal. With Rules based pricing it is possible to create highly complex special offers, vouchers and variable pricing. However, this can be a minefield of business logic contradiction and complex rule configuration way beyond what your site administrator can manage easily.
Our clients often come to Drupal with expectations about the features of a content management system (CMS). In many cases, Drupal handles the features they expect. However, not all editorial tools are a part of Drupal Core, and Drupal has addressed these tools with various contributed modules. As a result, Drupal’s editorial space generally lacks a consistent workflow and interface.
Ideally suited to the needs of universities. Workbench incorporates contributed modules and has some new features of its own:
Hierarchical permission inheritance by “Sections” not just content types
Extensible workflow states
Single repository for media management
Modify live content without publishing changes immediately
Workbench provides a unified interface for managing content. In effect, Workbench hides Drupal from you and makes content management about your institution and your website, not about Drupal.
Speaker(s): Ken Rickard
Experience Level: Beginner
Deployment Strategies: Managing Code, Content, and Configurationsnyccamp
Most development shops make use of a "development/staging/production" server model. Maintaining code, content, and configurations across multiple environments can be a bit tricky, particularly since drupal doesn't currently provide any native means to separate configuration from content. This session would discuss the various methods to make sure that your development server looks like your production server. We will touch on version control, the backup and migrate module, and the features module, as well as integrating a deployment management software such as hudson or aegir, and how to scale these solutions from a small application to a large enterprise server architecture.
Speaker(s): Nick Hepner
Experience Level: Intermediate
Drupal Aware Design: Good Techniques for Better Themesnyccamp
Between design and Drupal theme we change gears dramatically in process and thinking. As designers, we craft our work with wowing users in mind, and as themers, we strive to architect the design and make it pop. We can better unify these approaches to save time and work better. Drupal is adept at making virtually any design look great. What can we achieve in design, both individually and as a community? How can we build diverse designs seamlessly without a hitch along the way? We'll talk about how to improve every step of a process, from prototypes to wireframes. We'll discuss resolving complications like handovers in markup and themes that, due to a design's particularities or a time crunch, end up hacky and impossible to extend. We'll also dwell briefly on important ideas like accessibility and semantics, all while creating Drupal-ready designs and themes that perform perfectly across the board!
Here's a brief summary of what we'll tackle:
Some design principles, including Drupal's
Drupal-aware: Design with Drupal, not for Drupal
One design, many layout possibilities
Thinking about Drupal's structure and markup
How to write an awesome theme
Drupal code standards and conventions
Contributing good themes
To Drupal and beyond: Code that lasts
This session is geared toward designers with some HTML/CSS background and theming beginners. We will also work with a little painless PHP.
Speaker(s): Preston So
Experience Level: Beginner
In this session we’ll take a look at 7 unique higher education case studies showcasing the diversity of Drupal solutions in the .edu space. The case studies show Drupal as a solution for everything from departmental web presences to university wide web publishing solutions and learning management systems. Culled from interviews with university IT teams across the country from private to public both large and small, we’ll examine implementation choices, lessons learned and the business reasons that made Drupal the right choice.
Keypoints:
We'll identify the top issues facing Higher Education and how Drupal can help address them.
We'll take a look at seven case studies of Drupal in use in higher ed:
- Drupal as Unit CMS - College of Fine Arts, UT Austin
- Drupal as Flagship - Duke University
- Drupal as Intranet - California State University, Monterey Bay
- Drupal as LMS - ELMS, Penn State University
- Drupal as Lingua Franca - Stanford University
- Drupal as University Wide Solution - Yale University
- Drupal as OOTB software - Open Academy, University of California, Berkeley
We’ll look at lessons learned and resources available to higher education Drupal implementers.
This Session has been presented at Drupal Camp UT Austin.
Drupal 7's theme layer suffered from "Arrays of Doom" and the impenetrable render(). After having to learn and use these tools, the community has rebelled and decided we need to make some major changes in Drupal 8.
Come learn about Twig, a new Symfonic templating language we can use to decrease Drupal's learning curve and increase security on every Drupal site.
Is your site ready for the mobile web? Are you sure? Go ahead, check it on your phone, and your kid's phone, and a tablet, and some Android dealies, and a Bleakberry. And a TV or two. I'll wait.
That was an eye-opener, right?
Web design and front end development has never been more complex than it is now, and it's likely to get worse before it gets better. Should you design your site "Mobile First"? How about "Adaptive" or "Responsive"? What's the difference between those again? I want to talk about why you might want to choose these approaches to your project.
CSS is also not really up to the task of managing all this complexity. Sure, it *can* do it, but pure CSS strains almost to the breaking point under the pressure. So let's welcome Sass to the party. Sass is a CSS preprocessor that gives CSS authors the tools we've been aching for in creating and managing large and complex CSS projects. We'll cover a few of the Sass basics, but the real value here is in the more sophisticated tools that let you manage all the moving parts necessary in creating all this new-fangled wizardry.
We'll cover:
- Mobile First
- Adaptive Design
- Responsive Design
- Stand-alone mobile options
- Sass
- Mobile-focused tools
- Compass
- Survival Kit
- Susy
Drupal and Apache Solr Search Go Together Like Pizza and Beer for Your Sitenyccamp
The Apache Solr Search Integration module provides integration with the (free, open-source) Apache Solr server. This great combination of Drupal with a powerful and flexible search server will make your site irresistible to visitors by providing advanced search features like faceting filtering and by delivering the most relevant search results from your site. The module has been re-written for Drupal 7 to integrate with Facet API and those changes have been backported to a new Drupal 6 branch. Thus, you can use this module for all your projects, as well as setting up a shared search index that allows you to search across different Drupal 6 and Drupal 7 sites. This talk will focus on explaining configurations options in the admin UI to help you quickly and confidently configure the facets, pages, related content blocks, and other features for your site. Highlights may include:
- What are the key Solr concepts you need to understand to get the most out of Solr integration?
- How is the module admin UI organized?
- How do I configure facets, sorts, and content recommendation blocks?
- How can I use additional modules to index file attachments?
This session will address how complex social networks of various types can be built with Drupal. The nuances of Feeds, Walls, Sharing (both private and public), Friends, Following, and (most importantly) Privacy will be explored, and options for building these features with Drupal will be discussed, with examples from the real world.
This is an advanced session but anyone with social-networking dreams would benefit from learning the challenges in building one.
How do you make a network "Social"?
A Drupal site is a network of users and content, but it is not inherently social. It's greatest original feature was the ability for multiple users to collaborate in managing the system. We'll talk about what makes networks social and what makes them fun: Feeds, Activity, & Sharing.
"News Feeds" can show not only your friend's content, but your friends-of-your-friends content when the target is your friend. Sound complicated? It is!
"Activity" is when you become friends with someone, join the site, "like" something, commented on something... the list goes on. Without activity display, a social network feels more like a MySpace than Facebook. But be careful... if you list each new activity all of your friends make, it can get clogged with redundant announcements. Learn how we devised a system that lets us smartly group recent activity taken by user, taxonomy term, or node.
Great social networks may be easy to use, but the logic behind true social networks is very complex.
The Details
- Building news feeds for friends and "followed" terms with Search API with Apache Solr
- How to let users "share" content and write on other users "walls".
- Creating an "activity" system that shows users activity around the site and can group similar activity together.
- Privacy & Permissions: How to give control where control is due.
About the Speaker
Jonathan is the Founder & CTO of ThinkDrop Consulting, a Drupal consulting company in Brooklyn, New York and has been developing with Drupal for more than 7 years, coding with PHP for more than 11 years, and hypertexting with HTML since 1997.
This session was originally given at DrupalCampNYC 10 in December of 2012
Slides available at https://docs.google.com/present/view?id=dg3sc8t9_2cbxfbnqg
NOTE: I apologize for the layout problems, Google Docs Presentations look different on different operating systems
Experience Level: Advanced
Drupal 8 development is underway, and there are some very exciting things coming down the pipe. I'll bring you up to speed with what's going on in the major Drupal 8 Core initiatives and by the time we're finished, you will have tangible ways to get involved in the next iteration of Drupal.
This presentation is based on webchick's Drupal 8 slides. Since Drupal 8 is under very active development, the slides/presentation will change between now and the time I give it. I will upload the new version too.
The migrate module provides a flexible framework for migrating content into Drupal from other sources (e.g., when converting a web site from another CMS to Drupal). Out-of-the-box, support for creating core Drupal objects such as nodes, users, files, terms, and comments are included - it can easily be extended for migrating other kinds of content. The power comes from an object oriented API that's tricky to get started with - We'll walk through the various classes in the module and how they work together to manage migrations.
I am currently looking for co-presenters or to present in a panel format as I feel we can all have something to learn from each other.
UPDATE July 21, 2012: Thank you to everyone that was able to come out to the session. I know it was a complex topic. As another resource, you can take a look at the code from the example I displayed today at https://bitbucket.org/btmash/redcat_new_migration. Obviously, the migration won't work (the db needs to exist) but the code should hopefully be helpful. Cheers!
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)nyccamp
Over 70% of the security issues in Drupal sites are either XSS, CSRF, or SQL Injection. Let's talk about how sites get hacked and how you can write secure Drupal code and maintain security throughout your development process and live maintenance.
About the Presenter:
Ben Jeavons is a member of the Drupal Security team and co-author of the Drupal Security Report. As an engineer at Acquia he works on the Acquia Network including the security and performance analysis tool, Acquia Insight.
Experience Level: Intermediate
Want to automate testing on your site? don't know coding? No Problem! Selenium to your rescue!!
Drupal + Selenium = Drulenium
In this session I will demonstrate how Selenium can be used to
- Build the site
- Generate test content
- Deploy Dev -> Stage -> Prod
- Automate Testing
Selenium IDE is an integrated development environment for Selenium scripts. It is implemented as a Firefox extension, and allows you to record, edit, and debug tests. Selenium IDE includes the entire Selenium Core, allowing you to easily and quickly record and play back tests in the actual environment that they will run."
Experience Level: Beginner
This talk will look at the features and changes in the Node Access system for Drupal 7.
Out of the box, Drupal is a great system for creating and managing content. However, there are cases where your needs require additional requirements for which users can create, view, edit and delete content. To solve this problem, Drupal provides its Node Access system.
Node Access provides an API for determining the grants, or permissions, that a user has for each node. By understanding how these grants work, a module developer can create and enforce complex access rules.
We will cover some (or all) of the following topics.
- Node Access compared to user_access() and other permission checks.
- How Drupal grants node permissions.
- The node_access() function.
- hook_node_access() compared to {node_access}.
- Controlling permission to create content.
- Using hook_node_access().
- When to write a Node Access module.
- The {node_access} table and its role.
- Defining your moduleâs access rules.
- Using hook_node_access_records().
- Using hook_node_grants().
- Rebuilding the {node_access} table.
- Modifying the behavior of other modules.
- Using hook_node_access_records_alter().
- Using hook_node_grants_alter().
- Testing and debugging you module.
- Using Devel Node Access
- Roadmap for Drupal 8
Ken Rickard is the maintainer of the Domain Access module and wrote several of the patches for Node Access in Drupal 7.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Accelerate your Kubernetes clusters with Varnish Caching
Building Social Networks
1. Building Social Networks
NYC Camp
July 21 2012
#nyccamp
@careernerd & @thinkdropNYC
Jon Pugh
Founder & CTO, ThinkDrop Consulting
thinkdrop.net drupal.org/user/17028
2. Jonathan Pugh
jon@thinkdrop.net
twitter.com/careernerd Professional Web Developer since
Jon Pugh on drupal.org 1999
Exclusively Drupal since 2004
ThinkDrop
Consulting
Clients have included Institute
http://thinkdrop.net
twitter.com/thinkdropNYC Integrative Nutrition,
for
facebook.com/thinkdrop BlogHer, Sony Music, Imbee.
Now on Google+! com, & FoodPop.com
We help organizations learn and leverage
Drupal.
from Brooklyn New York
3. WARNING:
Some of the modules you are
about to see may be
innappropriate for some users
(and most developers).
4. WARNING:
If you see something you don't like, please
write a patch, a workaround, or just deal with
it.
DO NOT complain to the module
But seriously, a patch would be great...
contributors. They work for free.
5. WARNING:
Building a social network is a challenging, demanding,
and often frustrating experience. Your goals should be
modest. Don't ever agree to build a feature that
works "like Facebook does" without thorough research.
in other words...
PROCEED WITH CAUTION
6. What is a social network?
Define network?
A group or system of interconnected people or things
Define social network?
A network of social interactions and personal relationships
A dedicated website or other application that enables users
to communicate with each other by posting information,
comments, messages, images, etc
Every Drupal site is a network, but its social tools are
limited.
thinkdrop.net
@thinkdropNYC
7. What does it take to be a social
Relationships network? Communication
Friends, Followers, Circles... Public & Private.
Choose something. "Write on my Wall"
(But don't do everything.) "Send me a message"
"Mention Me"
"Share This"
Distribution
Activity
Get content to interested viewers.
"Joe, Jane, and Pat changed their
(but not too much content!)
profile pictures."
Let users subscribe to content.
"3 of your friends liked kittens"
"Sam is now friends with Alex and
Integration Privacy &Bob."Permissions
Don't build a walled garden. Be thoughtful.
Let users have some control, but don't
thinkdrop.net overwhelm them.
@thinkdropNYC
8. How do they do it?
Facebook Twitter LinkedIn Drupal Core
Relationships Friends Following Complex None.
Networks Connections
Fans (now Likes)
Communication The Wall Open Stream Exclusive Limited comment.module
Comments Direct Messages Network contact.module
The "Share" Mentions
Retweet
Distribution News Feed Following Copy of News /node
Content and Activity Feed /taxonomy/term/
by Friends %
Privacy & Friends, Friends of Public or Private "access content"
Permissions Friends, Everyone Accounts "access user
Per Post Permissions profiles"
Integration Applications API First Applications There's a module
Platform Open API Platform for that.
Connect Open Philosophy
Social Plugins
Open Graph
9. How do we do it?
Relationships Communication Distribution Privacy & Permissions Integration
user_relationships privatemsg search_api flag_friend_access twitter
flag_friend dxmpp search_api_solr user_relationships_access rpx
og references search_api_views spaces_permissions services
relation entity views_datasource
Oh, and these...
addressfield admin_menu advanced_help apachesolr apc backup_migrate
backup_migrate_files captcha coder commentaccess comment_notify compact_forms
contact_importer context ctools date devel diff ds dummyimage dxmpp entity entity
cache
eva extlink fbconnect features feeds field_group fivestar flag flag_friend galleryfor
matter
google_analytics job_scheduler jquery_ui lexicon libraries link logintoboggan memcac
he
messaging mimemail module_filter multiform nodereference_url oauth og panels
path_alias_xt pathauto plupload porterstemmer privatemsg profile2 quicktabs realna
thinkdrop.net
@thinkdropNYC me
references remember_me rpx rules search_api search_api_context
10. Best Practices
Use them or lose them.
thinkdrop.net
@thinkdropNYC
11. Best Practices!!!
Complex Stories, Complex Testing
Social Networks are more complex than most sites because
you have to imagine multiple users interacting with the same
content with different configurations while imagining the data
and your code simultaneously.
In an ideal world, when all best practices are in place,
developing a complex platform can actually be fun.
Higher Expectations
Social Networks are more sensitive to uptime and bug-free
functionality than most sites, since they usually cater to some
innate human need and are therefor used much more than
most websites.
12. Best Practices!!!
Exportable.
If you can't "export", you can't safely and easily deploy. If its not in
code, its volatile, and you can't go back. EXPORT and COMMIT!
See http://drupal.org/project/features and http://drupal.
org/project/ctools
Testable.
Run tests. Build tests. Learn test-driven development.
Or crying will become a part of your debugging experience and you will
lose more of your life to clicking than you would like to keep track of.
See http://drupal.org/simpletest
Programmable, not configurable.
Rules.module: BAD. PHP Input Filter: VERY BAD. Any PHP you input
through a web browser, even in views: BAD BAD BAD!. Drupal Hooks:
good. Rules uses hooks to trigger "Rules". You should too. If you can
13. Best Practices!!!
One "Drupal" Development Site, localhost for code
only.
Features and exportables can be troublesome when developers are
passing around exported code and databases from and to a
development site and localhost. An old view in a developers database
could be exported as new when rebuilding a feature module.
Use ONE central site for ALL Views, Pages, Configuration, Content
types, Fields development, and other Drupal web-configurable
systems.
EXPORT features from the Dev site to code, but the dev site is the
bleeding edge configuration model for your system.
When it is nearing update time, use
thinkdrop.net
@thinkdropNYC drush features-update-all
14. Relationships
I like you, do you like me?
thinkdrop.net
@thinkdropNYC
15. Relationships
How do we do it?
User Relationships ● Complex setup, Complex relations
complex relationships ● Overkill for simple relationships
drupal. ● UI and UX is rough, at best.
org/project/user_relationships ● Mature (as in Old. Not Exportable!)
● Simple UI (uses flag.module, for the
Flag Friend most part)
Two-way approval ● Only supports basic friendship
drupal.org/project/flag_friend
● Allows grouping of users and content
● Provides generic way to link all content to
Organic Groups group (and give access to only the
Moderated Membership members of that group)
drupal.org/project/og
● Provides a new Entity type:
Relation. Relations are fieldable, but
Relations don't have to be.
API Module. Needs Interface, but ● Relations can be "symmetrical" (Friends)
16. The Purpose of Relationships
● Define Content Privacy: Who can see my content?
Who can I limit the visibility of my content to?
● Define Content Subscription: What do I see?
Who's content shows up on my feed?
● Define Permissions: Who can do what with me?
Write on my Wall, Direct Message me, Request Friendship, etc.
Why do you want relationships?
What value does adding relationships to your site have?
Without functionality behind it, relationships are pointless.
Be sure to think about what creating a relationship does.
Is this going to help or hurt?
Without an extremely polished and fluid User Experience, managing
another social list will become a chore.
17. Types of Relationships
flag.module or user_relationships.module
Following
● One way. Follow a person (or thing) to subscribe to their
content. They don't have to follow you back.
● Does not necessarily make sense to use for access
control. flag_friend.module or user_relationships.module
Friendship
● Both users approve of the relationship.
● Usually a misnomer, because its the only relationship on a
site.
● Difficult to maintain for popular users (celebrities, etc.)
● Usually comes with a way to make content "friends
relation.module or user_relationships.module
only". This implies there is content that is public. (or at
least user_access("access content")
● Both users are subscribed to each others content.
18. Types of Relationships
Automatic & Discovered
● Users can be related by their mutual interests, location, or
any other piece of data you collect.
● Use this to help users discover one another, even if they
are already friends.
19. Communication
"You've Got Mail"
"Can you hear me now?"
"Facebook Me"
thinkdrop.net
@thinkdropNYC
20. Communication
How do we do it?
Private Messages ● A simple messaging system.
● UI and UX is rough. Really rough.
another inbox
● Mature (as in Old.)
drupal.org/project/privatemsg
Notifications ● Manage your email templates with care.
● There may be more than one person to
Don't forget to remind me.
email when the time comes.
drupal.org/project/notifications
● Don't spam your users. Allow
drupal.org/project/messaging
personalization and use sensible def
● Drupal 7 Core allows fields on a User.
User Profiles ● This gets lumped in with all of the
user.module is ok with account settings a Drupal user already
fields, profile types are has to deal with.
better. ● Profile2.module allows "Profile Types" to
thinkdrop.net
drupal.org/project/profile2 be created, just like node types, allowing
@thinkdropNYC
one user to have one of each type of
21. Communication
How do we do it?
● Allow friends to post something
Status Posts &
targeted at one person, but visible
Post to "Wall"
Targeted but open messages.
to many.
Custom Node Type, User Reference Field, & ● Starts discussions among groups
Code
of friends
● The ability to reference and
Sharing share an existing piece of
Take this node and share it.
Custom Node Type, Node Reference
content on your site
Field, & Code
thinkdrop.net
@thinkdropNYC
22. privatemsg.module
another inbox
Private Messages is a very old and reliable module that
looks and acts its age.
You will want to heavily alter the presentation and display
logic.
Think long and hard about
whether you really need to
give your users another inbox
to check.
You will never make it as smooth
23. "Status & Wall Posts"
node.type: status
Fields
title: 255 Characters max in the database. You don't need a field for a tweet.
uid: The author of this post.
field_ref_user: The target of this post.
● If posted on another user's "wall", field_ref_user will = that user.
● defaults to node:uid for easier filtering: a profile page uses this field for an
argument
● This user needs ability to delete this post (and comments!)
● This user's friends should be able to see this post (possibly)
Usage node/add/status? no. (unless you want a popup)
Use hook_block_info() and hook_block_view() to create a block. Load
drupal_get_form('status_node_form') into the block. Place the block in
the content region on (almost) every page. Voila! Status Form.
24. "Share Posts"
node.type: share
Fields
title: 255 Characters max in the database. You don't need a field for a tweet.
uid: The author of this post.
field_ref_user: Same as a status node.
field_ref_node: A node reference field storing the node to be shared.
● Drupal paths ignore additional arguments:
node/add/share/12354/self returns the same page as node/add/share
● Create a link on every share-able node type to "node/add/share/$NID/self"
● Use form_alter() to set and hide this field, just like field_ref_user.
Its nice to add the option to "share with a friend" in addition to "post to my wall". if
(arg(4) != self), UNHIDE field_ref_user and use the autocomplete for "enter a
friend
to share with"!
thinkdrop.net
@thinkdropNYC
25. User Profiles
Drupal 7 Goodness
Fields in Core!
Fields possible on all Entities: Nodes, Users, Terms, Files, etc.
Taxonomy is linked to nodes via "Term Reference" fields
You can add "Term Reference" fields to Users, giving us the ability to
link users to content and each other through similar terms.
Add image and link fields to Terms.
Profile2.module
System for creating "Profile Types", allowing grouping of fields for each
user. Emulates the old profile.module which had "categories" of user
profiles.
26. User Profiles
Drupal 7 Goodness
Taxonomy as "Things to Like"
Using taxonomy terms as the storage for "things people like" opens up
a lot of possibilities.
We are able to build lists of the "Most popular things".
We are able to show you content that is tagged with those
things. (written on that thing's "Wall")
We are able to match you with other users based on those things.
thinkdrop.net
@thinkdropNYC
27. Distribution
Feed Me!
thinkdrop.net
@thinkdropNYC
28. Distribution
How do we do it?
Search API ● So much more than search...
Index Everything. ● Basically an interface to No-SQL data sources
drupal.org/project/search_api (Solr, Mongo, you name it)
● Can index all entities
● All Views can be Search API powered
● Everything Drupal 7 wanted to be
Entity API ● Define properties with arbitrary getters and
Specifically... setters
hook_entity_property_info() ● Automatically access all properties in Search API
drupal.org/project/entity ● References Fields connects the referenced
entities and can index attached fields.
● Not MySQL means better, stronger, faster
● Powered by Views means Easy, Powerful,
Apache Solr Flexible
Document-based index ● Search API means
storage = fast
drupal.
thinkdrop.net
@thinkdropNYC
org/project/search_api_solr
29. Distribution Channels
How are your users fed content?
Your Feed Your "Wall" Additional Feeds
A list of content and Your posts (when not Usually, having at
activity created by targeted at another least one other
users you are related to user), and other thing to let users
or want to see content users posts on your
find content with is
and activity from. wall.
helpful.
May or may not include Access control is
posts on friends walls by important
Groups, Lists,
non-friends. here. Users must be Taxonomy Terms...
able to delete posts
on their "walls". Something.
thinkdrop.net
@thinkdropNYC
30. Entity API
Enhance the Entities
The Entity API allows you to do many things, including
set extra properties of entities as they are saved.
In order to build things like a "Friends Feed", a
"Following Feed" or a "Wall", we can build extra
properties of a user and a node.
Those properties are then loaded by the Search API
into its index.
thinkdrop.net
@thinkdropNYC
31. Entity API
hook_entity_property_info_alter()
By creating the
"friends" property of
the user entity, we
will be able to load it
when we index a
node, which means
each node has a list
of "friends" it should
be shown to in their
friends feed.
Then, we can build a
Search API View
with the current
$user->uid as the
32. Search API
Extrapolate the Index
Creates multiple Indexes and allows multiple servers
Have an index for each thing you want to search or
display from a Search API backend like Solr.
33. Search API
Extrapolate the Index
Choose your entity type, then choose your fields. Entity relationships
allow you to branch out and load related fields as well.
Allows you to
build specific
indexes with
only the fields
you need.
The indexes and
Fields you create
then become
available in Views
for your building
pleasure.
34. "Friend Feed"
Content from any of your friends
A view with the a Contextual filter for User Friends,
that defaults to $global->user;
35. "Wall Feed"
Your Posts (not on friends walls) and Friends Posts (on your wall)
A view with the a Contextual filter for Node: Target,
that defaults to the User ID in the current URL.
Path: user/% Overrides existing "User Profile Page"
36. Privacy & Permissions
"Control! Control! You must have control!"
thinkdrop.net
@thinkdropNYC
37. Why do you need Privacy &
Permissions Control?
How much control do your
users really need?
A balance must be struck
between security and access.
With privacy and permissions
control, micromanagement can
also become a problem. Make
it as easy as possible for your
users.
thinkdrop.net
@thinkdropNYC
Remember: Every Site is Different!
38. Privacy & Permissions
How do we do it?
Node Access
Safely hide content using modules.
Low Level Protection.
Core System. Requires contrib Nodes only.
modules to take advantage. System-Wide access control.
User Relationships or Plugs into node_access. Provides
Flag Friend Access user interface for choosing what
Relationship modules provide relationships can view your nodes.
access control.
Create settings based on how your
Profile Fields can be
site works and what is best for
used for user settings.
your users.
Or just use your custom
module, a form_alter and
39. Privacy & Permissions
Common Access Checkpoints
hook_menu_alter()
Add your own
function to
"access callback"
to check if your
users are allowed
to view the page
on some special
conditions.
thinkdrop.net
@thinkdropNYC
40. Privacy & Permissions
Common Access Checkpoints
Build Elements
(a.k.a. Forms API a.k.a "render-able arrays")
To hide an element in a form or a build array:
$element['#access'] = FALSE;
hook_node_access()
Simple True/False access check.
hook_menu_alter()
$item['user/%user']['access callback'] = 'custom_access_check';
thinkdrop.net
@thinkdropNYC
41. Privacy & Permissions
Saving User Settings
User or Profile2 Fields
More configurable. (Can be good or bad!)
Data is more accessible. Uses Field API storage.
Don't forget to "Manage Display" and hide setting fields!
$user->field_setting[LANGUAGE_NONE][0]['value']
$user->data
Not accessible with views or queries at all.
Can only load if you've loaded the user.
Data is serialized into the {users}.data table column.
Custom Module
hook_schema() + hook_user_load() + hook_user_insert() + hook_user_update()
thinkdrop.net
@thinkdropNYC
42. Privacy & Permissions
Saving User Settings
Using a Field
offers flexibility
and a nice
friendly, familiar,
interface.
43. Activity
Nodes are boring.
What are you doing?
thinkdrop.net
@thinkdropNYC
44. Activity
How do we do it?
Activity.module Heartbeat.module
Not Recommended. Can't get it Better, but still more trouble
to work on Drupal 7. than
drupal.org/project/activity its worth.
drupal.org/project/heartbeat
Statuses.module
Formerly Facebook-Style
Statuses drupal.org/project/statuses
We don't recommend any of the existing Drupal
Contrib "activity" type modules. They are buggy, and
very rigid because of their custom storage and code.
Drupal FieldAPI can be leveraged to build a new
A node can represent system.
an activity, and there are a
number of reasons this is ideal.
45. Activity
How do we do it?
With Nodes!
Myth: Node's are "Heavy".
Reality: Node's have a lot of features that other
entities (or custom "objects" like a "heartbeat"
message) don't have, that are required for certain
functionality:
● node.uid: Node's have an owner, who is granted
higher permissions over the node.
● Node Access: Nodes have access control, so you can
keep activity private using other node access
modules.
● Comments: Nodes can be commented on.
● They are Nodes. This means they can be easily
46. Activity
node.type: activity
Fields Activity Types:
title: Not used. Display is processed with code.
uid: The actor of the activity comment
profile changes
field_activity_type: A machine-name defining flag_favorite
what type it is. The message theming is changed based
on this. flag_follow
flag_like
field_activity_ref_nodes & friends
field_activity_ref_terms & photos
field_activity_ref_users: References to signup
each type of object that might be connected to an
activity.
videos
47. Integration
Don't build a walled garden.
thinkdrop.net
@thinkdropNYC
48. Integration
Janrain RPX Easiest "Social Network
Multiple Network
Registration & Login" service we
Integration
drupal.org/project/rpx have used.
Built and maintained by the Janrain company
Twitter Simple module, not the best UI,
It just works but has decent Tweet storage,
Imports tweets, allows users to
tweet when they create nodes. views support, and it just works.
drupal.org/project/twitter
Pluggable API system.
Services
Build your own API.
REST/JSON/XML/Whatever
drupal.org/project/services Opens up all basic Drupal functions
thinkdrop.net
@thinkdropNYC
like user registration, login,
update...
49. Services API
Framework for Web Services
● Pluggable system for Web Service
Endpoints
● Allows 3rd Party App developers to
interact with your web app.
● Lets you provide multiple response
formats, authentication types, and
more while abstracting the actual API
commands.
● Most commands simply pass through to
thinkdrop.net respective forms, allowing
forms their
@thinkdropNYC
altering via hook_form_alter()
51. Building Social Networks
NYC Camp
July 21 2012
Jonathan Pugh THINKDROP
jon@thinkdrop.net http://thinkdrop.net
twitter.com/careernerd twitter.com/thinkdropNYC
Jon Pugh on drupal.org facebook.com/thinkdrop
http://thinkdrop.net/socialnetworks
to access these slides and for more information.
WE'RE HIRING
http://thinkdrop.net/apply