We’re in the middle of a state election here in my state of South Australia. I am someone that wants to know what the different parties are saying so I tag their Facebook pages as ‘see first’ which makes Facebook show me anything they may post on my news feed at the top. As long as they post without paying Facebook money to promote the post I will see it. Here is why.
I got annoyed with YouTube quite some time ago where they started to force me to download ad content when watching video’s along with other sites that insisted I watch video content ad’s. The solution to that was install an ad blocker on my browser.
An ad blocker reads and modifies data as it comes into the browser and removes any code that displays ad’s (your promoted post). It simply does not appear on my news feed. It’s a tool that is great. Everyone I know runs it because they are as annoyed as I am with the intense level of advertising on the internet. There is a way for facebook and other sites to get through these ad blockers by subscribing to a set of standards that put limits on how much advertising is shown.
Why does Facebook show that the ad’s are getting through? Well they don’t really know. All they can know is they have sent the data. They could, like more and more media companies add code that senses if the ad’s are being shown otherwise display a message that tells the user to disable adblock before they show the content. That only works for a short time as the ad-block developers (or people with programming skills like me) sense that and block the code that checks.
Some stat’s on how prevalent this is comes from a report by PageFair https://pagefair.com/blog/2017/adblockreport/. I’ll be upfront, I don’t know if this report is accurate but my experience of the people I know and talk to all use adblock and if they don’t, ask me to help set it up for them. The key statistics I took from the report are (remember we’re now Feb 2018):
11% of the global internet population is blocking ads on the internet in Dec 2016
615M devices are blocking ads in Dec 2016
30% global growth YOY in adblock usage Dec 2015 to Dec 2016
The other challenge with Facebook is a normal post is shown on a few news feeds. It’s only spread if people react to it in some way, for example it may show on 20 news feeds. When a person clicks like (or one of the other interactions) or makes comment or shares, it is sent to another 5 news feeds. Note I don’t know the actual numbers, just know that’s how it works. So when you promote, that initial number is increased so your starting point is much higher, but it’s blocked by adblock.
Most adblock software will allow ads through if they meet specific criteria (https://acceptableads.com/en/) which it appears some are accepting but many are not so they spend money developing systems to sense if adblock is blocking their ads and refuse to show the page unless the user disables the ads. Some just ask the user which is not as bad. For large social media their success depends on popularity. With 74% of American’s saying they leave sites with adblock walls which I think is highly probable as most I talk to do the same would be disaster for the popularity of the social media site like facebook. The other way is to change and fit within what users have determined is acceptable level of advertising and register with the adblock companies. Adblock puts control back in the users hands where it should be.
Now in the interim the only way I can think of how to get the most out of social media advertising is to use a combination of paid and unpaid. If something is important, make sure you repeat the post with slight change in text, one you pay for the other you don’t.
This for me is an interesting area of the Internet, the battle between large corporate and the end user. We’re seeing the end user has significant control when it comes to advertising and it’s growing rapidly. I can just imagine the frustration that is inside the large web content companies on this topic as they know it’s going to impact on them. I think some of the larger companies that advertise with these content providers are catching on to the issue but many smaller ones are not aware they may be paying for something that is not being delivered.
In this exercise we’re going to create a simple application that uses the following controls:
Button
Text field
Checkbox
Radio button
Spinner
The spinner will select between two languages, English and Tagalog and update the user interface in real time.
When the button is pressed it will display a message in the selected language.
The screens will look like:
Android UI excersise – Tagalog
Android UI excersise – English
Below the send button will appear the message that has been sent when the Send button is pressed.
First, create the following project in Android Studio and configure as per below:
Application name:
Task Performance
Company domain:
Your domain name
Project location:
Path to your own folder
Set the minimum SDK to API 8: Android 2.2 (Froyo)
Create a blank activity with the following settings:
Activity name:
TaskPerfActivity
Layout name:
activity_task_perf
You can now update the relevant files in the project with the following and make sure you update the Tagalog translations in manifests\AndroidManifest.xml file.
The code:
The first file is the AndroidManifest.xml file. This one remains fairly standard as created.
Next we create the layout. You can do this in two ways, one using the visual editor and dropping the controls where you want them or copy/paste the following into the activity_ask_perf.xml file. If you do choose the first option, you will need to make sure you name the controls as per the file here so the rest of the application will work.
Now the fun begins. We create the code that actually makes things work. First step is to make sure all the imports are included. I’d probably suggest copying that section from the listing below first.
You will notice that the class is not quite the same as the default class that Android Studio created for you. This one extends Activity and it implements OnItemSelectedListener. This is part of the Spinner control.
package edu.sti.taskperformance;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
import java.lang.String;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
publicclass TaskPerfActivity extends Activity implements OnItemSelectedListener {
private String boyGirl = "";
private String language = "English";
private String result = "";
private String isBeautiful = "";
private String isUgly = "";
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_task_perf);
// Spinner element
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Spinner click listener
// spinner.setOnItemSelectedListener(this);
spinner.setOnItemSelectedListener(this);
// Spinner Drop down elements
List categories = new ArrayList();
categories.add("English");
categories.add("Tagalog");
// Creating adapter for spinner
ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, categories);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
@Override
publicvoid onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
String item = parent.getItemAtPosition(position).toString();
// first create references to the controls we want to change based on language selection
CheckBox cbxMagandaAko = (CheckBox)findViewById(R.id.cbxMagandaAko);
CheckBox cbxPangitAko = (CheckBox)findViewById(R.id.cbxPangitAko);
RadioButton radBoy = (RadioButton)findViewById(R.id.radBoy);
RadioButton radGirl = (RadioButton)findViewById(R.id.radGirl);
Button btnSend = (Button)findViewById(R.id.btnSend);
TextView lblFirstName = (TextView)findViewById(R.id.lblFirstName);
TextView lblLastName = (TextView)findViewById(R.id.lblLastName);
TextView lblEmail = (TextView)findViewById(R.id.lblEmail);
// Now we check to see if English selected and set labels to English
if (item == "English") {
cbxMagandaAko.setText("Beautiful");
cbxPangitAko.setText("Ugly");
radBoy.setText("Boy");
radGirl.setText("Girl");
btnSend.setText("SEND");
lblFirstName.setText("First Name");
lblLastName.setText("Last Name");
lblEmail.setText("Email");
language = "English";
}
else // if not English, must be Tagalog
{
cbxMagandaAko.setText("Magando ako");
cbxPangitAko.setText("Pangit ako");
radBoy.setText("Batang lalaki");
radGirl.setText("batang babae");
btnSend.setText("MAGPADALA");
lblFirstName.setText("Pangalan");
lblLastName.setText("Huling pangalan");
lblEmail.setText("Email");
language = "Tagalog";
}
// Showing selected spinner item
{
Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
}
publicvoid onNothingSelected(AdapterView<?> arg0) {
// Auto-generated method stub
}
publicvoid onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radBoy:
if (checked)
boyGirl = "boy";
break;
case R.id.radGirl:
if (checked)
boyGirl = "girl";
break;
}
}
publicvoid onSendButtonClicked(View view) {
// This will create the text to display at bottom of screen when the send button is clicked
// first need to create references to the controls so you can access the data
EditText txtFirstName = (EditText)findViewById(R.id.txtFirstName);
EditText txtLastName = (EditText)findViewById(R.id.txtLastName);
EditText txtEmail = (EditText)findViewById(R.id.txtEmail);
CheckBox cbxMagandaAko = (CheckBox)findViewById(R.id.cbxMagandaAko);
CheckBox cbxPangitAko = (CheckBox)findViewById(R.id.cbxPangitAko);
// See what check boxes are checked and set the variables
// now check what language is being used
if (language == "English") {
// get the value from the check box and update variables
if (cbxMagandaAko.isChecked())
isBeautiful = "is beautiful";
elseisBeautiful = "is not beautiful";
if (cbxPangitAko.isChecked())
isUgly = "is ugly";
elseisUgly = "is not ugly";
// create the string to display
result = "Sent message to " + txtEmail.getText() + " that " + txtFirstName.getText();
result = result + " " + txtLastName.getText() + " is a ";
result = result + boyGirl + " and " + isBeautiful + " and " + isUgly;
}
else // the language is not English so must be Tagalog
{
// TODO You should check the strings (green text) to make sure they are correct Tagalog
// get the value from the check box and update variables
if (cbxMagandaAko.isChecked())
isBeautiful = "ay maganda";
elseisBeautiful = "hindi maganda";
if (cbxPangitAko.isChecked())
isUgly = "ay pangit";
elseisUgly = "hindi pangit";
// create the string to display
result = "Ipinadala mensahe sa " + txtEmail.getText() + " na " + txtFirstName.getText();
result = result + " " + txtLastName.getText() + " ay isang ";
result = result + boyGirl + " at " + isBeautiful + " at " + isUgly;
}
// create reference for the text field at bottom used to display result
TextView txtResult = (TextView)findViewById(R.id.txtResult);
// display the string at bottom part of the screen
txtResult.setText(result.toString());
}
}
Anyone who thinks English is English when travelling is in for a surprise. Not only is there spelling differences, there are whole word differences and phrase differences. Here is a sample of some of the differences:
What does dolphin poop look like? What a great question you have asked a very good question. There is not a lot of info out there on google to tell me, but one thing is for sure, Brittany Furlan should know what dolphin poop looks like because she googled it when she had to much time on her hands 🙂 She does suggest “It’s cloudy… Diarrhea-ish”.
Anyway, just wanted to share that bit of useless info with you and have a little fun as I (right now) have to much time on my hands too 🙂
2014 was probably the most turbulent year of my life. The following photo’s are highlights of that year. Click on image to expand.
Laguna De Bay as seen from the roof of Rio Building, Azure Resedences, ParanaqueMy darling PattyRecent road trip along the Ocean Road in Victoria I stopped for breakfast at this picnic ground in Lorne. It’s the perfect place for a stop, beautiful scenery, sounds, and smells. Spectacular 🙂The Great Ocean Tourist drive passes across the top of the clifs at Elliston on the West Coast of Eyre Peninsula in South Australia. A number of sculptures are spread across these cliffs.Located on the Ayre Penninsula, South Australia, this beautiful bay is a haven for boaties, fisherman and other water lovers. The bay has almost no waves from the Southern Ocean leaving a glass like surface.An alley way in Port Adelaide, South Australia. Port Adelaide is one of the early parts of Adelaide with a lot of factories built in the 1800’s that still stand. Most are converted now to apartments and offices. This photo was a bit of a challenge because of the high contrast between light and dark.Often referred to as Don Dunstan’s Balls, they come and go from time to time from the Rundle Mall in Adelaide.Two young buskers in Rundle Mall on a nice Friday afternoon in October entertaining the shoppers. They take it in turns to give a consistent show.Semaphore, South Australia is a metropolitan beach north west of Adelaide city. Some of the sunsets we are fortunate to get are quite spectacular.
Stare at the cross between the two changing faces. What should happen is the features of the faces merge if you are at the right distance from the screen.
Hackers are getting smarter. They have learnt that most people will have one password that does it all. So once they get it from one place, it can be put into the automated robots to try it on every other site on the internet. Imagine if it’s your banking password as well as your Facebook password.
This article is not going to guarantee that you will never get hacked, but it will provide some idea’s to increase your protection from being hacked.
Rule 1: Your email password is the most important and should not be used for anything else. Reason: When this is hacked, all the thief needs to do is use the forgot password link on all other sites and they get your password for what ever you may be registered for.
How to come up with an easy to remember but hard to crack password. You use a phrase instead of a word. So think about where you went on holidays, or where your partner was born. Lets use the holidays one for the example. “Love Sydney” is the phrase that came to my mind. It really could be anything. You want to write it with correct case as well. So capital L for Love and capital S for Sydney. That gets 2 of the often required things for passwords. Now the spaces in your password. Some systems don’t like them so probably better to replace them. Decide on what you are going to use as the space. It might be the hash or a comma. We’ll use a hash for the example, so now our pass phrase is “Love#Sydney”. So we’ve got upper case and lower case. We’ve got special characters. Now we just want some numbers. Easiest one there is where you have a L and a O change them for a 1 and 0 except for the first character (some systems don’t like to start with a number). “L0ve#Sydney”.
Passwords should be at least 8 characters. An 8 char password takes a little over 2hrs to brute force crack. 10 characters is over 2,000 hours. Out example password will take 50,000 hours.
Now a way to have a unique password for each web site and be able to remember easily.
Use your password as a base and select characters from the web address to add into your password. Here is a example:
web site facebook.com. We’ll use from the right, the 2,5,6 letters. Always do from the right as some domains are very short which will break this. Remeber it’s always the same for every web site. So facebook the letters are oko. So use our space character and add the 3 chars to the end. “L0ve#Sydney#oko”.
It’s like anything new. It will take a little while to get used to it.
Remember, your email password needs to be unique and strong. I would make it at least 12 characters and I’d use a mixture.
My question after reading the label of a packet of peanuts was; if it only contains TRACES of peanuts, what is the rest?
Yummy Snack Foods 500 gram salted peanutsPeanuts may contain traces of peanuts. So what else do they contain?
Are peanuts nuts?
Well it looks like peanuts are not officially nuts. Reading Wikipedia about them they are classified as Arachis hypogaea, a legume crop grown mainly for its edible seeds. As a legume, the peanut belongs to the botanical family Fabaceae; this is also known as Leguminosae, and commonly known as the bean, or pea, family. So I suppose the statement is partially relevant, may contain traces of … other nuts.
The Wikipedia article does go onto to say further down:
Some people (0.6% of the United States population) report that they experience allergic reactions to peanut exposure; symptoms are specifically severe for this nut, and can range from watery eyes to anaphylactic shock, which is generally fatal if untreated. Eating a small amount of peanut can cause a reaction. Because of their widespread use in prepared and packaged foods, the avoidance of peanuts can be difficult. The reading of ingredients and warnings on product packaging is necessary to avoid this allergen.