All RPGs and Storygames by Tod Foley are now available at DrivethruRPG and RPGnow. Bring these games to your table!
Multi-Platform VR takes a bold new step with the Mixed Reality Toolkit beta launch - by Simon Jackson
I was reading the Pathfinder item creation rules recently and I was struck by one piece of the RAW. Aside from some exceptions, creation of magic items requires “materials” equal to half of the end market value of the item produced. These items are specifically left vague. One presumes this is for several reasons:
- So the rule books don’t have to be a grocery list of items required for magic item creation.
- So that reasonable substitutions can be made. Do you really need Medusae venom for ink for your scroll of flesh to stone? Can you not use distilled Gorgon Breath?
- So that you can flavor items depending on materials. A magic sword created from iron ingots, obsidian chunks, or the trophy teeth of a great beast will all look very different and might lend themselves to different secondary enchants.
- So that I can explain why the RAW explicitly allows for free item creation… Whaaaa? Yeah really. (but seriously, as GM you don’t HAVE to allow this any more than any other rules loophole but I think it’s kind of cool personally and would allow it.)
So according to the magic item creation rules you need half the market value of the item to be created in unspecified “materials”. And creating the item takes time based on item value (and in 3, 3.5 also xp). But since “materials” is left vague, there’s no reason at all that those materials can’t themselves be magic items as long as they are also appropriate materials for crafting the item in question. So magic ingots of metal, magic wood, magic silks, magic crystals, magic nuggets of pure elements — if you can imagine it, you can make magic items out of it. Again, that’s part of the goal of the system. Making a magic greatclub from any of the above makes wildly different items, each of them interesting and cool in their own way.
But here’s the catch: You can make a magic sword worth 16000 gp from 8000 gp worth of magic iron ingots and magic crystals. But how much does it cost to make 8000 gp worth of magic iron ingots and magic crystals? 4000 gp of “materials”. But can those materials be magic? Why the heck not? So you can make 8000 gp worth of magic ingots and crystals from 4000 gp worth of magic ore and uncut gems. But can those be magic? Hell yeah! You see where this is going, right? Start with a nearly worthless commodity and enchanting it into “unspecified magic version of itself” doubles its gp value. Rinse and repeat, doubling each time. And there is even historical precedent in fiction. You are literally spinning straw into gold there, Rumpelstiltskin.
You can just trust me and leave it at that. Kind of hand wavy but it clearly works and is RAW. As a GM you can deny it to your players, that’s up to you but that is the way the rules work. But if you don’t want to leave it there, let’s codify it a bit:
Ingot of Crafting
Price: Varies; Slot: None; CL: 1; Weight: Varies; Aura: Transmutation
These gold ingots come in a variety of sizes and values. Any Crafter can concentrate on any number of them while crafting which causes the ingots to transform into an amount of materials appropriate to the craft the user is creating equal to the value of the ingots used.
Cost: Varies; Feats: Craft Wondrous Item; Special: Caster must have access to the transmutation school of magic
So if you wanted a 500 gp ruby to use in your staff you could gather 500 gp worth of Ingots of Crafting, concentrate on the pile and poof! Ruby!
Clearly the market value of these Ingots of Crafting is equal to the value of materials they produce. First, it says so right in the item description. Second, if the Ingot was worth more, no one would pay for them over just buying the materials themselves. If the Ingot were worth less people would buy up all the ingots selling for LESS than the value of materials they produce (thus driving up the cost of Ingots to material value), turn them into materials and sell those materials. So: obviously market value equal to what they produce.
Note that this seems weird but absolutely works and has been borne out by many discussions about how DnD and Pathfinder magic works off market value in the past. The classic example that you can find discussed ad nauseam online is the 3, 3.5 pearl. If you crash or rig the pearl market, you STILL need a 100gp pearl for identify. It doesn’t matter if that pearl is a seed or a monstrosity. It only matters that it’s market value is 100gp.
Note: In Pathfinder, this may seem to be in opposition to the 3rd party Artificer’s Salvage ability, but it’s really not. The Salvage ability lets you turn a magic item that is not an appropriate material for an item you are crafting into half its value of materials that are appropriate to any crafting attempt. In effect it is making explicit that universal magic materials that are useful in crafting any and all magic items do in fact exist.
So the catch is: if you have an Ingot of Crafting you could use it as materials to make: an Ingot of Crafting worth twice as much (because it has half the market value of what you’re creating) and you could use that one to double again, etc… etc… until you have the value you need to make whatever item you want.
Doesn’t have to be exactly this. You could create enchanted iron ingots or ensorceled silk that give you a bump to your crafting roll when you use them as materials or whatever. The Ingots just are a simple obvious example.
BUT of course it’s not quite that simple. The additional crafting steps still take time, and in 3, 3.5 also xp. In order to make an item of value X, you need 1/2X in value. In order to make the 1/2X of value you need 1/4X etc… etc… and since crafting takes linear time (and xp), making the components for an item worth half it’s value takes half the time (and xp) the item does, and making the components for that item takes half the time (and xp) again, 1/4 the original etc…
This is a classic geometric series 1/2 + 1/4 + 1/8+ 1/16… = 1
So according to RAW you can craft any item you want for essentially free, but the catch is in order to do so you have to spend twice the time (and xp) making it. This means that rushed crafting of items still takes money/materials. It also makes sense that to create magic materials you would need the Craft Wondrous Items feat and perhaps access to certain appropriate spells, meaning that creating free items has additional prerequisites.
BADCamp 2018 was the first real big event I attended, aside from actively participating in Drupal Camp Costa Rica for three years. Kindly enough some co-workers who had already assisted shared with me their experience which gave me great expectations. In addition, I was excited to sightsee San Francisco and Berkeley.
After dedicating this year to front-end, BADCamp sessions left me more than satisfied, with refreshed knowledge and practices. So I would like to share my experience and the content of sessions I participated:
The second day was a highlight, assistants were given challenges and tools, dialogue tables enriched my personal experience by listening to others talk about ways to improve development applications.hjuarez Mon, 11/05/2018 - 12:48
This module exposes Drupal content entity definitions through GraphQL via the Drupal GraphQL contrib module.
This can be useful for building forms/views for entities through a front-end automatically instead of hand coding and constantly maintaining updates and changes.
Sector Portfolio offers a simple and easy way to add a promotional portfolio or showcase to your site. Included is everything you'll need to get going - a Portfolio content type, categories, and a Portfolio landing page via a Drupal view.
Simple module to display SolarEdge solar power production data.
It provides a very simple way to distribute entity access per user.
The work is in progress...
This module creates an new node bundle 'reveal_js_presentation' that
will be displayed as reveal.js slides.
Team AdWeb has worked for a distinctive list of industries counting from hospitability to technology and retailers to an online lottery purchase system based website. Yes, we recently collaborated with a Japan-based company to build their website with lottery purchase system, using Drupal 8. We’ve been Drupal-ing even before our inception and have been an active member of the Drupal community, globally. Our association and experience of Drupal were the base of the client’s immense faith in us and we knew that we’re going to stand true to that.
About the Project
The project requirement of the client was to build a website for them in Drupal 8. The website is basically an online lottery purchase system. Due to confidential reasons, we can not share the name of the company/client but would like to share that the experience of working on this project was new and enriching.
We personally love experimenting and implementing innovative features to enhance the client’s website. Plus, we get a little more excited when its a Drupal 8 website. We integrated a host of futuristic features to this very website too. But since, it’s an online lottery purchase system we knew that the integration of the Payment Gateway is going to be one of an integral part. Hence, we created three types of Payment Gateway, as follows:\
The user is an integral part of this entire online lottery system and hence several functionalities are crafted around them. Like, a user can purchase coins by WebMoney Payment method and can also buy lottery from choosing any product bundle. A user also has an option to select the quantity of the product or go for the complete set. The payment for either of it can be done by the coins, GMO credit card or points.
Draw system is used for the selection of the lottery winner. Other than the lottery prize, the user also stands a chance to win the Kiriban Product as a prize. The Kiriban Product is based on the product bundle configuration, which is an additional product that a user gets as defined by an admin user.
Any e-commerce website will definitely have multiple users buying for the same product. In this situation, the backend technicalities should be as such that it updates the quantity left of the product after the last purchase is made. Issues occur when two or more users place the order at the same time. This is an issue that is involved in concurrent shopping. In this case, the lottery opened for some specific time. Hence, the issue occurred in showcasing the updated quantity. This problem came to our notice when the site went live and around 7-8 users made the transaction at one specific time. We immediately started working on the issue.
We quickly picked up the problem and started searching for the resolution. We have had several times, prior to this, created an e-commerce website. Hence, we used multiple methods to resolve the issues, mentioned below, but none of them worked in this particular case.
Initially, we tried using a Drupal lock to resolve the issue, but in vain.
We, later on, used the MySQL lock but this too didn’t work, due to the involvement of multiple quantities inside for loop.
The usage of sleep time with random sleep time also did not work, because it created the nearby value and not the exact one.
Though the method of random sleep time did not work in this case, it gave birth to the final resolution that worked. And hence, we did a minor modification to the same and divided the sleep time in a range of 3. Also, to avoid the possibility of any further clash, we adopted a table of 100.
The Final Resolution:
After trying out a handful of methods, we finally came up with a method that did work out in our favor. Let us share what steps did finally help us in addressing the problem of concurrent shopping that we faced:
A table consisting of 1 to 100 numbers was taken, with the sleep time by a range of 3.
Later, a random number was picked and a flag value for the same was set
Then, a greater number from those numbers with the range of 3 was picked
Below is the table that was created to bring out the final solution:, ,
‘Flag’ was used to 0 by default, which will be automatically set to 1 every time the number is in use
How it works:
At the beginning of the transaction, the max sleep_time will be checked where flag=1
The sleep_time for the first user will be 0
After this, a random number from max sleep_time is selected with a range of 3
The first user’s range is 1-3
In the case of the second user, one number will be skipped after the max time and will be started after that number
In case a user gets the max sleep_time in 3 then the range for the random number will be 5-7
If the second user gets the random number as 6 then the random number range for the third user will be 8-10
The flag value will be updated as 1 for this random number
In the end, the flag value of the transaction will be updated with 0
The Final Say:
“All is well, that ends well.” And that’s exactly we have to say for this particular project. Yes, though we had coded and created many e-commerce websites before, this was the first time that we picked up a project to create a Drupal 8 website with an online lottery system. And believe us, it was a monumental success for us and satisfying project for the client.
A machine learning model, that could lead a driver directly to an empty parking spot, fetched the second prize in the Graduate level: MS category at the 2018 Science and Technology Open House Competition. It goes without saying that dreams of computer systems with godlike powers and the wisdom to use them is not just a theological construct but a technological possibility. And sci-fi éminence grise Arthur C. Clarke rightfully remarked that “any sufficiently advanced technology is indistinguishable from magic.”
Machine learning predates computers!
Artificial Intelligence (AI) may be the buzzword of our times but Machine Learning (ML) is really the brass tacks. Machine learning has made great inroads into different areas. It has the capability of looking at the pictures of biopsies and picking out possible cancers. It can be taught to predict the outcome of legal cases, writing press releases and even composing music! However, the sci-fi future where a machine learning beats a human in all the conceivable department and is perpetually learning isn’t a reality yet. So, how does machine learning fit into the world of content management system like Drupal? Before finding that out, let’s go back to the times when computers did not even exist.
In this day and age, self-driving cars, voice-activated assistants and social media feed are some of the tools which are powered by machine learning. Compilations made by BBC and Forbes show that machine learning has a long timeline that relies on mathematics from hundreds of years ago and the elephantine developments in computing over the years.Machine learning has a long timeline that relies on mathematics from hundreds of years ago and the elephantine developments in computing over the years
Mathematical innovations like Bayes’ Theorem (1812), Least Squares method for data fitting (1805) and Markov Chains (1913) laid the foundation for modern machine learning concept.
In the late 1940s, stored-program computers like Manchester Small-Scale Experimental Machine (1948) came into the picture. Through the 1950s and 1960s, several influential discoveries were made like the ‘Turing Test’, first computer learning program, first neural network for computers and the ‘nearest neighbour’ algorithm. In the nineties, IBM’s Deep Blue beat the world chess champion.
Post-millennium, we have several technology giants like Google, Amazon, Microsoft, IBM and Facebook today actively working on more advanced machine learning models. Proof of this is the Alpha algorithm, developed by Google DeepMind, which beat a professional in the Go competition and it is considered more intricate than chess!Discovering Machine Learning
Machine learning is a form of AI that allows a system to learn from data instead of doing that through explicit programming. It is not a simple process. As the algorithms ingest training data, producing more accurate models based on that data is possible.Advanced machine learning algorithms are composed of many technologies (such as deep learning, neural networks and natural-language processing), used in unsupervised and supervised learning, that operate guided by lessons from existing information. - Gartner
When you train your machine learning algorithm with data, the output that is generated is the machine learning model. After training, when you provide an input to the model, an output will be given to you. For instance, a predictive algorithm will build a predictive model. Then, when the predictive model is provided with the data, you receive a prediction based on the data that trained the model.Difference between AI and machine learning Source: IBM
Machine learning may have relished a massive success of late but it is just one of the approaches for achieving artificial intelligence.
Forrester defines artificial intelligence as “the theory and capabilities that strive to mimic human intelligence through experience and learning”. AI systems generally demonstrate traits like planning, learning, reasoning, problem solving, knowledge solving, social intelligence and creativity among others.
Alongside machine learning, there are numerous other approaches used to build AI systems such as evolutionary computation, expert systems etc.
Machine learning is generally divided into the following categories:
- Supervised learning: It typically begins with an established set of data and with a certain understanding of the classification of that data is done and intends to find patterns in data for applying that to an analytics process.
- Unsupervised learning: It is used when the problem needs a large amount of unlabeled data.
- Reinforcement learning: It is a behavioural learning model. The algorithm receives feedback from the data analysis thereby guiding the user to the best outcome.
- Deep learning: It incorporates neural networks in successive layers for learning the data in an iterative manner.
Today, the majority of enterprises require descriptive analytics, that is needed for efficient management, but not sufficient to enhance business performance. For the businesses to scale higher level of responsiveness, they need to move beyond descriptive analytics and move up the intelligence capability pyramid. This is where machine learning plays a key role.For the businesses to scale higher level of responsiveness, they need to move beyond descriptive analytics and move up the intelligence capability pyramid.
Machine learning is not a new technique but the interest in the field has grown multifold in recent years. For enterprises, machine learning has the ability to scale across a broad range of businesses like manufacturing, financial services, healthcare, retail, travel and many others.Source: Tata Consultancy Services
Business processes directly related to revenue-making are among the most-valued applications like sales, contract management, customer service, finance, legal, quality, pricing and order fulfilment.
Exponential data growth with unstructured data like social media posts, connected devices sensing data, competitor and partner pricing and supply chain tracking data among others is one of the reasons of why adoptions rates of machine learning have skyrocketed.
The Internet of Things (IoT) networks, connected devices and embedded systems are generating real-time data which is great for optimising supply chain networks and increasing demand forecast precision.
Another reason why machine learning is successful because of its ability to generate massive data sets through synthetic means like extrapolation and projection of existing historical data to develop realistic simulated data.
Moreover, the economics of safe and secure digital storage and cloud computing are merging to put infrastructure costs into free fall thereby making machine learning more cost effective for all the enterprises.
A session at DrupalCon Baltimore 2017 had a presentation which was useful for machine learning enthusiasts and it did not require any coding experience. It showed how to look at data from the eye view of a machine learning engineer.
It also leveraged deep learning and site content to give Drupal superpowers by making use of same technology that is exploding at Facebook, Google and Amazon.
The demonstration focused on mining Drupal content as the fuel for deep learning. It showed when to use existing ML models or services when to build your own, deployment of ML models and using them in production. It showed free pre-built models and paid services from Amazon, IBM, Microsoft, Google and others.
Drag and drop interface was used for creating, training and deploying a simple ML model to the cloud with the help of Microsoft Azure ML API. Google Speech API was used to turn spoken audio content into the text content to use them with chatbots and virtual assistants. Watson REST API was leveraged to perform sentiment analysis. Google Vision API module was used so that uploaded images can add Face, Logo, and Object Detection. And Microsoft’s ML API was leveraged to automatically build summaries from node content.
Another session at DrupalCon Baltimore 2017 showed how to personalise web content experiences on the basis of subtle elements of a person’s digital persona.
Standard personalisation approaches recommend content on the basis of a person’s profile or the past activity. For instance, if a person is searching for a gym bag, something like this works - “Here are some more gym bags”. Or if he or she is reading about movie reviews, this would work - “Maybe you would like this review of the recently released movie”.
But the demonstration shown at this session had advanced motives. They exhibited Deep Feeling, a proof-of-concept project that utilises machine learning techniques doing better recommendations to the users. This proof-of-concept recommended travel experiences on the basis of kind of things a person shares with the help of Acquia Lift service and Drupal 8.
With the help of Instagram API to access a person’s stream-of-consciousness, the demo showed that their feeds were filtered via a computer-vision API and was used to detect and learn subtle themes about the person’s preferences. Once a notion on what sort of experiences, which the person thinks are worth sharing, is established, then the person’s characteristics were matched against their own databases.
Another presentation held at Bay Area Drupal Camp 2018 explored how the CMS and Drupal Community can put machine learning into practice by leveraging a Drupal module, taxonomy system and Google’s Natural Language Processing API.
Natural language processing concepts like sentiment analysis, entity analysis, topic segmentation, language identification among others were discussed. Numerous natural language processing API alternatives were compared like Google’s natural language processing API, TextRazor, Amazon Comprehend and open source solutions like Datamuse.
It explored use cases by assessing and automatically categorising news articles using Drupal’s taxonomy system. Those categories were merged with the sentiment analysis in order to make a recommendation system for a hypothetical news audience.Future of Machine learning
A report on Markets and Markets states that the machine learning market size will grow from USD 1.41 Billion in 2017 to USD 8.81 Billion by 2022 at a Compound Annual Growth Rate (CAGR) of 44.1%.
The report further states that the major driving factors for the global machine learning market are the technological advancement and proliferation in data generation. Moreover, increasing demand for intelligent business processes and the aggrandising adoption rates of modern applications are expected to offer opportunities for more growth.
Some of the near-term predictions are:
- Most applications will include machine learning. In a few years, machine learning will become part of almost every other software applications with engineers embedding these capabilities directly into our devices.
- Machine learning as a service (MLaaS) will be a commonplace. More businesses will start using the cloud to offer MLaaS and take advantage of machine learning without making huge hardware investments or training their own algorithms.
- Computers will get good at talking like humans. As technology gets better and better, solutions such as IBM Watson Assistant will learn to communicate endlessly without using code.
- Algorithms will perpetually retrain. In the near future, more ML systems will connect to the internet and constantly retrain on the most relevant information.
- Specialised hardware will be delivering performance breakthroughs. GPUs (Graphics Processing Unit) is advantageous for running ML algorithms as they have a large number of simple cores. AI experts are also leveraging Field-Programmable Gate Arrays (FPGAs) which, at times, can even outclass GPUs.
Whether computers start ruling us someday by gaining superabundance of intelligence is not a likely outcome. Even though it is a possibility which is why it is widely debated whenever artificial intelligence and machine learning is discussed.
On the brighter side, machine learning has a plenitude of scope in making our lives better with its tremendous capabilities of providing unprecedented insights into different matters. And when Drupal and machine learning come together, it is even more exciting as it results in the provision of awesome web experience.
Opensense Labs always strives to fulfil digital transformation endeavours of our partners with a suite of services.
Contact us at firstname.lastname@example.org to know how machine learning can be put to great to use in your Drupal web application.blog banner blog image Machine Learning Drupal Machine Learning Machine Learning and Drupal Drupal Drupal 8 Supervised learning Unsupervised learning Deep Learning Artificial Intelligence AI Reinforcement learning web personalisation Blog Type Articles Is it a good read ? On
Jeff Geerling's Blog: Drupal startup time and opcache - faster scaling for PHP in containerized environments
Lately I've been spending a lot of time working with Drupal in Kubernetes and other containerized environments; one problem that's bothered me lately is the fact that when autoscaling Drupal, it always takes at least a few seconds to get a new Drupal instance running. Not installing Drupal, configuring the database, building caches; none of that. I'm just talking about having a Drupal site that's already operational, and scaling by adding an additional Drupal instance or container.
One of the principles of the 12 Factor App is:
Maximize robustness with fast startup and graceful shutdown.
Disposability is important because it enables things like easy, fast code deployments, easy, fast autoscaling, and high availability. It also forces you to make your code stateless and efficient, so it starts up fast even with a cold cache. Read more about the disposability factor on the 12factor site.
This module provides an ability to manage Google Drive files through Drupal site.
- Ability to configure Drive files
- Manage Drive file permissions