I finished The Legend of Zelda – Breath of the Wild

Of course you can’t actually finish an open world game. Even if you used the game’s internal 100% completion counter, that still doesn’t cover all the content there is. So when I say I “finished” the game, I’m using the goals that I set for myself: Do all 120 shrines and kill the end boss to get to the closing credits. I did a lot of other content, but for example not all Korok seeds, of which there are far more than you actually need.

I still think Zelda – Breath of the Wild is one of the greatest games ever. I really liked all the discoveries, the open world without invisible walls made possible by the ability to climb vertical surfaces, and the numerous puzzles everywhere. I would have preferred a less action-centric combat system, but I appreciated that it wasn’t so hard that I would have needed more skills than I have in button-mashing. My biggest gripe with the game is that the sensor you get at some point to find shrines or resources you have previously photographed is terribly imprecise and unclear. Some of the shrines I could only find by looking them up on the internet, for example because they were in a cave half way up on a cliff face hidden behind a breakable wall, with no quest giving you any hint that they were there. But then you don’t actually need all 120 shrines to finish the game, so that is hardly a big problem.

My biggest mistake in this playthrough was keeping all my gems. Yes, there is a quest rather late in the game where you can sell gems for more money than usual. And yes, you can use some gems to upgrade some armor. But the gem-selling quest pays only like 10% extra, and you don’t really need to upgrade all your armor to maximum. I only upgraded the ancient armor to maximum, which both gives very good defense and even adds to offense when using ancient or guardian weapons. Most other armor sets need only to be upgraded twice to get the added set bonus. The armor class is mostly irrelevant for armor that you wear for other bonuses, e.g. for faster climbing or swimming. If I had sold all gems found earlier, I would have spent less hours farming materials which I only used to make elixirs which I then sold.

Ending the game produces an automatically saved game marked with a star, which has some added features like the completion counter I mentioned. Besides that some DLC content unlocks only after having done the four divine beasts, so I haven’t done that yet. However I’m not yet convinced that this DLC content is worth doing, as a lot of it appears to be somewhat grindy in nature, like the gauntlet of 45 levels of the Trial of the Sword. I think I will at least try some of that stuff before stopping to play. And I do consider that I might want to play the game again from the start after a while. However I won’t play in Master Mode, because I tried that and it just made combat incredibly hard, which isn’t what I am looking for.

I don’t regret having bought a Switch to play Zelda, but now it might be time to give some other Switch games a chance.

Gardmore Abbey 5E rerun – Session 3

Having accompanied Sir Oakley to the temple of Gardmore Abbey and defended him against mad harpies, it turned out that the job of the heroes wasn’t finished. The 3 sacred vessels needed to purify the temple were missing, and so now they are on a quest to find them, among some other quests. A closer examination of the temple revealed a staircase down into the catacombs, with fresh footprints leading there. The group decided not to follow, but made a short rest and then headed over to the wizard’s tower.

Now I have to mention that the 4 locations in which the group can meet an evil group of rival adventurers are determined by the 4 cards drawn for that group. The first encounter was hearing of the group in Winterhaven, the second encounter was the group helping the rivals in the garden to fight giant spiders and being left holding the bag for their effort. The third encounter, in the first room of the catacombs, the group avoided by going there. And by pure chance the location where they wanted to go, the wizard’s tower, was the location for the 4th encounter. So while the group was resting the rival adventurers “moved” to the wizard’s tower.
On the way down to the wizard’s tower the group had an encounter with a Galeb Duhr and two Rust Monsters in the gate house. However the monk and the druid weren’t wearing any non-magical metal at all, the ranger stayed at a distance, and the barbarian succeeded all saving throws to turn his extra weapons into rust; so the Rust Monsters weren’t really all that scary for this particular group. Being under no time pressure the group made another short rest.
Again they discovered traces of the rival adventures, them having left climbing gear in place to descend the slope to the wizard’s tower without taking the detour through the orc camps. And finally the two groups met again, this time with the evil group in full health and ready to strike. The ensuing combat was a tough one, as the evil group had the same level 5 and outnumbered the players 5 to 4. However I had deliberately not optimized them, and so the players ultimately prevailed. With 3 of the evil group members down, the player druid offered them terms of surrender (“give us your cards and leave the abbey forever”), which they accepted. As I give out full xp even for diplomatic victories this fight got the group up to level 6, but I told them they needed to return to Winterhaven for that.
In Winterhaven there was some chaos, because their previous “diplomatic victory” had involved letting loose a beholder, who had passed by the town, burned down the church, and killed the priest, before moving on. One always needs to consider the possible consequences of not killing your enemies!
Now level 6 and back at the abbey they found the wizard’s tower’s door had been breached during their absence by a group of orcs, which then had been slaughtered by forces unknown. Mistrustful of the gargoyle statues in front of the door they first attacked them, but that was a short and easy fight. Inside the barbarian librarian found a scroll on a bloodstained sheet covering a large female form. Taking the scroll of course awoke that form, a female flesh golem, the failed attempt of the wizard to resurrect the love of his life. The fight against the golem was a bit harder, also due to some random magical effects in the room. Before going up the tower we decided to stop the session and continue next time. 

SoMe-Things YoU sHould knOw about “PhoneGap”: Android – LeaVe my baThRoom at-least !

PhoneGap Framework

phonegap

Building applications for each platform–iPhone, Android, Windows and more–requires different frameworks and languages. PhoneGap solves this by using standards-based web technologies to bridge web applications and mobile devices. Since PhoneGap apps are standards compliant, they’re future-proofed to work with browsers as they evolve.


The PhoneGap framework was contributed by the Apache Software Foundation (ASF) under the name Apache Cordova and graduated to top-level project status in October 2012. Through the ASF, future PhoneGap development will ensure open stewardship of the project. It will always remain free and open source under the Apache License, Version 2.0.
To develop apps using Phonegap, the developer does not require top have knowledge of mobile programming language but should know languages like, HTML, CSS, JScript.
PhoneGap takes care of rest of the work, such as look and feel of the app and portability among various mobile operating systems and also allows its users to upload the data contents on website and it automatically converts it to various App files.

PhoneGap Environment Setup

Lets see how to setup basic PhoneGap Environment to develop apps easily. PhoneGap supports offline creation of apps using Cordova command line interface and Github, but we concentrate on online creation of apps. As PhoneGap supports only HTML, CSS and JavaScript, it is mandatory that the application should be created using these technologies only. 
An application package must contain following files:
  • Configuration File
  • Icons for App
  • Content (built using web technologies)
Configuration File
App require one configuration file named as “config.xml” that configure all its necessary settings. This file contains all the necessary information required to compile the app.
following is the content of config.xml file
<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "com.phonegap.example"
versionCode = "10"
version = "1.0.0" >

<!-- versionCode is optional and Android only -->

<name>PhoneGap Example</name>

<description>
An example for phonegap build docs.
</description>

<author href="https://build.phonegap.com" email="[email protected]">
Hardeep Shoker
</author>

</widget>
The widget element must be the root of your XML document.When using PhoneGap Build, ensure you have the following attributes set on your widget element.
id – The unique identifier for your application. To support all supported platforms, this must be reverse-domain name style (e.g. com.yourcompany.yourapp)
version –  for best results, use a major/minor/patch style version, with three numbers, such as 0.0.1
versionCode – (optional) when building for Android, you can set the versionCode by specifying it in your config.xml.
<name> – The name of the application.
<description> – A description for your application.
<author> – The author of the application, either a company or individual (required for Windows 10 builds).
<platform> – You can have zero or more of these elements present in your config.xml. Set the name attribute to one of ios, android, or windows.If you specify none, all platforms will be built.
Icons
It is important to prepare icons of exact shapes and sizes as required by particular mobile operating system. Here we are using the folders res/icon/ios and res/icon/android/drawable-xxxx..To get this work done fast, you can create a logo of size 1024×1024 and log on to makeappicon.com. This website will help you instantly create logos of all sizes for both android and iOS platform.

PhoneGap App Contents

We can create two type of apps. Online app and Offline App. Following is the directory structure for the applications.
Online App
In online app entire information content is loaded from the Internet.
Online app directory structure
The index.html file contains actual links as it contains at the web server and all its links are either absolute or used with base href tag.
Offline App
Offline app will let you create a web application that is downloaded to its entirety to the mobile devices of a user who can access that offline.
offline app directory structure
The config.xml contains app configuration settings. The index.html file contains homepage of web contents. All the HTML files should contain only relative path not absolute path or base href tag.
Once selected your app type, organize files in above mentioned structure and zip it using any standard tool zip tool.

Sign Your App

Android requires that all APKs be digitally signed with a certificate before they can be installed. For this reason, you need to sign your app. You may need keytool which is a part of standard java distribution.Execute the following command in %JAVA_HOME% in your Windows command prompt or Linux Shell:-

keytool -genkey -v -keystore my_keystore.keystore 
   -alias TutorialsPoint -keyalg RSA -keysize 2048 -validity 10000

It should generate one file.

PhoneGap App Compilation

Now we are ready to compile our first web API-based app. PhoneGap accepts user login created on GitHub or using AdobeID. GitHub is a online repository service where users can upload their contents and use them by providing their URL references.
Following steps are required to create Adobe Id and Compile the application.
Create Adobe ID
Got to https://build.phonegap.com/ and register after that login to your account it will display PhoneGap Console as shown in below
phonegap console

Click on ‘Upload a .zip file’ and upload the .zip file we created, which has the entire web content and configurations. You should see the following window after successful upload

Click on the Android icon and the following screen should appear


Click on drop-down option menu next to Android icon that reads No key selected, click on add a key and the following screen should appear
Provide the file created while signing the App. Then click on ‘Rebuild’ button next to it. The app built by this process can be directly uploaded to Google Play. Click on .apk file and you can download your first web-based free app.Before uploading, app should be tested on either virtual or real devices.

sign file submit form

Learn Android Programming?

Huawei confirms its phones will be sold by US carriers in 2018, starting with Mate 10

  • Huawei exec Richard Yu stated its phones will be “competitively priced” in the US market.
  • He added that Huawei does not expect to deal with security concerns in the US.
  • More information on the Huawei US carrier launch will be revealed at CES 2018.

After months of rumors and unconfirmed reports, the massive China-based phone company Huawei has finally and officially revealed that some of its handsets will be sold by US wireless carriers, starting sometime in 2018. The first such phone will be in its Mate 10 family of devices.

Editor’s Pick

The report comes from ABC News, quoting Richard Yu, the president of Huawei Technologies’ consumer business. He stated, “We will sell our flagship phone, our product, in the U.S. market through carriers next year.” The Mate 10, and its higher-end brother, the Mate 10 Pro, went on sale in China and other markets earlier this fall. Previous rumors claimed that the Mate 10 Pro would be sold by AT&T and Verizon in 2018. Yu did not state specifics on which carriers would sell its phones, but he did reveal that more information on those sales plans will be announced in early January during CES 2018.

While Huawei has sold phones under its own name and with its Honor brand in the US as unlocked devices online, breaking into the US carrier market could be huge for the company. Huawei is currently the number three seller of smartphones worldwide, trailing behind only Apple and Samsung. Yu stated today that the company’s phones, as sold by carriers, would be “competitively priced” in the US market.

He also added that Huawei does not expect its plans to be hit by security concerns by the US government. Some lawmakers and agencies have expressed concerns in the past that Chinese-based smartphone companies like Huawei could use those devices to spy on consumers. Today, Yu denied that would be the case, and suggested that those kinds of complaints were either politically motivated, or perhaps generated by its competitors.

Android WiFi: Android – LeaVe my baThRoom at-least !

android wifi


WiFi is a technology for wireless local area networking with devices based on the IEEE 802.11 standards. Devices that can use Wi-Fi technology include personal computers, video-game consoles, smartphones, digital cameras, tablet computers, digital audio players and modern printers. Wi-Fi compatible devices can connect to the Internet via a WLAN and a wireless access point. Such an access point (or hotspot) has a range of about 20 meters (66 feet) indoors and a greater range outdoors. Hotspot coverage can be as small as a single room with walls that block radio waves, or as large as many square kilometers achieved by using multiple overlapping access points.

Android allows applications to access to view the access the state of the wireless connections at very low level. Android provides WiFi API through which applications can communicate with the lower-level wireless stack that provides WiFi network access. Almost all information from the device supplicant is available, including the connected network’s link speed, IP address, negotiation state, and more, plus information about other networks that are available. Some other API features include the ability to scan, add, save, terminate and initiate WiFi connections.

WifiManager is the primary API for managing all aspects of WiFi connectivity. Get an instance of this class by calling Context.getSystemService(Context.WIFI_SERVICE). It’s Syntax is given below:-

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);


WifiManager class provides different methods to control WiFi activities:-

  • int addNetwork(WifiConfiguration config): Add a new network description to the set of configured networks.
  • WifiManager.MulticastLock createMulticastLock(String tag): Create a new MulticastLock
  • WifiManager.WifiLock createWifiLock(String tag): This method creates a new WifiLock.
  • boolean disconnect(): This method disassociate from the currently active access point.
  • boolean enableNetwork(int netId, boolean disableOthers): This method allow a previously configured network to be associated with.
  • int getWifiState(): This method gets the Wi-Fi enabled state
  • boolean isWifiEnabled(): This method return whether Wi-Fi is enabled or disabled.
  • boolean setWifiEnabled(boolean enabled): This method enable or disable Wi-Fi.
  • int updateNetwork(WifiConfiguration config): This method update the network description of an existing configured network.
  • boolean disableNetwork (int netId): Disable a configured network.

In order to scan a list of wireless networks, you also need to register your BroadcastReceiver. It can be registered using registerReceiver method with argument of your receiver class object. Its syntax is given below −

class WifiScanReceiver extends BroadcastReceiver {

   public void onReceive(Context c, Intent intent) {
   }
}
WifiScanReceiver wifiReciever = new WifiScanReceiver();
registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

The wifi scan can be start by calling the startScan method of the WifiManager class. This method returns a list of ScanResult objects. You can access any object by calling the get method of list. Its syntax is given below :-


List wifiScanList = mainWifiObj.getScanResults();

String data = wifiScanList.get(0).toString();

Example

Let’s see the simple example of wifi to enable and disable the wifi service.
To run this example you need actual Android device.
  • You will use Android studio to create an Android application under a package net.suven.android.androidwifi.
  • Modify src/MainActivity.java file to add necessary code.
  • Modify the res/layout/activity_main to add respective XML components.
  • Modify the AndroidManifest.xml to add the necessary permissions
  • Run the application and choose a running android device and install the application on it and verify the results.
Following is the content of src/MainActivity.java

package net.suven.android.androidwifi;

import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity {
Button enableButton,disableButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

enableButton=(Button)findViewById(R.id.button);
disableButton=(Button)findViewById(R.id.button1);

enableButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(true);
Toast.makeText(getBaseContext(), "WiFI Enabled",
Toast.LENGTH_LONG).show();

}
});

disableButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(false);
Toast.makeText(getBaseContext(), "WiFI Disabled",
Toast.LENGTH_LONG).show();
}
});
}
}
Following is the content of activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:textSize="30dp"
android:text="ANDROID WIFI"
android:layout_above="@+id/textView2"
android:layout_centerHorizontal="true"
android:layout_marginBottom="11dp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SCTPL"
android:id="@+id/textView2"
android:textSize="35dp"
android:textColor="#ff16ff01"
android:layout_above="@+id/imageView"
android:layout_centerHorizontal="true" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/suvenlogo"
android:layout_centerVertical="true"
android:layout_alignEnd="@+id/textView" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enable WiFi"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_toStartOf="@+id/textView2"
android:layout_marginEnd="14dp"
android:layout_marginBottom="56dp" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="76dp"
android:text="Disable WiFI"
android:layout_alignBaseline="@+id/button"
android:layout_alignBottom="@+id/button"
android:layout_alignParentEnd="true"
android:layout_marginEnd="20dp" />

</RelativeLayout>
Following is the content of AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.suven.android.androidwifi">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
Following is the output of Application

android wifi enabled

android wifi disabled
Click here to download Source Code and APK

 Learn Android Programming?


Rage of Demons: Session 3

In the previous session our heroes traveled towards the kuo-toa village of Sloobludop, pursued by the drow. They had learned from their kuo-toa companion Shuushar that there were two factions in Sloobludop: The followers of the goddess Blibdoolpoolp (aka “the Sea Mother”) with her archpriest Plooploopeen (aka “Ploop”) were vying for control with the upstart followers of the god Leemooggoogoon (aka “the Deep Father”) and his archpriestess Bloppblippodd (aka “Blopp”), daughter of Ploop.

Before they reached the village they were accosted by a patrol of kuo-toa, who offered them safe passage to Sloobludop if they would put all their weapons in a sack to prevent a surprise attack. They agreed, but before they could reach Sloobludop another patrol of kuo-toa attacked and killed the first patrol. That second patrol was led by Ploop, who explained that the first patrol was from the other faction, who would have sacrificed the group to the Deep Father. Ploop led them to the village and told them which quarters to stay in to not attract the attention of the other faction. But Surina the sorceress was curious about the other faction, magically disguised herself as kuo-toa, took Nyx the druid in the form of a small animal on her shoulder, and went exploring. She found that in fact the altar of the Deep Father looked rather grim: Two octopi were tied together on top of a manta ray, to give the impression of a two-headed monster. Traces of blood sacrifices were visible. In contrast the altar of the Sea Mother had offerings of knickknacks like sea shells, and looked more welcoming.

Based on that information the group agreed to a proposal of Ploop: They were to hide their weapon and armor under robes and be led by a group of Ploop’s followers to the upcoming festival in honor of the Deep Father. Ploop would pretend to give them to Blopp as a peace offering, as sacrifice for her god. But then Ploop, his followers, and the group would attack Blopp and her followers.

They executed the plan as intended. When striking down Blopp, the archpriestess called out “Leemooggoogoon”, and fell bleeding on the god’s altar. Suddenly the dark surface of the lake behind the altar began to bubble, and a huge monstrosity with tentacles and two baboon heads rose from the water. “Leemooggoogon” turned out to be the demon prince Demogorgon! With a single attack Demogorgon killed Prince Derendil, one of the NPC companions of the group. They also lost another NPC companion, Jimjar, by getting separated from him in the ensuing chaos. While Demogorgon killed Ploop, the group escaped and found a boat. With their remaining NPC companions Buppido, Shuushar, Sarith, and Stool, they got away from Sloobludop. Now they knew that something more dangerous than drow was afoot in the Underdark!

With the help of Arkoy’s curse that gave them a sense of direction, and Shuushar’s knowledge of the lake, they decided to travel towards Gracklstugh, the duergar city where Buppido claimed to know a way towards the surface world. But that was 20 days of travel away. On the evening of the first day they stopped at an island where they found a tunnel leading underground in which fungi grew. Unfortunately those turned out to be Timmask, a poisonous mushroom, whose spores put a confusion on Nyx, so she wandered deeper down in the tunnel. Following Nyx to stop her, the group was caught in a tremor causing a cave-in and were trapped. However a new passage had opened in one of the tunnel walls, leading to a strange temple. At first the group encountered gray ooze twice, who fell from the ceiling and damaged Mog’burz’ weapon with acid.

Then they saw a strange sight before them: A skeleton (not animated) was seemingly floating in the air, along with a dark metal mace and some coins. Trying to take the mace with a mage hand spell led to the hand encountering an invisible wall, and a telepathic message of “Hey! Stop tickling me!”. Thus the group encountered Glabbagool, a gelatinous cube who had become sentient. Glabbagool was friendly and spat out the mace and coins on request, and told them about the rest of the temple. He warned them about traps full of black puddings in corridors leading to a closed door, of which he didn’t know what was behind it. The group went there with Glabbagool escorting them (and dispatching quickly some more gray oozes). They discovered a new cave which Glabbagool said hadn’t been there before, from which water flowed into the temple.

They went to the closed door, which turned out to be easy to open for creatures possessing hands to use the door knob. Behind was an octagonal room with 7 niches, of which 4 contained strange, formless sculptures, and a big fountain in the middle containing dark water. Touching the statues unfroze them, and they turned out to be another 4 gray oozes. After killing those they discovered some treasure under the water of the fountain. Having explored the whole temple, there was no apparent way out. And from the new cave water kept rushing in, the whole complex being below the surface level of the darklake. They explored the cave and saw that the water was coming from fissures in the ceiling. With the help of a Magic Missile (and creative rule interpretation by me as DM) they made the ceiling collapse, at which point they could swim to the surface of the lake and back to their boat.

There a nasty surprise awaited them. Buppido was found unconscious with a big bump on the back of his head, while Shuushar was dead, with his entrails arranged in a bizarre fashion around him, like by some sort of ritual. Woken up, Buppido couldn’t provide an explanation of what had happened, and the group found no traces of the killer. So the next day they said goodbye to Glabbagool (who wouldn’t fit on the boat) and rowed off.

Two days later they were passing by another island, when they heard a soft feminine voice inside their heads pleading for help. Somebody on the island needed rescue! On the island they found a big green door, which turned out to be of heavy marble, covered in corroded bronze, and with an axis in the middle. Pushing with much force on the side opened the door (we were joking that Mog’burz, who failed several door opening rolls in this dungeon, kept pushing in the middle of the door). Behind the door was a Nethril tomb from millennia ago (basically Ancient Egyptian in design), the Lost Tomb of Khaem.

In the tomb the group came upon a room with a stone sarcophagus. That turned out to be a false tomb with a trap cursing them to have disadvantage on all attack rolls and saving throws. As they were all affected by the curse, this turned the dungeon into a far more deadly place. And there was another strange feature to the tomb: Any spell cast resulted in a wild magic surge, giving a random result form the wild magic table of the chaos sorcerer. That turned out to be an insidious feature when in the next room the group was attacked by four specters, who were resistant to non-magical damage. It turned downright deadly in the final (hidden) room, where the group encountered Brysis of Khaem, an evil sorceress who was now a wraith. Mog’burz the eldritch knight countered an attack of Brysis with a shield spell, but that triggered everybody’s favorite wild magic surge result: a fireball.

They barely survived this encounter, but then found the source of the voice: an intelligent sword called Dawnbringer. They also found a bunch of other nice treasures, like a necklace of fireballs, and over 2,000 gold pieces worth of valuables. Danger has its rewards in Dungeons & Dragons. At that point we ended the session, the group having reached level 5.

Death of a Legislator: Dan Johnson’s Suicide and the GOP’s Far-Right Drift

Before facing abuse allegations and taking his own life, Kentucky Rep. Dan Johnson was becoming a far-right leader.

While the national press is focused on how the #MeToo movement is affecting Congress, state and city governments have also experienced a surge of women accusing politicians of sexual harassment and abuse. Kentucky has been especially shaken by this, with at least four Republican state legislators and a Democratic city councilman being publicly accused of sexual harassment in the past couple of months.

But the story took a particularly gruesome twist after a fifth statehouse Republican, Kentucky state Rep. Dan Johnson, took his own life last Wednesday. That came shortly after the Kentucky Center for Investigative Reporting published a blockbuster exposé of Johnson’s disturbing history, including allegations that he molested a 17-year-old member of his Heart of Fire congregation, where he was a minister.

This entire sordid affair is already being twisted by conservative pundits to discredit the #MeToo movement. Kathleen Parker asks whether Johnson had “a right to some sort of dispassionate hearing,” ignoring the fact that the alleged victim went to the police, to no avail. A deeper look into Johnson’s career, however, suggests a different moral: It illustrates the growing problem of radical fundamentalists quietly infiltrating local state governments.

Roy Moore may have lost his chance to be the U.S. senator from Alabama — if by an agonizingly narrow margin. But dozens of mini-Moores are flourishing in state legislatures, where they are pushing the Republican Party ever further to the right and quietly working to dismantle women’s access to reproductive health care.

While the molestation allegations against Johnson have been the focus, R.G. Dunlop and Jacob Ryan of the Kentucky Center for Investigative Reporting also uncovered a dizzying amount of disturbing information about Johnson that should have been disqualifying long before those accusations came to light. The man was a con artist who told lies about his own biography so outrageous they hardly needed fact-checking. He had repeatedly been in trouble with the law for running an illegal bar out of his church, and over several apparent arson incidents. During the 2016 election, he posted racist memes portraying Barack and Michelle Obama as monkeys and won his election over Democrat Linda Belcher anyway.

“I think that led him to believe there were lots of things he could do, yet his folks would still support him,” Marcie Crim, executive director of the Kentucky Health Justice Network, told Salon. 

When his Republicans colleagues came under fire in November for sexual harassment allegations, Johnson took to Facebook to offer a defense, writing, “I’m totally against anything that has to do with abuse, however there are no perfect people.”

Crim was not surprised by this, saying that both sexual abuse and anti-choice beliefs stem from an unwillingness to “believe that women’s bodies belong to the women.” Essentially, she said, right-wing men want to touch women “whenever they want, and they also want to tell them what kind of health care they can and can’t get access to.”

Johnson wasn’t just anti-abortion, which is par for the course in Republican politics. He was a radical anti-choice fanatic. He appears to have been closely working with Operation Save America, an extremist Christian organization that pushes what it calls the “doctrine of the lesser magistrates,” which holds that Christians shouldn’t obey laws that they believe conflict with God’s laws. It’s the same theory used to bolster the case of Kim Davis, the Kentucky clerk who refused to sign marriage licenses for same-sex couples. Now it is being used to argue that federal laws protecting abortion rights need not be respected.

In October, Johnson pre-filed a piece of planned legislation called the Abolition of Abortion Act, which would have criminalized abortion in Kentucky both for doctors and patients. The proposed bill explicitly instructed the state to enforce this ban “regardless of any contrary or conflicting state or federal laws, administrative regulations, executive orders, or judicial decisions.” It appears Johnson was trying to put this “lesser magistrate” notion into law.

In an emotional video released before Johnson committed suicide — but after the allegations of sexual misconduct had emerged — Rusty Thomas, the head of Operation Save America, blamed the “sexual revolution” for sexual harassment, saying, “God is lifting the skirt of our national whoredoms.”

Thomas went on to defend both Johnson and Roy Moore, saying that the “establishment will spend millions of dollars to dig up dirt” and that it has “successfully weaponized sex as a political weapon” to publicly shame those “seeking to stand for righteousness and for godliness in our nation.”

Thomas, it’s worth noting, spends his days organizing protests outside abortion clinics that are meant to publicly shame women seeking abortion. Johnson himself showed up at one of these protests and was photographed by clinic escorts.

In the video, Thomas calls Johnson “the congressman we have been working with to introduce a bill of abolitions.” This comports with what Rewire reporter Jenn Stanley discovered while working on her audio documentary “Marching Toward Gilead.” She called Johnson to ask him about his anti-abortion bill, and he had Joseph Spurgeon, a pastor who works with Operation Save America, call her back within seconds. 

“I didn’t tell Dan Johnson that this was a story about Operation Save America,” Stanley told Salon. “So Joseph Spurgeon must be a guy he sends out to talk to reporters.” Spurgeon and Thomas have also said they tried to call and text Johnson to prevent him from committing suicide, to no avail. 

(Full disclosure: My partner was an executive producer on Stanley’s documentary.)

Operation Save America was the group that spent decades harassing Dr. George Tiller, an abortion provider in Wichita, Kansas, until a regular clinic protester murdered him in 2009. When another clinic opened in the place of Tiller’s, Thomas declared, “OSA has some unfinished kingdom business in Wichita, Kansas. Tiller’s mill was reopened.”

But the main focus of Operation Save America has been the last remaining abortion clinic in Kentucky, which has been subject to the illegal clinic blockades that the groupused in the ’90s but abandoned for many years — until now. The group has been open about its desire to make Kentucky the home of the radical anti-abortion movement, especially now that it believes Donald Trump’s presidency has eased the path for more militant tactics.

The relationship between Johnson and Kentucky Gov. Matt Bevin also shines some light onto the political dynamics that are allowing Republicans to chip away at abortion access in red states. As Crim argued, people like Johnson “would have been fringe characters two years ago, five years ago, but now they’re getting elected to office.” 

Once in, legislators like Johnson embrace extreme and blatantly illegal positions, such as an effort to reclassify abortion as murder. This makes politicians like Bevin, whose strategy is to use ginned-up regulations to bury abortion clinics under red tape, look moderate by comparison. But in reality, as Crim put it, “The fringe has become the mainstream.”

There’s only one abortion clinic left in Kentucky, because Planned Parenthood was unable to get hospital transfer agreements required by a recently-passed (and medically unnecessary) law blatantly intended to shut down as many clinics as possible. Planned Parenthood says it has evidence showing that Bevin used defunding threats to prevent hospitals from helping Planned Parenthood follow the law.

There is also reason to believe that Bevin’s true sympathies lie with extremists like Dan Johnson and Operation Save America. In February, Bevin held a meeting with the leaders of Operation Save America, who say they gave him the book “Doctrine of the Lesser Magistrates” by Matt Trewhella, a pastor who has argued that murdering abortion doctors is justified. The group’s leaders further claimed Bevin had praised the book, even as he demurred on the question of signing legislation to classify abortion as murder.

(Bevin’s office and Operation Save America both failed to return Salon’s requests for comment.)

Stanley and Crim both told Salon that this entire situation highlights how easy it is for radicalized right-wingers to get power in state legislatures and start pushing a state’s politics to the right.

“Most people just have no idea who their state representatives are. People don’t go up to vote for that,” Stanley said. That makes the state legislature fertile ground for extremists to build a power base. “When you think about the things that really affect people’s personal lives,” she continued, “it’s the laws that are passed by these state legislators.”

Johnson’s death has certainly rattled the far-right fundamentalists who supported him, but it doesn’t seem to be slowing down their efforts to push their absolutist agenda through the Kentucky legislature. Even before Johnson’s death, his supporters were writing off the sexual abuse allegations as a politicized lie created by the “establishment” and largely ignoring the multitude of alarming claims about Johnson’s long history of fabrications. The day after Johnson’s death, his widow, Rebecca Johnson, announced plans to run for his legislative seat. “These high-tech lynchings based on lies and half-truths can’t be allowed to win the day,” she declared.

“People like to say it’s the last, dying gasp of previous generations,” Crim said of the rise of the far right in state legislatures. “And maybe it is the last gasp — but it’s a big gasp. It’s a very powerful breath they’re taking.”

 

 

 

Related Stories

  • Republican Senators Are Making Out Like Bandits with Special Real-Estate Tax Break
  • Paul Krugman: The GOP Is Completely, Hopelessly Corrupt
  • Is Trump an ‘Aspiring Despot’ or a ‘Bumbling Showman’? Why Not Both?

Learn ABC of “A/B testing”

What is A/B Testing?

A/B Testing is one of the best way to compare two or more versions of an application or a web page.It enables you to determine which one of them performs better and can generate better conversion rates. You compare two web pages or applications by showing the two variants (let’s call them A and B) to similar visitors at the same time. The one that gives a better conversion rate, wins!

All websites on the web have a goal – a reason for them to exist

  • eCommerce websites want visitors buying products
  • SaaS web apps(Software as a service) want visitors signing up for a trial and converting to paid visitors
  • News and media websites want readers to click on ads or sign up for paid subscriptions

Every business website wants visitors converting from just visitors to something else. The rate at which a website is able to do this is its “conversion rate”. Measuring the performance of a variation (A or B) means measuring the rate at which it converts visitors to goal achievers.

Example

Let us assume that there is a web page and all the traffic is directed to this page. Now as a part of A/B Testing, you have made some minor changes like headlines, numbering, etc. on the same page and half of its traffic is directed to the modified version of this web page. Now you have version A and version B of the same web page and you can monitor the visitor’s actions using statistics and analysis to determine the version that yields a higher conversion rate.

A conversion rate is defined as the instance, when any visitor on your website performs a desired action. A/B Testing enables you to determine the best online marketing strategy for your business. Take a look at the following illustration. It shows that version A yields a conversion rate of 15% and version B yields a conversion rate of 22%.

Why Should You do A/B Test?

A/B testing allows you to make more out of your existing traffic. While the cost of acquiring paid traffic can be huge, the cost of increasing your conversions is minimal. To compare, a Small Business Plan  whose cost is equivalent to 5 to 10 Google Adwords clicks. The Return On Investment of A/B testing can be massive, as even small changes on a landing page or website can result in significant increases in leads generated, sales and revenue.

Traffic vs Conversion rate

What Can You Test?

Almost anything on your website that affects visitor behavior can be A/B tested.
webpage

  1. Headlines
  2. Sub headlines
  3. Paragraph Text
  4. Testimonials
  5. Call to Action text
  6. Call to Action Button
  7. Links
  8. Images
  9. Content near the fold
  10. Social proof
  11. Media mentions
  12. Awards and badges
Advanced tests can include pricing structures, sales promotions, free trial lengths, navigation and UX experiences, free or paid delivery, and more.

A/B Testing Process

The correct way to run an A/B testing experiment is to follow a scientific process. It includes the following steps:

Study your Website Data: Use a website analytics tool such as Google Analytics, and find the problem areas in your conversion funnel. For example, you can identify the pages with the highest bounce rate. Let’s say, your homepage has an unusually high bounce rate.

Observe User Behavior: Utilize visitor behavior analysis tools such as Heatmaps, Visitor Recordings, Form Analysis and On-page Surveys, and find what is stopping the visitors from converting. For example, “The CTA button is not prominent on the home page.”

Construct a Hypothesis: Per the insights from visitor behavior analysis tools, build a hypothesis aimed at increasing conversions. For example, “Increasing the size of the CTA button will make it more prominent and will increase conversions.”

Test your Hypothesis: Create a variation per your hypothesis, and A/B test it against the original page. For example, “A/B test your original home page against a version that has a larger CTA button.” Calculate the test duration with respect to the number of your monthly visitors, current conversion rate, and the expected change in the conversion rate.

Analyze Test Data and Draw Conclusions: Analyze the A/B test results, and see which variation delivered the highest conversions. If there is a clear winner among the variations, go ahead with its implementation. If the test remains inconclusive, go back to step number three and rework your hypothesis.

Report results to all concerned: Let others in Marketing, IT, and UI/UX know of the test results and the insights generated.

A/B Testing – Tools

There are various tools that can be used to generate hypothesis and to run the variations, these include:

  • Visual Website optimizer (VWO)
  • Google Content Experiments
  • Optimizely

All these tools are capable to run A/B Tests and to find the winner, but to perform post analysis these tools should be integrated with Google Analytics.

A/B Testing – Google Analytics

Google Analytics has two options for analyzing the data −

  • Universal Analytics
  • Classic Google Analytics

New Universal Analytics feature allow you to use 20 concurrent A/B Tests sending data to Google Analytics, however the Classic version allows only up to five.

Integrating Optimizely with Google Universal Analytics

To integrate Optimizely in to Universal Google Analytics, first select the ON button on its side panel. Then you must have an available Custom to populate with Optimizely experiment data. Then the tracking code must be placed at the bottom of the  head section of your pages. Google Analytics integration will not function properly unless the Optimizely snippet is above this Analytics snippet.

Configuration Steps

Optimizely uses Universal Google Analytics’ “Custom Dimensions” to tag your visitors with the experiments and variations to which they’ve been added. Configuring Optimizely to begin sending this information to Universal Analytics requires four steps −

Step 1

Add the following JavaScript code to your site wherever the Universal Analytics code exists after the ga(‘create’…) function fires and before the Universal Analytics ga(‘send’,’pageview’) function fires and the tracking call is made (see details in the next section) −

// Optimizely Universal Analytics Integration
window.optimizely = window.optimizely || [];
window.optimizely.push(“activateUniversalAnalytics”);

Step 2

In the Optimizely Editor, go to Options → Integrations then click on the Universal Analytics checkbox to enable the integration.

Step 3

Select the custom dimension you would like Optimizely to use. You have to ensure that the Custom Dimension should not be in use already by any other part of your site, or by another currently-running Optimizely experiment.

Step 4

Select a Custom Tracker if you are using a custom event tracker other than the default. This will change Optimizely’s integration call to use the custom tracker rather than the default.

Creating a Custom Report using Google Analytics

First step is to log into your Universal Analytics account and click the Customization tab at the top. You should see a Custom Reports list.

Next is to set up a Custom Report for each experiment that you have integrated Universal Analytics with.

  • Click on the New Custom Report → Enter the report title and add the metric groups you wish to view in the report.
  • To filter this report for only your Optimizely experiment, choose the Custom Dimension you set up previously as one of the Dimension Drilldowns.
  • Add this dimension in the Filters section and use a Regex match on the experiment ID for the experiment you want to filter.
  • Click on Save.

Want to learn Digital Marketing?

Is Your D&D Character Rare?

FiveThirtyEight, a website better known for predicting election results with statistical methods, a few weeks ago posted a statistical analysis of 5th edition Dungeons & Dragons characters regarding their choice of class and race combination. The result is boringly predictable: People overwhelmingly choose a race that gives at least a +1, if not a +2 bonus to their main class stat. As the race system has been designed to favor combinations that appear in the cast of Lord of the Rings, you get a lot more elven rangers than dwarven rangers, etc. However that is much less an attempt to emulate the classics but rather simple stat minmaxing.

I don’t know how these statistics look for other games or previous editions of Dungeons & Dragons. But I suspect that the “bounded accuracy” math of 5th edition D&D makes a +1 or +2 bonus a lot more important in this edition, because there aren’t so many other bonuses around. Unless you “roll lucky” (which is my way of saying cheat with your stats), an elf paladin is simply too bad stat-wise to be playable. That from a role-playing point of view a haughty elf might make a brilliant paladin if played well is of no importance. You choose your class, then take one of the few races that are good at that class, or default to humans who are good at everything.

As a role-playing challenge I would love to try a gnome barbarian. But as a 5th edition character with standard array or 27-point buy stats I’d end up with something not very fun to play in combat. The World of Warcraft system where your choice of race has only a very minor influence on your combat performance is more to my liking.

Treasury Secretary Steve Mnuchin Seriously Claims Ignorance of CDC Banned Words Report

“It’s the first time I’m hearing of that,” he said.

During a CNN appearance, U.S. Treasury Secretary Steve Mnuchin told host Jake Tapper that he knew nothing about the reported directive from President Donald Trump’s administration for the Centers for Disease Control and Prevention, along with other divisions under the Department of Health and Human Services, to stop using a list of banned words.

“Policy analysts at the Center for Disease Control as well as other divisions at the Department of Health and Human Services were given a list of forbidden words,” Tapper said to the treasury secretary. “Why would the Trump administration tell the CDC not to use a term like ‘science-based’?”

“It’s the first time I’m hearing of that,” Mnucnin said with a straight face. “I’m not aware of the directive at all.

The banned words list reported by the Washington Post includes “vulnerable,” “diversity,” “entitlement,” “transgender,” “fetus,” “evidence-based” and “science-based.” 

Watch Mnuchin claim total ignorance below.

 

Related Stories

  • Former Fox News Analyst Tamara Holder Shares Explicit Details of Sexual Assault
  • Sarah Palin’s Son Track Palin Was Arrested in Alaska on Domestic Violence Charges
  • Watch This Conservative Slam Trump for Ignoring Russia Interference Intel Because It ‘Hurts His Little Feelings’