Kinetic Novel Development: costs and tips - by Richard Nixon Blogs - 17 March 2016 - 11:22pm
Costs and tips for iOS indie devs based on our own experience during the development of The Fall of Gyes: sci-fi kinetic novel.
Categories: Game Theory & Design

How strands work and why you should use them - by Rui Figueira Blogs - 17 March 2016 - 11:22pm
In this post, I dissect how strands work (e.g: Boost Asio strands), why you should use them, and one way to implement it.
Categories: Game Theory & Design

What’s in a Name: Core/Casual Debate of the Game Industry - by Josh Bycer Blogs - 17 March 2016 - 11:22pm
A piece in response to the "10 games or more on Steam" talk out of GDC 2016 and the continuing difficulty in defining the consumer base of the Game Industry.
Categories: Game Theory & Design

GDC Highlights: Design Lessons, VR Tips, and an Iwata Tribute

Social/Online Games - Gamasutra - 17 March 2016 - 8:50pm

We bring you the highlights from Day 4 of GDC, from VR tips to lessons about action games! ...

Categories: Game Theory & Design

DrupalCon News: Sessions, Training Opportunities Announced for DrupalCon New Orleans

Planet Drupal - 17 March 2016 - 2:20pm

It’s a big day for DrupalCon New Orleans attendees: sessions, training opportunities, and scholarships and grants have been finalized! We’re pleased to announce the lineup of learning, sharing, and networking opportunities for DrupalCon North America attendees this May.

Categories: Drupal

Install Connector

New Drupal Modules - 17 March 2016 - 2:03pm

This module is for a specific use case and has no UI!

Use case: You have a contrib profile and you need to install your custom
modules while still using the upstream profile without hacking. If this module
is in the upstream profile, it can be used to enable other modules from your
sites all directory.

Categories: Drupal

Facebook Long-Lived Token

New Drupal Modules - 17 March 2016 - 1:48pm

Converts short-lived token to long-lived for Drupal for Facebook module.

- Install "Drupal for Facebook" and "Facebook Long-Lived Token" modules as usual.
- Add login block.
- Configuration not required for this module.

Categories: Drupal

OSTraining: 1/4 Million Views of the Drupal 8 Beginner Class

Planet Drupal - 17 March 2016 - 1:39pm

Before the launch of Drupal 8, we started a Kickstarter project.

Our goal was to help as many people as possible to use Drupal 8.

Our strategy was to give everyone free access to the very best Drupal 8 training by releasing free videos.

Today, I'm delighted to say we are succeeding.

Categories: Drupal

DrupalCon News: Earlybird ticket prices vanish Friday at midnight

Planet Drupal - 17 March 2016 - 11:28am

If you’re planning on attending DrupalCon New Orleans, better buy your tickets now: prices go up at the stroke of midnight on Friday, March 18.

Categories: Drupal Announcing the Roomify for Accommodations Platform

Planet Drupal - 17 March 2016 - 11:10am
Today we are thrilled to announce the release of our new Accommodations platform. The new Accommodations platform will power our vacation rental, B&B and multi-property solutions and is available on the Roomify Cloud or as a self-hosted solution. At its heart lies our unique open-source booking library - BAT - and the feature set reflects the experience gained working with our wonderful customers and open-source contributors.
Categories: Drupal

ImageX Media: ImageX To Sponsor & Present at DrupalCon New Orleans

Planet Drupal - 17 March 2016 - 11:10am

ImageX is proud to announce our continued support of the Drupal community with our participation at DrupalCon 2016 in New Orleans. ImageX will be a Gold sponsor of the event and can be found at Booth #207. We will also be one of the three key sponsors at the Higher Education Summit on Monday, May 9th.

Categories: Drupal

Hashed Sessions

New Drupal Modules - 17 March 2016 - 9:48am

Drupal 7 core stores session ids as is. This allows anyone with read only access to the database (via SQL-i) to take a session id, present it in a session cookie to Drupal and take over the session.

This module contains a patched core that only stores hashes of the session id. Attackers cannot offer this hash as a valid session id, nor derive the session id from the hash.

Categories: Drupal

Pronovix: Two-way sync between Drupal and Google Contacts using PieSync

Planet Drupal - 17 March 2016 - 8:58am

Most SaaS integration services that synchronise user accounts, do a one-way sync that copies over to new accounts. PieSync has developed a powerful two-way sync platform, with various sync settings, so you can sync contact information between your favorite cloud apps. We’ve been talking with Piesync about creating a module to sync user profiles between Drupal and Google Contacts, your CRM and other cloud apps.

Categories: Drupal

Palantir: D8FTW: REST in Core

Planet Drupal - 17 March 2016 - 8:16am

Drupal 8 core offers a routing and request handling pipeline that gives developers more control over how to handle an incoming request than ever before. Developers can route an incoming request based on any HTTP property, or even derived information. Controllers can return page bodies, full responses, domain objects that can be turned into full responses, or anything else PHP supports.

That's great, but doesn't that mean we have to then, um, do all of that ourselves? We can, and many times we should, but in many cases we don't have to!

Core ships with a trio of modules that enable push-button support for offering up content as a Web service, and (you guessed it) can be enhanced via contrib.


The first is the Serialization.module, which in turn is built on the Symfony Serializer component. The Serialization module offers a standard way to convert a classed object to a serialized string and back again. That process consists of two phases: A Normalizer, which converts between an object and a known nested-array structure (and back again), and an Encoder, which converts between that array structure and some string format (and back again). A serializer object contains a set of normalizers and encoders, and can figure out on the fly which to use.

The Serializer includes normalizers for content entities as well as JSON and XML encoders. That means core provides clean round-trip support between any content Entity and any defined output format. That is, once you pass the serializer service as a dependency to your code you can simply do this:

$json = $this->serializer->serialize($entity, 'json');
$xml = $this->serializer->serialize($entity, 'xml');

Poof, we now have a JSON-ified version of an entity and an XML-ified version of the entity. And we can go the other way, too:

$entity = $this->serializer->deserialize($json, Node::class, 'json');

The net result is that we now have a standard universal serialized format for all entities! Or at least for their internal structure, which is appropriate in some cases but not all.

It's also straightforward to write new Normalizers and Encoders, as they're simply tagged services with a defined interface. Another core module, HAL.module, provides serializers and encoders using the Hypertext Application Language format, a special flavor of JSON (or XML) that includes hypermedia links as well.

REST Resources

The third core module is REST.module. REST module uses the core plugin system to define "rest resource" plugins. Each resource can live at a defined path pattern, which implies one or more routes at that path, and has separate methods for handling each HTTP method it supports. Resources do not need to correspond to any other Drupal object; they can, but there's nothing inherent in them that requires them to do so. That's good, because REST resources need not, and often should not, correspond to underlying objects in the system.

A method on a REST plugin acts as a controller, and while it can return any value it generally will return a special subclass of Response called ResourceResponse that will handle serializing a data object provided on it as well as setting appropriate cache tags. Core provides two resource plugins, one for content entities, the most likely to be used, and one for database logs, mostly just to prove that it can be done. In fact, the database log resource is quite simple:

* Provides a resource for database watchdog log entries.
* @RestResource(
*   id = "dblog",
*   label = @Translation("Watchdog database log"),
*   uri_paths = {
*     "canonical" = "/dblog/{id}"
*   }
* )
class DBLogResource extends ResourceBase {

  * Responds to GET requests.
  * Returns a watchdog log entry for the specified ID.
  * @param int $id
  *   The ID of the watchdog log entry.
  * @return \Drupal\rest\ResourceResponse
  *   The response containing the log entry.
  * @throws \Symfony\Component\HttpKernel\Exception\HttpException
public function get($id = NULL) {
  if ($id) {
    $record = db_query("SELECT * FROM {watchdog} WHERE wid = :wid", array(':wid' => $id))
    if (!empty($record)) {
      return new ResourceResponse($record);

    throw new

NotFoundHttpException(t('Log entry with ID @id was not found', array('@id' => $id)));

    throw new

HttpException(t('No log entry ID was provided'));

In this case, all that's provided is GET support. POST or PUT requests will automatically be rejected with an HTTP 405 (Method Not Allowed) error. The resource is exposed at the URI /dblog/{id}. And all it does is read back a single record out of the watchdog log as an array, which will get normalized to JSON or XML or whatever was requested by the serializer. (You likely shouldn't enable log Web service resources in production, but it's fun to play with on your own server to get a feel for how the system works.)

The plugin for content entities leverages the entity's already-defined path, so that the serialized version of an entity, such as a node or taxonomy term, lives at the same path as the HTML version of it. They are the same underlying object so should be exposed as just different representations of the same resource.


For various reasons mainly related to available development time, the UI for REST module lives in contrib. The REST UI module provides a basic UI for configuring which REST resources should be enabled, which methods should be allowed, which formats are allowed, and which authentication mechanisms are allowed. (Core offers cookie-based auth and HTTP Basic Auth, the latter of which is only ever safe over SSL. Contrib also offers an OAuth module.) See the screenshots below.

So for example, we can enable GET JSON requests for Taxonomy terms, GET and PUT HAL requests for Nodes, and not expose anything else as an API; and just by checking a few boxes. (Isn't that the definition of success in Drupal, just checking a few boxes?)


There are two limitations of the core REST support that are important to mention. A moment ago we said that we use the same path for both the HTML and JSON/XML/Whatever version of an entity. That's true, but we don't, technically, use the same URI.

HTTP, by design, allows a request to specify what formats they're willing to accept for a resource, using the Accept header. The server will then compare that list against what it knows it can offer and send back the best option or an error that it cannot find a workable format. However, sending back different formats from the same URI creates a caching problem, as any proxy servers or browsers that try to cache the response can cache whichever format is requested first, then send that format (wrongly) in the future on other requests. Again, the spec has a simple solution here: The Vary header on the Response, which can be used to tell clients and proxies to use both the URI and the Accept header to determine if a request matches a cached response. Problem solved, right?

Well, it would be if clients followed the spec. Unfortunately there's a number of issues in practice:

Categories: Drupal

KnackForge: Easy way to add Google web fonts to Photoshop

Planet Drupal - 17 March 2016 - 8:00am
Easy way to add Google web fonts to Photoshop

Google Fonts is an absolutely awesome collection of web fonts that you may use in your HTML web pages without any restrictions.

These fonts not only look more beautiful than the common typefaces like Arial and Verdana, but they are more readable as well, since the fonts have been designed specifically for the web. Also, all Google web fonts are offered under the Open Font License, meaning that you may use them even in commercial projects without worrying about the licensing issues.

Manoj Thu, 03/17/2016 - 20:30
Categories: Drupal

Steve Purkiss: Ask the Angels: Drupal.Contractors & Drupal.Agency

Planet Drupal - 17 March 2016 - 5:34am
Thursday, 17th March 2016Ask the Angels: Drupal.Contractors & Drupal.Agency

Home is where the heart is

Last week I visited my mother back in Essex. It was good to see her as it was Christmas last time I visited and I only went for a day as I'd taken on a Drupal 8 project which needed a huge amount of work to get ready for when everyone returned after the holiday period. In some ways I wish I hadn't have bothered, I was told it looked more like three days work than seven and it took me a long time to get the money out of them. By the way they were demonstrating it to the client within a few minutes showing what I'd built, I presume it worked fine ;)

My mother never stops, she's always doing something. I looked over from the sofa and she was trying to fit a thread through the smallest needle hole I'd ever seen - I said to her after a few strokes I think I'd just be happy to have people wait on me all day if I ever made it to her age! I thanked her for the determination though as I see that she's passed that down to me. We seemed to talk differently this time, as if we knew there was no point in saying anything that wasn't of importance as we never know if we will have the opportunity to do so again. My mother has been ill most of the time I remember, I hope she will be around for many years to come but of course we simply don't know, I've had two friends die in the last year alone, both with young children, both for seemingly pointless reasons - one was out jogging, the other out cycling when hit by an airshow plane doing stuff it seems by all accounts it shouldn't have been doing, but that's another, still ongoing, story.

Later on I looked out of the window and saw a blackbird really up close to the door and, with the slurred speech that she has now post-stroke that upsets her because it's annoying not to be able to get the words out, my mum said "I've been talking with my angels. They say the blackbirds are grandma keeping an eye on us".

Now, I'm open-minded but skeptical when it comes to blackbirds being grandma, but who is to say one way or another? We don't really know they aren't, we just use our 'common sense' and move along with our day. Well, that's what I did, but it did make me think about angels in the business sense of the word and how they help businesses get up and running with their support. It also made me realise that I want to be closer to my mum than I am now, and with synchronicity as it is I saw a 3-bed house with the same rent as my 1-bed flat going which is literally one minute's walk away from her house. It sure would be great to go back and be of help taking her to appointments and driving around various sheltered housing schemes as she realises she needs to be somewhere with help. I wish I had a big villa in Spain we could all live in, but I don't. I did, back in my Ecademy networking days, bring her up to London for a meal at the House of Lords, that was nice. Mostly I'd just like to be with her to help where I can, I feel helpless here in Brighton.

1st Community Business BoF at DrupalCamp London

The previous weekend I had spent at City University in London where they were holding the fourth DrupalCamp London and the second I was giving a session at. I am incredibly fearful of giving sessions but I realise that is one of the major ways of communicating your message so I forced myself to apply. Last time I kind of chickened out and made a video, and I felt really bad about missing the opportunity I could've had if I'd turned up even more than turning up and playing a video, so this time I did a proper 'session'. I am sure some found it strange, but I also got great feedback, and we continued the conversation in a BoF on the Sunday.

I was incredibly encouraged that, after eight years of championing community-business in Drupal people were starting to "get it" at last! It would be great to have Community Business BoFs & sprints at every camp!

I even said to one of the organisers who mentioned they were presenting Drupal at a marketing event that next week that it was great to see them starting to work together like a Virtual Enterprise Network. When we come together as a community, we shine. 

Launching Drupal.Contractors & Drupal.Agency

In the BoF I mentioned I'd managed to break the concept down into workable chunks aligned to existing business flows - one site focused at contractors, one for agencies. This way communities could be built around existing money-making activities in order to redirect the flow inwards, so for example agencies could put money in to exhibit at non-Drupal events, contractors could find better suited projects via skills tabs, etc.

At the time I was awaiting Dries' response as to whether I could use the domain names as they have the Drupal trademark in them. I believe they are needed in order to raise projects which are community-owned, not just "Steve's Sites", so it was important I went about the correct way of asking permission, and of course ensuring that the project itself would reflect the community well.

I was surprised and shocked when I saw a tweet from one of the agencies who had gone to this show that they had set up a site utilising the Drupal trademark, but mainly pointing to these three companies. An obvious lead-collection tool which I've used many times having come from proprietary software houses many years ago. I'm glad to have left that world behind, and knowing quite how much other people and companies have put into the latest version of Drupal, whilst I appreciated the efforts of these companies I didn't like their approach and tweeted as such. A further tweet I posted with information about the ownership of the domain seems to be causing an issue at the moment, to me it seems more diversionary tactics as the site still seems to be up there, but that's another story too and one I guess I will hear about soon enough. Seems people's time should be being spent on other, more worthwhile things than trying to alter history and cover up evidence.

So I asked Dries what the deal was with using the trademark, to which he replied "as long as it's owned by the community and open to all then I have no problem with it". So, instead of chasing another most probably unsuitable paid project I decided although I didn't have much resources I'd start to build Drupal.Contractors and Drupal.Agency. I'd also applied to DrupalCon New Orleans with my two sessions and a grant application, sadly I heard last night I didn't get either of those. I understand 700 sessions submitted and they have to choose 130. I've always thought a VR conference would be good, we'll see.

Startups Come & Go

One the way to DrupalCamp London I walked past the office where I worked for a company called RemoteApps back in the dotcom days 1999ish. I was the sixth person to join and we went up to sixty before investors pulled out of all the tech stocks in the 'dotbomb' - I was worth over a million dollars on paper at one point, then it was just paper the next.

We had a brilliant product, it was the first modular web app software, modules for Content, Collaboration, and Commerce. We built the first site and the New Beetle for VW when it came out. But we couldn't scale well - started off as a consultancy, then a software house and we worked with a number of integration partners to deliver the product to end clients. It was in J2EE but at the time Java needed rewriting for every server so although portability was a great idea, it was a massive job getting it to work in each big implementation.

I did however get a good grounding in Content Management Systems, pitching and winning against Interwoven and other big players of the day. We were put in the same Gartner Quadrant as Acquia is now, we had pretty much the same product - except Java and not Open Source. In fact my boss on the way out when asked what he'd do differently next time he said he'd Open Source it. Little did I know when I was walking out the door that Dries had just released Drupal!

I promised myself at the time I'd never be in a position where I wasn't in control - I was being given mortgage advice the week before I was made redundant by my boss who knew all about it, I don't like that sort of thing, I like people being upfront.

Modular Business for Modular Software

Since that day I was made redundant back in 2001 I've managed to stay independent but today I find myself back in the position of having no money and looking at the Wonga site (it's Drupal did you know) thinking about how it could buy me that coffee which will stop this massive constant headache I've had all day due to lack of caffeine. I'm being evicted from my flat because my landlord refuses to fix the mice infestation problem so after it taking three years to get a working boiler I decided to stop paying rent until it was sorted, of course that's not happening, he just sent me eviction notice.

I started up Drupal.Contractors and Drupal.Agency and working on Drupal.Contractors for just a week has brought members but it hasn't brought revenue. Last time I tried this was back in 2013 after I'd spend a year being the first Community-elected Director of the Drupal Association. It was a pretty interesting year but I couldn't get much done, I think it is a top-down institution trying to support a bottom-up community however all that seems to happen is the ones who pay the money get listened to. We have the opportunity to vote another board member in and voting closes today but I've not voted, I honestly do not currently see the benefits of something which is trying to do too much - I appreciate the work the DA does, but it can't do everything, and that's where I think member-owned platform cooperatives come in. Along with FairShares model where customers can invest alongside investors, founders, and workforce, provide a realistic and scalable way forward.

I truly believe we need to set up these institutions which will go to serve us, the members as a whole, not just a select few. I need capital to do it though and that's where I asked an investor. He said I need to do my lean canvasses. I can do those, if I can eat.

So I need your help. I don't want to make people pay for their profiles on the sites (am hoping pantheon will give me a community account anyway), that was a silly idea and only done out of desperation - if everyone just stares at me and says hey isn't it buit yet, it's not going to happen. I need to eat, and I don't want to borrow more, I've already invested hundreds of thousands in this and many years, now I need to know you are there supporting too.

If you are a contractor, please register on the site, if you are an agency, please register your interest. Think of it as NHS-like support - if we only let the businesses make the rules then we will end up with a very different Drupal than we have right now. The one right now offers opportunity for all, not just those who can afford it. To do this, I believe I need at least £100k/y, ten times that amount if we want to show at shows other than DrupalCamps which will be good for signing up contractors. Would be great to have at events around the world though, no? And I hate having to write begging blogs like this but we really have to come together now as a community and realise stuff like this costs money to make, we have a lot of catching up to do!

Are you the Angels I'm looking for? If you'd like to invest in drupal.contractor and/or and help make them great and the best resource on the net then please get in touch. If you have any amount you can donate to the feed Steve fund, please make payments to Stephen B. Purkiss:

Nationwide Building Society 56/57 High Street, Chelmsford, Essex CM1 1DH Sort code: 07-44-56 Account No.: 06093285 IBAN: GB11 NAIA 0701 1606 0932 85 BIC: NAIAGB21 SWIFT Intermediary Bank: MIDLGB22   I also have PayPal at but would prefer transfer so don't lose a percentage.   Investors please email me direct, the above is for donations only, no return apart from the fuzzy feeling you kow Steve's been fed ;)   Thank you, I hope I can keep continuing to work for the Drupal & larger Free Software community for many years to come. tags: drupaldrupal8drupal contractorsdrupal agencyDrupal PlanetPlanet Drupal
Categories: Drupal

What I Learned From Our Game Having a &amp;quot;Mostly Negative&amp;quot; Rating on Steam - by Nicholas Laborde Blogs - 17 March 2016 - 5:12am
This is the story of how our game's Steam rating plunged, and how we persevered to make our game the best it could be.
Categories: Game Theory & Design

The journey of indiecouch: From an idea to a kickstarter - by Patrick Seibert Blogs - 17 March 2016 - 5:12am
Every once in a while an idea pops up in our head, an idea that will not let us go for days or even weeks. We don't ask ourselves if we can or should do it. No, we already know that we will do it no matter what and the only question to figure out is: How?
Categories: Game Theory & Design

Balancing Numbers and Personality in Game Design - by Josh Bycer Blogs - 17 March 2016 - 5:12am
Optimization is an important part of any city builder or strategy game, but today's post looks at why the human factor needs to be a vital part of the process.
Categories: Game Theory & Design

This Week in Video Game Blogging: Horror, Monsters and Bad Faith - by Critical Distance Blogs - 17 March 2016 - 5:12am
This week, our partnership with game criticism site Critical Distance brings us picks from Eric Swain on horror, trauma and vicious children
Categories: Game Theory & Design


Subscribe to As If Productions aggregator