Skip to Content

Newsfeeds

NYC Camp News & Announcements: NYC Camp Keynote by Atefeh Riazi (UN CITO, ASG)

Planet Drupal - 17 April 2014 - 3:37pm

Last Saturday afternoon, we were very fortunate to have Atefeh Riazi, UN CITO and Assistant Secretary General (ASG), deliver a keynote presentation to the 500+ Drupalists in attendance.

Salem Avan delivered the introduction to the keynote, and spoke about "we the people" and our inherited collective responsibility to help advance the UN's goals of furthering peace and security, international development, and human rights.

Ms. Riazi then delivered a riveting keynote that was a call to action for the Drupal community to help use technology to better the world. She emphasized the importance of leveraging innovation, collaboration and partnerships in order to solve the global challenges we face, and to respond to this call to action in a coordinated manner through partnerships that bring all of our best resources to bear.

Her exciting keynote address was followed-up with a stirring panel on  Women & Technology Leadership, that featured Mr. Riazi, Holly Ross (Executive Director or the Drupal Association), and Angie Byron (webchick). The panelist explored the pivotal importance of furthering female leadership is technology circles, and particularly the Drupal community. 

You can watch the full keynote here on UN WebTV.

You can also view the Flickr photo album from the Keynote here and the Panel Discussion here

Thanks again to the UN Office of Information Communications Technology (OICT) for their generous support of NYC Camp and the Drupal NYC Community. You can find our more about the UN OICT at their websiteFacebook page and by following them on Twitter.

Categories: Drupal

Drupal.org Featured Case Studies: The Woodhouse Day Spa

Planet Drupal - 17 April 2014 - 3:28pm
Completed Drupal site or project URL: http://www.woodhousespas.com

Unleashed Technologies developed an enterprise platform that easily scales to accommodate The Woodhouse Day Spa’s explosive growth, as they take the company from 30 to more than 200 franchises. The Woodhouse Day Spa can now instantly create franchise sites that are consistent in branding and content, yet managed and updated by the franchisee. All sites for The Woodhouse Day Spa are fully integrated into spa management systems to provide a seamless experience to visitors. The Drupal platform developed for The Woodhouse Day Spa brings usability and control to its franchisees in order to increase engagement and improve ROI.

The Woodhouse Day Spa website won the 2013 Blue Drop Award for Drupal Site of the Year.

Key modules/theme/distribution used: Drupal services JSField PermissionsTaxonomy Access ControlUbercartFeaturesUltimate CronViews Bulk Operations (D8)Nodequeue
Categories: Drupal

Drupal Association News: Drupal Association Board Meeting Summary: 16 April, 2014

Planet Drupal - 17 April 2014 - 1:31pm

Preparing the materials for the monthly board meeting is a lot of work, but it's a great chance to reflect each month on the momentum of the Association and the community. Looking back, March 2014 was particularly exciting as the community and staff are pushing forward in several directions at once with considerable momentum. So let's get down to it and share some of the highlights:

Program Updates

Each month we review the metrics outlined in our 2014 Leadership Plan and share updates from the teams. We're pleased to say that most of our metrics are in the green (within 95% of goal). Particularly exciting is the news about DrupalCon Austin. Numbers looked very solid at the end of March (the end of our reporting period for this meeting), but we are also able to share that early-bird pricing ended just a few days after this dashboard closed and we beat our estimates, meaning that we are more than on-track to have a 4,000 person event this June - another biggest DrupalCon ever!

We are also really pleased with the momentum around the Drupal.org metrics. This is still our area of greatest concern - we have more red metrics here than anywhere else. However, March brought some tremendous gains that, if sustained, will move our metrics quickly towards green. In particular, we focused discussion on:

  • Page Response Time: Our goal is 3.07 seconds. Our current average for the year is 3.93 seconds. Part of the reason that we're so far from goal is that we had some serious issues in January that pushed the numbers way up. Our hardware improvments (thanks to the DIWG and Rudy) have helped speed this up, and the upcoming CDN deployment will bring this number down even further, especially for individuals accessing the site outside of the US. 
  • Testbot performance: Goal is 70 minutes, but actual average for the year is about 138 minutes. This actual is also very inflated by lots of issues we had in January that pushed the total testbot time much higher. Thanks to work done at Drupal Dev Days in Szeged by Jeremy Thorson and Ricardo Amaro, along with some changes to D8 core, the actual tesbot run time average in March was just 47 minutes!
  • Home Page Bounce Rate: This metric is one of the central motivations for the User Research that the DCWG has begun as part of a larger Drupal.org reinvention. We have also begun to put tools like Optimizely in place that will allow us to run tests and experiments based on our research, which should help us address bounce rate, time on site, and other engagement metrics for our various audiences. We likely won's see shifts here for some months, but we are definitely thinking about these metrics and working to put the foundation for a solution in place. 
Procurement Policy

At the Association, we work hard to ensure that our actions are in line with the Drupal community values. This is, of course, particularly important when money is part of the equation. To that end, the Association has a Financial Policies document that is reviewed annually by the board Finance Committee and sets rules for transparently and openly making decisions for how Association money gets spent. Until now, one element that was lacking was a Procurement Policy to govern when we pay for a service (vs. work with a volunteer) and how and when we can take in-kind donations. Back in February, we looked for feedback from the community, and incorporated a lot of the suggestions into a final policy, which was approved by the board in the meeting. 

I would like to add that this policy, though approved by the board, is just a starting place. There is so much nuance that we will encounter as we put the policy into practice. During our annual review of policies, we will have the opportunity to revisit and refine this language. In particular, we want to ensure that we are supporting and growing the volunteers who contribute to the project and not hiring contractors at the expense of the health of our community.

At-Large Elections/Terms

In the March Board meeting, we updated At-Large term length and shifted the election cycle. The goal is to give our At-Large Directors a better board experience by giving them time to integrate into the board and really work on their agendas. With this change, the community will elect one At-Large Director each year to a two-year term. For this to work, we need to stagger the terms of our existing At-Large Directors, Morten DK and Matthew Saunders. Since Morten is serving his second one-year term currently, the board voted in this meeting to extend the terms of Matthew Saunders 1 year. So, in our next election (in February 2015), we will elect a new At-Large Director to fill Morten's seat for two years and Matthew will have one year left in his term.

First Quarter Financials and Annual Audit

In Executive Session, the board reivewed the financials for the first quarter of 2014 and received a presentation of the 2013 Audit report from the Association's auditor. All materials were previously reviewed by the Finance Committee (which meets monthly to review the most recent financial reports), and the Finance Committee recommended approving both the fiancials and the audit. The audit documents are now being produced as final versions (we presented draft documents to the board) and will be shared with the community at the June public board meeting at DrupalCon Austin. If you're ready to dive into some numbers before then, you can review the first quarter financials now:

Lots more happened at this board meeting, and if you're interested, don't forget that you can read the minutes, or watch the recording. And as always, let me know if you have questions.

Flickr photo: xjm

Categories: Drupal

AGLOBALWAY: Agile Principles in Drupal Client Projects

Planet Drupal - 17 April 2014 - 10:18am

Agile development processes can greatly help your Drupal client projects.  Agile in a nutshell is a highly collaborative process the uses feedback to make constant adjustments to the project.   Often people equate SCRUM with Agile, but that would be a mistake.  You can have SCRUM teams that never truly deeply embrace Agile ideas.   You can have Agile teams who don’t follow SCRUM. 

At the heart of any Agile team is the Agile Manifesto:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Individuals and interactions over processes and tools

With Drupal projects, your have many choices of great tools and processes to use.  Don’t let these things become your focus.  Focus on building great teams including your clients.   Tools and processes are important but not as important as the interactions and shared understand that develops in the team.

Working software over comprehensive documentation

Many Drupal projects include configurations and site building tasks using existing modules.  This begs the question, how much documentation do you need to write?   You should product “just enough” for the team to be clear and not more.  These can be everything from full Software Requirements Specifications (SRS) to a small collection of user stories.  It really depends on the needs of the team. 

Customer collaboration over contract negotiation

Don’t forget that when we speak of team in Agile development, we include the customer and everyone involved on the project.  This attitude creates strong groups including of developers, testers, project manager, and clients working together to create the best website possible.   Creating a collaborative environment should be the priority.

Responding to change over following a plan

All of this collaboration creates increased visibility for everyone involved in the project.  This gives the opportunity for new innovations and ideas to emerge as everyone has developed a shared understanding of the full view of the project.  If you blindly follow the plan, you will not be able to capitalize on new and emerging knowledge over the course of the project.

Drupal developers can greatly benefits from embracing Agile development ideas.  Think about how to structure your projects around shared knowledge, learning, collaborations and clients.

  Tags: drupalAgiledrupal planet
Categories: Drupal

IGDA announces latest appointments for board of directors

Social/Online Games - Gamasutra - 17 April 2014 - 9:56am

The International Game Developers Association, a non-profit group for video game developers, has elected board members for 2014-2015. ...

Categories: Game Theory & Design

Can we learn anything from strange old adventure games? - by Leigh Alexander

Gamasutra.com Blogs - 17 April 2014 - 9:54am
My new video series, "Lo Fi Let's Plays," focuses on using a familiar video format to look at unfamiliar or vintage game content. Can we learn from the Apple II era? Who knows, but it's fun!
Categories: Game Theory & Design

Reflections on an Indie Failure – StarLicker Postmortem - by Hayden Cacace

Gamasutra.com Blogs - 17 April 2014 - 9:54am
A postmortem about Heartonomy's iOS game StarLicker. The game was not a success, and in this article the developers reflect on the mistakes that were made and what they learned from them.
Categories: Game Theory & Design

Stop-Motion Animation Reflection - by Wesley Rockholz

Gamasutra.com Blogs - 17 April 2014 - 9:33am
Reflecting on my first attempt at a stop-motion animation film.
Categories: Game Theory & Design

Level Design Using the Elements of Art and Principles of Design Part I - by Wesley Rockholz

Gamasutra.com Blogs - 17 April 2014 - 9:31am
Applying the basic elements and principles of art and design to level design to create a world that is intuitive and balanced (or not, if you so desire).
Categories: Game Theory & Design

Balancing Randomness with Player Choice - by Wesley Rockholz

Gamasutra.com Blogs - 17 April 2014 - 9:27am
My thoughts on balancing the unpredictability and lack of control caused by randomness in a game by providing facets for player decision making.
Categories: Game Theory & Design

Welcome to My Blog! - by Wesley Rockholz

Gamasutra.com Blogs - 17 April 2014 - 9:24am
Hi readers, I’m Wes Rockholz, a Game Design and Development student at Rochester Institute of Technology. Welcome to my new professional blog!
Categories: Game Theory & Design

Improving Freemium Design - Cardinal Quest II - by Benjamin Sipe

Gamasutra.com Blogs - 17 April 2014 - 9:14am
I love RPGs, I love mobile gaming and I love F2P games. Do I love Cardinal Quest 2? Let's take a look at what works and what doesn't in this edition of Improving Freemium Design.
Categories: Game Theory & Design

Diversity, Halo, and the 'sexual/political agenda' of Fragments of Him - by Mata Haggis

Gamasutra.com Blogs - 17 April 2014 - 9:11am
Why is it that games that address issues of diversity are often described as having an 'agenda', regardless of content, when mainstream titles are not given this label? Inspired by the recent Different Games conference, this post discusses this phenomena.
Categories: Game Theory & Design

The Collectables monetization analysis - by Ethan Levy

Gamasutra.com Blogs - 17 April 2014 - 8:28am
Despite Crytec pedigree, high-end visuals, core gameplay and Mobage integration, The Collectables has not made a major impact on the iOS charts. In this post, F2P expert Levy analyzes the design issues negatively impacting monetization and retention.
Categories: Game Theory & Design

My audacious adventures of music and sound effects - by Sarah Wallace

Gamasutra.com Blogs - 17 April 2014 - 8:28am
My highs and lows as I try and make my own music and sound effects for the first time.
Categories: Game Theory & Design

Mediacurrent: Mediacurrent's Kendall Totten to speak at ConvergeSE

Planet Drupal - 17 April 2014 - 8:22am

ConvergeSE is an immersive web design, development and business conference full of informative worshops and inspiring keynotes. Mediacurrent's own Kendall Totten will be leading the session "Choosing Drupal as a CMS Framework for your next project, which covers a wide range of subjects, such as

  • What is Drupal and what makes it great?
  • What is involved with building & theming a Drupal site.
  • How to get a Drupal site off the ground quickly

Join Kendall on the Front End track, or explore some of the other tracks, such as Design, Gaming, Makers, UX, Development, and Business and Marketing.

Categories: Drupal

Scott Hadfield: Drupal community member interviews with Acquia. You won't believe what happens next!

Planet Drupal - 17 April 2014 - 7:55am
With apologies to webchick for ripping her brilliant headline ;-) The background:

At the end of 2013 I started to think about where I currently am work-wise, and what I enjoy and want to do with myself now. My drupal-based startup Hello Pretty has been growing at a fantastic rate, and is also self sustaining enough now that I can step away without harming it. We've built it with an ideal of keeping things technically as simple as possible and rather focusing our money & energy on marketing.

In my job at NowPublic I managed the dev team (rather than doing any programming myself. After 20 years of it I've started to get a bit bored). I loved that job and decided that I'd like to get back into that.

In January I began the process of looking for jobs. This would most likely have meant leaving our beautiful home in Cape Town and moving to where the work was. So it was no small decision for Sam and I.

At the end of February two very cool companies for positions I hadn't applied to contacted me two days apart, both through word-of-mouth references from people I've worked with previously. After a handful of rejections in the process already, I was ecstatic. One was in one of my favourite cities in the world, Vancouver :), and the other - Acquia - I've followed since day one of it's existence and have several friends and former colleagues who work there.

After chatting to the company in Vancouver a couple of times, they were quite keen and waiting to hear back on where I stood.

As I write this I keep thinking back to one of my favourite quotes and wondering why I didn't heed this advice sooner. It refers to a person's character or nature, and that how they handle anything small or 'unimportant' most likely reflects how they handle everything big or important.

 

My Acquia Story

 

Note: I don't blame any individual for my experience, but rather a culture within the company. Any names of the people who I spoke to have been changed.

Week 1

Matt from Acquia and I chatted on Skype video for about an hour. He was the person most involved in hiring me, and making a final call. We discussed my skills and qualifications, my salary expectations, and the fact that I had another company waiting for a response from me. He was keen to chat more and would try to keep the process quick so that I didn't have to keep the Vancouver company waiting long. He asked whether I'd be ok to have interviews over the next week. I agreed and said I'd explain the situation to the other company. After those were done there'd still be the meetings with the CEO and CTO of Acquia. He couldn't promise that it would be easy to schedule with them, so there could be additional delays.

This was on Wednesday morning Boston-time.

Week 2

By the following Monday at mid day, 6 days later, I still hadn't heard from them and assumed that he'd changed his mind. Not a big deal. But then, a recruiter from Acquia finally emailed me to schedule some interviews. Yay!

I sent back my schedule and... nothing. I understood from friends that Acquia usually want a few interviews, and the week was quickly coming to an end.

I followed up with the recruiter explaining that there was some urgency and that I didn't want to keep the Vancouver company waiting - I'd already put them off for a full week at this point. In the interest of expediting the process I offered to rearrange my own schedule or meet at short notice. I also asked for a sense of Acquia's timeline.

The recruiter promptly responded by setting up 4 interviews over the next two days. Three of them after 8pm my time, and one of them scheduled from 11:30pm to 12:30am. Ok, I figured, people are busy, and if this was going to get things done sooner, then great. Besides, this would give me bragging rights for having had a job interview at midnight.

After those 4 interviews I was asked to review the product I'd be working with to provide feedback, suggestions, etc. which I did over the weekend. I spent a few hours figuring it out, and working on my review. Obviously I wanted to impress, and the feedback I got from them (on my feedback) was very positive. I was actually really impressed with what I saw. Acquia is doing a lot of very cool stuff that I'd had no idea about.

Week 3

I had now kept the company in Vancouver waiting considerably longer than I'd told them I would. I hate keeping people waiting, in any context, and if I tell someone I'm going to do anything by a certain date or time it's important to me to stick to it. That goes for work and personal commitments.

On Monday (day 13) I'd again had no word. I followed up on Tuesday. "Interviews would be scheduled shortly". Matt asked if it would be ok to do this on very short notice and how late I could meet. Keen to wrap things up, I agreed to meet at any time.

After those next two interviews, radio silence. Matt said he'd "touch base to follow up with next steps". And then more radio silence. Two days later he got back to me to say he was having the recruiter set up more interviews. And sure enough, on Friday that week the recruiter mailed me to arrange a few more interviews.

This was when I started feeling demoralized. Why had they only scheduled two interviews in the entire week when I'd made my schedule completely open to them? Why did they continue to schedule interviews after 8pm for me (that's after 2pm Boston-time) if they were only going to schedule two or three in a week? I knew there was one other candidate, I had no idea where I stood, and it was never communicated to me how many more interviews there might be. I'd made my schedule very flexible for Acquia, and I'd pushed back my other job to the point where I was being straight-up disrespectful to them.

I decided to get back to the guys in Vancouver and figure out next-steps with them.

I've interviewed for jobs in the past, and I've interviewed people for jobs. I'm quite familiar with the "normal" process from both ends. Never had I been involved in, or even heard of, had such a long, stretched out and uncomfortably bureaucratic process. I hardly expected it from a company who claims to want to move quickly, and one who I hadn't applied to, but had actually approached me in the first instance. This is a company whose CEO subscribes to a philosophy of Ready, Fire, Aim. I'm of the opinion that, if you can't make a decision after 4 interviews... DO NOT HIRE. It's a sign that something's wrong, maybe just a gut feeling, but something worth listening to. I'd had 7 interviews by now, with 3 more scheduled for the following week.

I began seriously questioning whether I could work for a company with such bureaucratic, non-transparent and slow processes. Was this how things operate internally too? It was hard for me to believe that they could have a hiring process like this and still function acceptably within the rest of the company. But, I have a lot of friends who work for Acquia and they all seem to really enjoy working there.

The recruiter asked for times early the following week, so I again opened up my entire schedule including late night interviews. For anyone who's never done a late night interview, I'll tell you right now that they're extremely challenging. After a full day of work (I've been putting in 10 to 12 hour days), after hanging out, eating dinner, it's time to snap out of it and get ready. Get out of your PJs, put on a nice shirt, and get focussed. It's always important to be on top of your game in any interview. This means being wide awake and involves adrenaline.

 

The interviews themselves are always intense. Almost always enjoyable for me too, since I love chatting with interesting people (and everyone I spoke to at Acquia was interesting). Regardless, if my interview ends at 11pm, I won't be getting to sleep before 2am at the absolute earliest. This means a slow day to follow it up. Of course I had no idea that this would be the case when I first started agreeing to these, and I also thought I'd be looking at 7 days of it, not at least 3 weeks of it (at the end of which I still didn't have any clue as to when it would all end).

Week 4

My meetings for the week were set up, the final one being at 9pm on Friday. The first interview of the week was with Matt again. I'd hoped to get a chance to get clarity on the process, but no dice. I was caught a bit off guard as he grilled me again on things we'd already discussed in our first and second interviews, and that were brought up by the developers I spoke to in week 3. I had another interview immediately after that which was probably my favourite of the bunch but at the end of it all I was left feeling very disheartened with no idea what was going on.

While I was moving forward with the Vancouver company, all of this was still upsetting. I was under the impression when they contacted me that this would take a week, and it had now been dragged out over 4 (with no end in sight). Had I known up front that they required 10-12 interviews I'd have turned them down immediately and saved everybody a lot of time.

Through all this, and despite feeling the way I did, everyone at Acquia seemed very smart and like people I'd have really enjoyed working with. I felt I had a great vibe with Matt and even if this didn't work out, every one of the team would have been a person I'd have enjoyed having a beer with next time I was in Boston.

This is why the response I received the following Monday was so shocking.

Week 5

 

Hi Scott,

Thank you for taking the time to interview with us for our Director, Acquia {DIVISION HIDDEN} opening. Our team has had a chance to discuss your qualifications, and unfortunately, I have decided to pursue other candidates who appear to match (skills and experience) our requirements more closely at this time.

Should something change on our side (or I get another job opening that matches your background better), I will not hesitate to contact you.

Thank you again for your interest in an employment opportunity with Acquia, Inc., and I wish you the best of luck in your current job search.

Thanks,
[Recruiter's Name]

I was in shocked disbelief. Not because I was turned down for the job though: I had in fact received this identical message two months earlier when I applied for an unrelated position at Acquia. They'd looked at my resume and turned me away without any interviews. And now, after:

  • 3 interviews with Matt,
  • a lot of back and forth emails discussing the company and position,
  • a couple of hours spent reviewing and reporting on the project I'd be managing,
  • 4 weeks, and
  • 10 interviews, with
  • 8 people...

... I got a template rejection? And not even from Matt himself, but from the recruiter he delegated it to.

It took a full day of thinking to figure out whether I was upset because I didn't get the job, or because I'd been treated in such a disrespectful way. I'd believed that I'd had a great vibe with Matt, and that the task of sending me my template rejection had been delegated to a recruiter was insulting.

I'll be honest, I was so furious that first day that I considered working for one of their competitors with the sole purpose of taking them down. The next day after I'd got my head back on straight I realized that that would be a strange focus to put on my life for at least the next decade. I spoke to a friend at Acquia and asked if he thought this (the process, not my malicious aspirations) was normal. He couldn't believe my story, and promptly spoke to Matt about what had happened.

I don't think Matt realized I'd be getting a template response, and after learning so from my friend he quickly sent me an apology mail for it. While his mail explicitly said "Either way, no excuses", it was still surprisingly full of excuses (such as being too swamped).

Now, for all I know Matt wanted to send me a long detailed response or call me to explain everything but really was too swamped to. However, considering that he knew I was under pressure with another company and availed myself for what turned out to be a 10-interview gauntlet, a quick 2-liner explaining that I was rejected and setting up a call would have been appreciated.

 

The Moral

I feel that my quote here applies firmly. When you start seeing red flags like a company taking advantage of a person's offer of flexibility (or anything else), unnecessary bureaucracy, and a lack of transparency, it's probably time to call it a day and cut off communication with them (unless you work well in that environment). After the way I felt during the whole process, should I really have been surprised with the way my rejection was handled?

Nobody, whether applying to a position as a CEO or a janitor, should be treated with such discourtesy by the company interviewing them.

 

For Acquia:

Despite dealing more with Matt than anyone else, I certainly don't put the full blame on him. I believe that what happened here is the result of culture and attitude within Acquia.

You have a CEO who contradictorily states that he won't hire anyone with a Ready Aim Fire mentality. Acquia's hiring process is exactly that. Dries (the CTO) says he wants Acquia to do well and good such as acting as a driver to build up and support the Drupal community, yet at the same time the company is treating job candidates (many from within that same community) extraordinarily disrespectfully.

To those at Acquia who are in a position where they can make positive change: it's time you look at your processes and question them. Another friend at Acquia told me that the HR and hiring process is something you're proud of. If you happen to read this post and you're proud of the actions taken, well, I appreciate the rejection.

I'm almost certainly not an isolated case. Much of the Acquia team is made up of loyal members of the Drupal community, and I'd guess that a large percentage of the applicants are community members too (myself included).

Categories: Drupal

Frederick Giasson: Configuring and Using OSF Entities (Screencast)

Planet Drupal - 17 April 2014 - 5:29am

This screencalcast introduces you to one of the most important OSF for Drupal connector: the OSF Entities module. This module creates a new Entity Type called Resource. The description of these entities is managed directly into the Open Semantic Framework (OSF). All the calls to the core entity API function like: entity_load(), entity_save(), entity_create() and entity_delete() are operated with different calls to different OSF web service endpoints.

What this means for a Drupal developer is that they can use Drupal’s Entity API to manage instance records that are hosted remotely in a OSF instance. They don’t have to know how OSF works in order to take advantage of it. They just have to use the API they are used to use. This new Entity Type supports the following Drupal features:

  1. Full Entity API
  2. Entities caching
  3. Revisioning
  4. SearchAPI
  5. Templates selection with inference on their type
  6. 29 field widgets
  7. Export feature in 6 formats

The screencast introduces you to the following aspects of the OSF Entities module:

  1. Introduction to the architecture of the OSF Entities module
  2. Exposing the available entities in OSF into Drupal Bundles and Fields
  3. Browsing and searching for Resource entities
  4. Managing Resource Type bundles
  5. Introduction to the OSF Entity Reference field widget
  6. Creating and updating Resource entities

 



Categories: Drupal

Are you Protecting Your Business from its Employees? - by Jonathan Sparks

Gamasutra.com Blogs - 17 April 2014 - 4:57am
How to protect the most valuable assets of your company with modern legal tech.
Categories: Game Theory & Design
Syndicate content


about seo