GeistHaus
log in · sign up

https://blogger.com/feeds/1458274389096873945/posts/default

atom
25 posts
Polling state
Status active
Last polled May 19, 2026 04:15 UTC
Next poll May 20, 2026 06:54 UTC
Poll interval 86400s
ETag W/"80e0256c6ee7ce6b8df2cf082f0ff5c55139fad007fe1150246f177d4071fc94"
Last-Modified Mon, 18 May 2026 21:30:44 GMT

Posts

New Year Noise Maker App
2024Auld Lang Syneblowoutscountdownentetainmentfunnew yearnew year songnew year'snew yearsnew years evenoise makerparty blowoutsparty hornparty noisesparty spinner
Show full content
 Unveiling the All-New New Year Noise Maker App: Elevate Your New Year Celebrations!


  

 New Year Noise Maker  

 Free Version:  New Year Noise Maker Countdown 

As we bid farewell to the old and usher in the new, what better way to welcome the upcoming year than with a blast of joyous sounds and vibrant celebrations? Introducing the latest version of our beloved app - "New Year Noise Maker" - designed to elevate your New Year's festivities to a whole new level! Available for iPhones at app store.
Countdown to JoyThe app kicks off the excitement with a visually stunning countdown timer, tracking the seconds, minutes, hours, and days left until the stroke of midnight. The countdown, set against a festive backdrop, builds anticipation as you prepare to embrace the possibilities of a brand-new year.Dazzling Fireworks DisplayWhen the clock strikes midnight, get ready for a dazzling display of virtual fireworks that light up your screen in a symphony of colors. The perfect digital spectacle to ring in the New Year with style!Dive into the 5 Vibrant Segments1. Horn HarmonyTap the screen to immerse yourself in the jubilant world of party horns! With each tap, experience the excitement as three unique party horn sounds fill the air, ensuring an instant party vibe at your fingertips.2. Spinner Spectacle

Enter the Spinner segment and tap away to enjoy the dynamic sounds of party spinners. Each tap creates a whirlwind of cheerful spinner sounds, adding a playful dimension to your celebration.

3. Blowout BonanzaFeel the energy with the Blowout segment! Tap the screen to unleash three distinct party blowout sounds, creating an atmosphere of joy and exuberance that will have everyone in high spirits.4. Mix Madness

Looking for the ultimate party mix? The Mix segment has you covered! With a single tap, experience a 30-second burst of all the party sounds combined, creating a lively symphony that will keep the party spirit alive.

5. Auld Lang Syne SerenadePay homage to tradition with the Auld Lang Syne segment. Tap the screen to immerse yourself in the timeless melody of this classic New Year's song, creating a heartfelt and nostalgic moment.Bringing People Together"New Year Noise Maker" isn't just an app; it's a tool for bringing people together in celebration. Whether you're with friends, family, or enjoying a quiet moment of reflection, this app adds an extra layer of joy to your New Year's experience.ConclusionAs we usher in a new chapter, let the "New Year Noise Maker" app be your companion in creating unforgettable memories. Download now and make your New Year's celebration one to remember! Cheers to new beginnings and a year filled with joy, laughter, and endless possibilities!
tag:blogger.com,1999:blog-1458274389096873945.post-6211245884854902674
Extensions
Problem Solving With Python: Program 6
break statementsdata entrydata validationinput functionPythonpython3softwareuser promptwhile loop
Show full content

The problem statement:

We are tasked with prompting a user to enter a specific type of value, validating the value and print a message appropriate to the value provided. The following are a set of requirements for this task:

  1. Prompt the user to only enter a non-negative integer. For example, the following are examples of non-negative integers. 0, 1, 2, 3, 4, ...
  2. If the user successfully enters a non-negative integer:
    1. Display a success message
    2. Terminate the program.
  3. If the user fails to enter a non-negative integer then repeat the program from step one.

 The following is the expected approximate output of program 6 when an incorrect value type is provided:

Please enter a non-negative integer >> hello
Error: 'hello' is not a non-negative integer.
Please enter a non-negative integer >>


The following is the expected approximate output of program 6 when a correct value type is provided:

Please enter a non-negative integer >> 22
Success: '22' is a non-negative integer.
Goodbye!

The Solution:

def request_a_positive_integer_from_user():
    prompt_message = "Please enter a non-negative integer >> "
    while True:
        user_value = input(prompt_message)
        if user_value.isdigit():
            success_message = f"Success: '{user_value}' is a non-negative integer."
            print(success_message)
            print("Goodbye!")
            break
        else:
            error_message = f"Error: '{user_value}' is not a non-negative integer."
            print(error_message)


def request_a_positive_integer_from_user_alternate():
    prompt_message = "Please enter a non-negative integer >> "
    require_input_value = True
    while require_input_value:
        user_value = input(prompt_message)
        if user_value.isdigit():
            success_message = f"Success: '{user_value}' is a non-negative integer."
            print(success_message)
            print("Goodbye!")
            require_input_value = False
        else:
            error_message = f"Error: '{user_value}' is not a non-negative integer."
            print(error_message)


if __name__ == '__main__':
    request_a_positive_integer_from_user()
    # request_a_positive_integer_from_user_alternate()
In the previous example we saw how to use a while loop to compute powers of two less than 1,000. This solution will also use a while loop in order to satisfy the requirement (requirement 3) that the user be repeatedly prompted to enter a non-negative integer in the event that a different type of value is entered. We accomplish this by using a while loop with a static or fixed conditional statement of True. Recall that a while loop will not terminate until its conditional statement evaluates to False. Since we did not use a variable in the while loop's conditional statement we have no way to programmatically signal to the while loop to terminate. Instead we use a break statement to perform the while loop termination.

What is a break statement?
A break statement is used to signal to the Python interpreter to terminate the current loop; it can also be used with a for loop. We could have instead used an additional variable to signal to the loop to terminate (instead of signaling to the Python interpreter to terminate). The use of the break statement allowed us to use one less variable thus making the solution a little bit more concise. See the alternate solution, request_a_positive_integer_from_user_alternate(), that utilizes a variable instead of a break statement.

When to use a break statement vs a variable?
The choice is really yours... For a simple solution as this one the break statement suffices. But if the logic in the while loop were more involved and required significantly more lines then we would have opted for a more descriptive approach so that the code is easier to read and follow the logic flow.

How do we prompt the user for a value?

The Python language has a built in function called input(...). When this function is invoked (or called) the execution of our solution is paused at this line (or point) of invocation. The function displays to the user our custom message and waits for the user to either press the Enter key or input a value followed by the press of the Enter key. Control is given back to our solution once the user presses the Enter and our solution logic continues to execute. At this point we are required to validate the user input and take appropriate action.

How do we validate the user input?
Given a string, Python has a builtin function that can tell us if the entire string is a sequence of characters that can be converted to a non-negative integer; True is returned if this possible else False is returned by the isdigit() function.

Are you having any issues running or understanding the program? Please, add a comment explaining where you are stuck or where the tutorial is not clear so we can improve it.

tag:blogger.com,1999:blog-1458274389096873945.post-5675790171549931100
Extensions
Problem Solving With Python: Program 5
arithmetic operatorscompound assignment operatorsPythonpython3softwarewhile loop
Show full content

The problem statement:

We are tasked with displaying all the powers of 2 less than 1,000 along with a message describing the output.

The following is the expected approximate output of program 5:

  • 1
  • 2
  • 4
  • 8
  • 16
  • 32
  • 64
  • 128
  • 156
  • 512
  • These are all the powers of 2 less than 1000


The Solution:

def powers_of_two_less_than_one_thousand():
    power = 1
    while power < 1000:
        print(power)
        power *= 2
    print("These are all the powers of 2 less than 1000")


def equivalent_solution():

    power = 1
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    power = power * 2
    print(power)
    print("These are all the powers of 2 less than 1000")


if __name__ == '__main__':
    powers_of_two_less_than_one_thousand()

In previous examples we saw how to use a for loop to write concise solutions that allowed us to reuse code that is written in the body of the loop. Our solution to the stated problem will also use a loop to reuse code, but it will not be a for loop because we are not interested in iterating over a list of predefined items. Instead, we use a while loop.

What is a while loop? 

A while loop allows us to continue processing code that is within the body of the loop until a condition is met or satisfied. The looping condition for our while loop is that the variable named power is less than the value of 1000. If this condition ever fails then the while loop is terminated.

How does a while loop work? 

The body of the loop is executed until the condition becomes false. The condition that is defined is evaluated for a boolean value of True or False at the beginning of each loop. The loop terminates once the evaluation of our conditional "sees" a value of False, else the looping continues. This implies that it is possible to program a while loop that never terminates and therefore runs forever. This condition is known as an infinite loop and is usually the result of a bug in our code or reasoning. We can create create the condition of an infinite loop by forgetting to multiply by 2 on each iteration of the loop.

Unraveling the while loop. 

If you are having difficulties understanding the code in this or any while loop then it is sometimes helpful to unravel the loop. We can gain greater visibility in the looping code by examining an equivalent solution that does not use any looping mechanism. That is, solve the solution in its entirety, or partially if the result is long, by not reusing code inside a loop. For example, the solution given with a while loop is equivalent to the code found in the equivalent_solution() function, (remember that power *= 2 is shorthand for power = power * 2).

Page with links to the entire series can be found here

Are you having any issues running or understanding the program? Please, add a comment explaining where you are stuck or where the tutorial is not clear so we can improve it.

tag:blogger.com,1999:blog-1458274389096873945.post-5407598272896940271
Extensions
Problem Solving With Python: Program 4
arithmetic operatorscompound assignment operatorsPythonpython3software
Show full content

The problem statement:

Program 3 introduced an operator that increments the value of a variable by a desired amount, namely, the += operator. Recall that the use of this operator allowed us to replace this expression variable = variable + 1 with the following concise expression variable += 1. Because this operator first computes the sum of the existing variable value with the desired constant value (e.g. 1) and then assigns the sum to the same variable this operator is called a compound assignment operator. This is not the only compound assignment operator available in python that can be used to write concise code.

Given the following Python program, the task is to refactor the code to make it more concise with the use of compound assignment operators where applicable.

Given program:

def given_code():
    variable_1 = 10
    variable_2 = 10
    variable_3 = 10
    variable_4 = 10
    variable_5 = 10
    variable_6 = 10
    variable_7 = 10

    variable_1 = variable_1 + 3
    variable_2 = variable_2 - 3
    variable_3 = variable_3 * 3
    variable_4 = variable_4 ** 3
    variable_5 = variable_5 / 3
    variable_6 = variable_6 // 3
    variable_7 = variable_7 % 3

    print("Before Compound Operation Use:")
    for variable_i in [variable_1, variable_2, variable_3, variable_4, variable_5, variable_6, variable_7]:
        print("    Variable:", variable_i)


The following is the expected approximate output of program 4:

Before Compound Operations:
  • Variable: 13
  • Variable: 7
  • Variable: 30
  • Variable: 3.3333333333333335
  • Variable: 3
  • Variable: 1
After Compound Operations:
  • Variable: 13
  • Variable: 7
  • Variable: 30
  • Variable: 1000
  • Variable: 3.3333333333333335
  • Variable: 3


The Solution:

def refactored_code():
    variable_1 = 10
    variable_2 = 10
    variable_3 = 10
    variable_4 = 10
    variable_5 = 10
    variable_6 = 10
    variable_7 = 10

    variable_1 += 3
    variable_2 -= 3
    variable_3 *= 3
    variable_4 **= 3
    variable_5 /= 3
    variable_6 //= 3
    variable_7 %= 3

    print("After Compound Operation Use:")
    for variable_i in [variable_1, variable_2, variable_3, variable_4, variable_5, variable_6]:
        print("    Variable:", variable_i)


def program_4():
    given_code()
    refactored_code()


if __name__ == '__main__':
    program_4()


Arithmetic Operators:

  • + is used for addition.
  • - is used for subtraction.
  • * is used for multiplication.
  • ** is used for exponentiation. E.g.,  2**5 = 32 is read as 2 raised to the power of 5 or 2*2*2*2*2 = 32.
  • / is used for division. E.g., 1/2 = 0.5
  • // is used for floor division. E.g., if 8/3 = 2.666... then 8//3 = 2. I.e., the decimal point (.) and everything to the right of it is dropped.
  • % is used for computing the remainder of a division operation. E.g., 8%3 = 2.


Page with links to the entire series can be found here

Are you having any issues running or understanding the program? Please, add a comment explaining where you are stuck or where the tutorial is not clear so we can improve it.

tag:blogger.com,1999:blog-1458274389096873945.post-5502983715766411193
Extensions
Problem Solving With Python: Program 3
if-else structured programmingincrement operatorlistmoduloodd or even numbersPythonpython3reverse listslicesoftware
Show full content

 The problem statement: 

Program 2 showed us how to iterate over a list of numbers and print them to the screen. For our next program we will also need to iterate over a list of number but this time we need to count the two different types of numbers in the list as we iterate over them.

The task is to write a Python program that displays the counts of odd and even numbers in a list of positive integers (i.e. whole numbers). In order for us to begin to think about a solution we first need to know the exact definition of odd and even numbers.

Definitions: 

  • An odd number when divided by two will always have a remainder in addition to a quotient. Some examples of odd numbers in decimal form follow. 1/2 = 0.5, 3/2 = 1.5, 5/2 = 2.5, etc. (Note that 5/2 = 2.5, is read as five divided by 2 is equal to 2.5).
  • An even number is the opposite of an odd number. That is, an even number divided by 2 has a quotient but no remainder, does not leave a remainder. Some examples of an even number follow. 0/2 = 0, 2/2 = 1, 4/2 = 2, 6/2 = 3, etc. Note how no decimal is needed since the result of the division does not have a remainder.

The following is the expected approximate output of program 3. Given the list, [0, 4, 9, 5, 11, 15, 7]:

  • Even count = 2
  • Odd count = 5

The Solution: 

def count_odd_and_even_numbers_first_attempt():
    even_count = 0
    odd_count = 0

    for number in [0, 4, 9, 5, 11, 15, 7]:

        result = number / 2
        if int(result) == result:
            '''Even'''
            even_count = even_count + 1
        else:
            '''Odd'''
            odd_count = odd_count + 1

    print("Even count =", even_count)
    print("Odd count =", odd_count)


def count_odd_and_even_numbers_second_attempt():
    even_count = 0
    odd_count = 0

    for number in [0, 4, 9, 5, 11, 15, 7]:

        result = number % 2
        if result == 0:
            '''Even'''
            even_count += 1
        else:
            '''Odd'''
            odd_count += 1

    print("Even count =", even_count)
    print("Odd count =", odd_count)


def count_odd_and_even_numbers_third_attempt():
    even_count, odd_count = 0, 0

    for number in [0, 4, 9, 5, 11, 15, 7]:
        if number % 2 == 0:
            '''Even'''
            even_count += 1
        else:
            '''Odd'''
            odd_count += 1

    print("Even count =", even_count)
    print("Odd count =", odd_count)


def program_3():
    count_odd_and_even_numbers_first_attempt()
    print("--END--")
    count_odd_and_even_numbers_second_attempt()
    print("--END--")
    count_odd_and_even_numbers_third_attempt()
    print("--END--")


if __name__ == '__main__':
    program_3()

In previous problems our solutions required the use of a for loop, the mathematical operator of multiplication, and the use of the print function. This time the calculations are a little more complex. The additional complexity comes from the fact that we need to consider two possible conditions when looking at a number when determining if a number falls into the odd or even category of numbers. Once we know what category the number is in then we increment one of two variable that holds the running count of the category we detected.

We present three solutions. Each solution is intended to showcase different approaches and programing techniques. Let's start with the function count_odd_and_even_numbers_second_attempt().

The Counting Variables:  

The first thing that we do is define two variables, even_count and odd_count. They are initialized to zero, indicating we have yet to see an odd or even number since we have not iterated over the list of numbers. As we iterate over the numbers using a for loop, these two variables will hold a current count of odd and even numbers.

Is it Odd or Even? 

By the definition of an odd or even number given above we know that an odd number divided by 2 results in a value that has a remainder, otherwise it is an even number. So the first order of business is to divided the number provided by the for loop by 2 and capture the result as follow. result = number / 2. This expression is our first logic inside the for loop. Suppose the number given inside the for loop is 3. We know that 3 divided by 2 is 1.5. From this result we can see with our eyes and determine with our brain that 3 is an odd number because when we examine the value of 1.5 we observe that there is a value other than zero past the decimal point. But how do we program our thought process into a machine? The short answer is that we use built-in operations or functions that come shipped with the Python programming language. One such built-in function that we can use is the int(...) function. This function will convert inputs to the function into integers only if the input is convertible. If your input is a name like Steve then the int(...) will not be able to do the conversion. In fact, in this particular instance the entire program will crash. But it will work if our input is a number with a decimal value. For example, if our input is 1.0 then it will convert it to the whole value of 1. In a similar fashion, if our input is 2.7 then this function will convert it to the whole value of 2; dropping or truncating the decimal point and any value past the decimal point. Given the int(...) function we can compare its conversion output to its input. For example, suppose we need to determine if the number 3 is even or odd. We first perform the following computation. result = 3 / 2. The result variable will be assigned the value of 1.5 in this expression. We then give the init function the result variable which holds a value of 1.5 as follow. conversion = int(result). If we inspect the conversion variable with the print function we will see that it has a value of 1. Lastly, we compare the conversion value (1) to the result value (1.5). From the comparison we determine that the value three is odd because the conversion value of 1 does not equal the result value of 1.5.

How do we Compare Numbers? 

We use the built-in equal operator to compare two values. The symbols or characters used to represent the equal operator is ==. The equal operator works by first comparing two values and then replaces the entire expression with a boolean value. A boolean value has one of two possible states: True or False. Here are two examples of an equal operator (==) that is evaluated (or converted) to the boolean value of True and False.

  • 2.0 == 2.0 is evaluated to True
  • 3.6 == 3.2 is evaluated to False


How do we Make Decisions using Booleans? 

Inside the for loop we need to decide if the current number delivered by the loop is an odd or even number. Our program will need to branch or split into two separate logic flows such that if a given number is even we only increment the even_count variable by a value of 1. If, however, the given number is odd then we only increment the odd_count variable by a value of 1.

This branching (or splitting) of our program into two separate logic flows that depends on the given number being even or odd condition can be accomplished with the use of the concept of an if: ... else: ... block of code. This block of code works as follow. If the if statement of this block of code is followed by a boolean value of True then only the code indented immediately under the if statement is executed; the code indented under the else statement is not executed (or ignored). But if the if statement of this block of code is followed by a boolean value of False then only the code indented immediately under the else statement is executed; the code indented under the if statement is not executed (or ignored). Recall that an equal operator converts an expression like 2.0 == 2.0 to a boolean value of True or False. This equal operator together with the branching feature of the if: ... else: ... block of code can be used to solve the problem statement as shown by the code above. All that needs to be done to complete the solution is to increment the appropriate count variable.

How does the Incrementing of a Variable Work? 

The expression even_count = even_count + 1, for example, works as follow. Suppose event_count is initially assigned a value of 5. The assignment operator (=) first evaluates the expression on its right side; event_count + 1 is replaced with the value of 6 because 5 + 1 is equal to this value. Then the assignment operator assigns this new value to the variable, thus overwriting or replacing the old value of 5 with the new value of 6 as follow. event_count = 6

The Modulo Operator: 

The modulo operator, represented by the % symbol, is used just like the division operator but instead of getting the result in decimal form, 5 / 3 = 1.66 for example, the [modulo] operator gives us only the remainder of a division operation, 5 % 3 = 2 for example.

Revisiting the definition of an odd and even number we see that an odd number will always have a remainder whereas an even number will not have a remainder. We can combine this definition with the modulo (%) operator to check if a number is odd or even in a more concise way. Before we can use the modulo operator we make the observation that any even number modulo 2 will always compute a remainder of zero whereas an odd number modulo 2 gives us 1. Examples of even numbers follow. 0 % 2 = 0, 2 % 2 = 0, 4 % 2 = 0, 6 % 2 = 0, etc. Examples of odd numbers follow. 1 % 2 = 1, 3 % 2 = 1, 5 % 2 = 1, 7 % 2 = 1, 9 % 2 = 1, etc.

To use the % operator we can either assign the result (or evaluation) of the operator to a variable as shown in the count_odd_and_even_numbers_second_attempt() function like so, result = number % 2, and then check the value in an if statement or allow for the evaluation of the % operator to occur directly in the if statement without the need to use an additional variable as shown in the count_odd_and_even_numbers_third_attempt() function, like so if number % 2 == 0:.

The Increment Operator: 

Another useful operator that allows us to increment a variable is +=. As we saw in our first attempt function we incremented a variable with the following code. some_variable = some_variable + 1. We can write the equivalent of this expression instead as some_variable += 1. An actual use of this operator can be seen in the second attempt function.

Multiple Assignments: 

Note that in our third attempt function we declared and assigned initialization values of zero to both count variables but we did so on a single line. This is equivalent to declaring and assigning the count variables on separate lines. Both approaches are valid and you should pick the option that makes the most sense and is most visually pleasing to you.

Note that the third attempt function is less verbose than our first attempt and arguably more readable. It's also possible to make further refinements but we will explore other options in future tutorials.

Page with links to the entire series can be found here

Are you having any issues running or understanding the program? Please, add a comment explaining where you are stuck or where the tutorial is not clear so we can improve it.

tag:blogger.com,1999:blog-1458274389096873945.post-8544474095771115171
Extensions
Problem Solving With Python: Program 2
listPythonpython3reverse listslicesoftware
Show full content

The Problem Statement:

Program 1 showed us how to iterate over a range of numbers with the use of a for loop and the range function. Suppose instead of a range of number we have a bunch of numbers that are contained in data structure called a list. Given a list of numbers, how do we iterate over it using a for loop?

The task, just like program 1, will be to write a Python program that displays a list of numbers from 4 to 9. Next to each number, the program will also display its square. But unlike program one where we used the range function to generate the range of numbers along with their square, we instead will use a list of number and iterate over it in three different ways.

The following is the expected approximate output of program 2. The output is repeated four times. Note that for the last example we will iterate over the number in reverse order:

    4 16
    5 25
    6 36
    7 49
    8 64
    9 81
    --END---
    4 16
    5 25
    6 36
    7 49
    8 64
    9 81
    --END---
    4 16
    5 25
    6 36
    7 49
    8 64
    9 81
    --END---
    9 81
    8 64
    7 49
    6 36
    5 25
    4 16
    --END---
    

The Solution:
    

def program_2():

    """LOOP 1"""
    for number in 4, 5, 6, 7, 8, 9:
        print(number, number * number)
    print("--END---")

    """LOOP 2"""
    for number in [4, 5, 6, 7, 8, 9]:
        print(number, number * number)
    print("--END---")

    """LOOP 3"""
    list_of_numbers = [4, 5, 6, 7, 8, 9]
    for number in list_of_numbers:
        print(number, number * number)
    print("--END---")

    """LOOP 4"""
    reverse_list_of_numbers = list_of_numbers[::-1]
    for number in reverse_list_of_numbers:
        print(number, number * number)
    print("--END---")


if __name__ == '__main__':
    program_2()



LOOP 1:

The range of values are from 4 to 9. The comma is used to separate the numbers so that the for ... in loop can distinguish between the unique numbers and consume them.

LOOP 2:

The list of values is explicitly defined by the usage of the opening and closing brackets. That is, the use of [ (opening bracket) and ] (closing bracket)

LOOP 3:

We can also assign the list of values to a variable called list_of_numbers and then use the variable in the for loop. The use of the variable will allow us to reuse the list of number in the subsequent, and last, for loop.

LOOP 4:

We reverse the list of numbers with the use of the so called slice operator. The slice operator is a shorthand notation that is used when we want it iterate over a list in a custom order. There are many ways to use the slice operator. We show only one example in this tutorial. The slice operator, [::-1], iterates over the list_of_number in a reverse order; returning a new list of numbers but in reverse order. This reverse list of numbers is captured by the reverse_list_of_numbers variables, which on the next line is used by the for loop. More on the slice operator in a future tutorial.

Page with links to the entire series can be found here

Are you having any issues running or understanding the program? Please, add a comment explaining where you are stuck or where the tutorial is not clear so we can improve it.

tag:blogger.com,1999:blog-1458274389096873945.post-7992498873127349344
Extensions
Problem Solving With Python: Program 1
for loopprogrammingPythonpython3software
Show full content

The problem statement:

Program 0 provided a solution to the problem statement but it is an inefficient way to salve it. The solution required us to perform repetitious work. For that problem we only had to display the numbers from 4 to 9 along with its square. Now imagine if the problem required us to display numbers, along with their square, from 4 to 79. Our solution with be unnecessarily long and take an unacceptable amount of time to complete.

The task, just like program 0, is to write a Python program that displays a list of numbers from 4 to 9. Next to each number, the program will also display its square. But unlike program zero we are expected to write program 1 using less code such that we minimize as much as possible the repetitious work.

The following is the expected approximate output of program 1:

    4 16
    5 25
    6 36
    7 49
    8 64
    9 81

The Solution:

def program_1():
    for number in range(4, 10):
        print(number, number * number)


if __name__ == '__main__':
    program_1()

Program 1 introduces a powerful programming feature called a for loop, that allowed us to write a concise solution to this problem.

Why is it called a for loop?
It's called this because for each member in a given list of items, the code indented under a for loop will be looped over and executed a number of times that is equal to the number of items in the given list. In our solution, the number of members in the given list of items is 10 - 4 = 6. Hence, our for loop executed our indented code, or nested code, exactly six times.

What is this range(..) function?
This range function creates an object that produces a sequence of integers from the start value of 4 to the stop value of 10 minus 1. That is, given the start value of 4 and the stop value of 10 the following sequence of integers is generated for the for loop to consume. 4, 5, 6, 7, 8 and 9. Note that the last value of 10 is not included in the sequence. If for example we wanted modify the code to start at 2 and end at 10 we would call the range function as follows. 11 - 2 = 9 for loops would be executed. 

range(2, 11)

 Page with links to the entire series can be found here

Are you having any issues running or understanding the program? Please, add a comment explaining where you are stuck or where the tutorial is not clear so we can improve it.

tag:blogger.com,1999:blog-1458274389096873945.post-3213340794932578888
Extensions
Problem Solving With Python: Program 0
programmingPythonpython3software
Show full content

The problem statement:

The task is to write a Python program that displays a list of numbers from 4 to 9. Next to each number, the program will also display its square. The square of a number is computed by multiplying it with itself like so. 4 x 4 = 16. Here, 16 is the square of 4.

The following is the expected approximate output of program 0:

    4 16
    5 25
    6 36
    7 49
    8 64
    9 81

The Solution:

def program_0():
    number = 4
    print(number, number * number)

    number = 5
    print(number, number * number)

    number = 6
    print(number, number * number)

    number = 7
    print(number, number * number)

    number = 8
    print(number, number * number)

    number = 9
    print(number, number * number)


if __name__ == '__main__':
    program_0()

How do I setup?

Follow the steps at this link to get started. When following the instructions assume that your machine does not already have Python installed so that you follow the instructions for downloading Python and making sure you install version 3.10. Ignore the details of the program in this example and instead focus on running the program in their example.

How do I run the program?

Running the code. If you followed the steps from the setup section than you should now how to create a file and run a Python program in Python. In your python project create a module (file) called program_0.py. Type the code in this file as shown and run the program. If your setup was successful then the Python interpreter should have run your program that generates some output within PyCharm.

What is a code interpreter?

The Python Interpreter is a program that reads and execute Python code. In order for the interpreter to be able to do its job, the program that we write must follow a set of rules. Code indentation is one of these rules. Violation if this or any programming rules will result in a program that does not execute or, even worse, a program that executes incorrectly.

What is a variable?

A variable is a name for a physical location within the computer that can reference either a single piece of data like a number or a character or data structures that can hold multiple pieces of data. In our program we define the variable number that holds a single number. As the name implies, a variable can be changes by our program as it is running. Our program first defines this variable number by assigning the number 4 to it. Our program then changes the value that our variable is referencing with the use of the assignment operator.

Why use a variable at all? 

Variables will allow us to write code that is concise, descriptive and reusable. The importance of these ideas will become more evident as we write programs with increasing complexity.

What is an assignment operator?

The assignment operator, denoted by =, is used to assign a value to variables. The following is a general form of an Assignment Statement.

variable_name = expression


What are Python Keywords? 

Python keywords are reserved words that should not be used except for its explicitly defined usage. The keywords used in this program are the following.

  1. def is used to define the start of a function.
  2. if is used to test a condition. In our case it is used to test if the variable __name__ is equal to the string __main__. If it is then the next indented lines are executed by the interpreter. In our case, our function, program_0() is executed, resulting in an output that is generated by our program.

       
What is a function? 

A function is a building block of a program; they are used to define code that is reusable and can be called anywhere within your program. Note how we first write our display logic in def program_0()... then further down we call it. Suppose we wanted to display the same values again immediately below the first program output. This can be accomplished in one of two ways. We can either modify our program to display the values twice or simply call our program immediately following the first call like so.

if __name__ == '__main__':
    program_0()
    program_0()

        
Hence, code reuse!

What is a built-in function?

Python is shipped with many standard built in functions. Our program the built-in print(...) function to display our values to the monitor. We can pass any number of variables to the print function with the use of a comma. The print function will display the variables passed to it by inserting a single space between them. The print function will also add to the end a newline character so that the display system will print the next values on a new line.

Page with links to the entire series can be found here

Are you having any issues running or understanding the program? Please, add a comment explaining where you are stuck or where the tutorial is not clear so we can improve it.

tag:blogger.com,1999:blog-1458274389096873945.post-9082115364327612105
Extensions
Obtain a Student Visa to Study in the USA (PART 2)
DHSDocuments to Obtain I-20 FormDS-160 FormEShipGlobalF-1 VisaForm I-20Schedule an appointment at the US EmbassyStudent VisaUS Embassy
Show full content

Part Two:

This is our second post in our obtaining a student visa to study in the USA series. Your can read our first post here.

What is the Form I-20 and How to Receive it?


All F-1 visa category (and M-1) students that study in the USA need a Form I-20, "Certificate of Eligibility for Nonimmigrant Student Status". Once accepted into a Student and Exchange Visitor Program, international students will receive a Form I-20 from their designated school official (DSO). This will be one of the important Forms that you as the student should keep that safe as you will need it throughout your international student life.
Process to Obtain an I-20:1:
  1. Receive an I-20 application from the School via Email.
  2. Complete, Print, and Sign the application. 
  3. Recent Bank Statements from you or your sponsors showing that you are financially able to pay your school tuition, fees and life expenses for the years you plan on attending the school.
  4. Send a copy of your valid passport along with completed and signed I-20 application, and financial documents to designated school office (DSO) at the school you will be attending via Email.
2:
  1. A payment called Term Tuition. Depending on the school you are attending, they will require you to pay the Term Tuition prior to receiving an I-20. It is usually one semester's tuition.
  2. None Refundable Visa application Fee ($160 as of today) that is required before you can make an appointment with the US Embassy.
  3. All payments can be paid by Credit, Debit card, Cash, Check, Money Order, or Wire Transfer.
3:Once I-20 application, supporting document, and payments are received, a designated school office (DSO) from the office of international student scholar service will email you a draft of your I-20. You must confirm that all the information is correct.
4:In order to receive the I-20 Form, you need to pay for the shipment of your I-20 using EShipGlobal(DHL or FedEx). Price depends on the country you live in. It will typically take about a week for you to receive the form.
Make an appointment at the US Embassy and Receive your F-1 Visa:Once you have received the Original I-20 Form:
  1. Pay the I-901 SEVIS Fee For your I-20 online using your Name, Date of Birth, and SEVIS number that you can find on your I-20.
  2. Complete the DS-160 online.
  3. Pay $160 Visa application Fee.
  4. Find the US Embassy near you.
  5. Schedule an appointment online.
  6. Attend your appointment.
  7. Pick up your Passport with the Visa.
Most Documents you will need for this appointment:
  1. Your Valid Passport.
  2. The Original I-20 that you received from the school.
  3. Copy of your completed DS-160 Form.
  4. Additional Supporting Documents.
You can find out about Supporting Documents from the US Embassy website that you wish to attend for your interview.
If the Visa is granted, you are welcome to arrive up to 30 days prior to date on your I-20. If the Visa is denied you will be refunded for the Term Tuition from the school, but the Visa Application fee is nonrefundable.
In the next post I will write about what to expect upon your arrival at the port of entry of USA, how to get a job on campus while on the F-1 Visa and much much more... So check back often!
Hope this post is helpful and if you have any question, please comment below.
tag:blogger.com,1999:blog-1458274389096873945.post-7825660089749929197
Extensions
Obtain a Student Visa to Study in the USA
F-1 VisaInternational StudentsStudent VisaStudy AbroadStudy in the United States
Show full content

Are you interested in knowing how to obtain a student visa in order to study at a university in the USA? If so then read about the steps I took in obtaining a student visa in order to study at the one of the largest public universities in America, The City University of New York (CUNY).

This post is a bit unusual in the sense that we typically don't cover non-tech related stuff on this blog but given my experience in this area I thought that this might benefit our readers. So, in this and upcoming posts I will walk you through the step by step process of applying for a student visa, entering into the USA, and give you some pointers on what to do during and after your studies are complete and you've earned a degree.

Part One:

Applying to Schools in the USA

The first step through this process is to apply to schools in the USA. According to the USCIS, you may enter in the F-1 or M-1 Visa category provided if you meet the following criteria:

  1. You must be enrolled in an "academic" educational program, a language-training program, or a vocational program.
  2. Your school must be approved by the Student and Exchange Visitors Program, Immigration and Customs Enforcement.
  3. You must be enrolled as a full-time student at the institution.
  4. You mist be proficient in English or be enrolled in courses leading to English proficiency.
  5.  You must have sufficient funds available for self-support during the entire proposed course of study.
  6. You must maintain a residence abroad which you hav no intention of giving up.
Below are the minimum requirements to applying to a school if you already have an Associate or Bachelor degree and you wish to continue your higher education level:

  1. TOEFL or IELTS score
  2. Translated Transcript in English if it is in your native language
  3. At least 2 Letter of Recommendations(from former professors or employers)
  4. Application Fee

Important: Because this process might take anywhere from half to one year before you are permitted to enter the country, don't miss the deadline to apply and always check your school's website for program deadline applications.

Some schools require you to have a GRE, and a personal statement. Note! Personal Statements may take a while to write, so give yourself plenty of time! Once you have the required documents ready, create an account on the school's website you wish to attend, and upload your documents.

In your application they will there is a part that they will ask you whether you need a Student Visa which you need to select that item in order for that school to calculate the processing time for Student Visa.

TOEFL Exam:

  1. Contact your school and ask them to provide you with their school code in order to be able to submit your TOEFL score.
  2. On your application on the ETS website, enter the provided school code.
  3. Take the TOEFL exam.
  4. ETS will send your score to the school directly, at no additional cost.
  5. If you haven't entered the school code and have already taken the exam, don't worry. Go to your account at ETS and ask them to send your score to the school you want. This will cost you.
  6. Taking the test needs to be done at least 3-4 months before you start your application for the school because it takes time to get the test results back from ETS.
It is the same scenario for taking and submitting your GRE score. Remember that the TOEFL score is valid for only 2 years, and GRE for 5 years. The schools won't accept applications with expired exams.
For Submitting the Recommendation Letters:
  1. Ask your prior professor or employer who knows you well, if they are willing to write you a recommendation letter.
  2. Get their information such as, Name, Address and Email.
  3. Enter their information on your application for the school that you are applying to as your letter of recommendation providers.
  4. Schools will typically email them regarding the letter with instructions on how to submit it online.
Ok, once you are done uploading documents, pay the application fee which is something around $125-$150 depending on the school. You are done. So, you should expect a wait time of a few months to get your result back.If you get accepted, the Student Advisor/DSO from international student office will contact you regarding your Student Visa. If not, you should contact them and let them know that you got accepted and what will be next. They are a big help.
Our second post in the series can be found here.
If you have any questions, please comment below. I would be happy to be a help.
tag:blogger.com,1999:blog-1458274389096873945.post-7103509152582126092
Extensions
How to Setup Angular CLI
Angular CLIAngular Hello WorldAngular SetupInstall Node.js
Show full content

Angular is one of the third top front-end frameworks in 2020. Angular is a TypeScript-based open-source web application framework led by the Angular Team at Google.

In this tutorial we are going to show you a step by step guide to setting up your environment for Angular development and a simple hello-world application.

Install Node.js

To install Angular on your local system, you need to have:

  •  Node.js installed in your machine
Go ahead and download the Node.js from Recommended For Most Users tab (I have downloaded macOS).






After you finish installing Node.js, open up your terminal and type:
  • node -v
You should be able to see the version of the Node.js that you have installed.
Install the Angular CLI
Open your terminal and type:
  • npm install -g @angular/cli
This will install the latest version of Angular for you. Again installing Angular CLI, in your terminal type:
  • ng --version
You should be able to see the version of the Angular CLI that installed.


If you want to install a different version of Angular, for instance I have Angular CLI 9, type:

  • npm install -g @angular/cli@9
Once you are done installing Angular, we will now create a workspace and initial application.

Create a workspace and initial application
To create a workspace from the terminal run the CLI command ng new and give it the name you like:
  • ng new hello-world
For example, the name of your application will be hello-world.
After that, you might be asked some questions like:

Angular Routing is for when you want to use Angular routes in a single-page application. If you want this to be setup for your application you should answer y(yes), but we don't need that at this stage. So just type N(No).
The next question is about the stylesheet:

Select CSS and hit Enter. It should take a while to initialize the application. 
Run the application
In the terminal go to your application(project) directory and type:
  • cd hello-world
  • ng serve 

The ng serve watches your files, and rebuilds the application as you make changes to those files.



Open your favorite browser and type http://localhost:4200/



If you can see this, Congratulations! You have successfully created your first project in Angular.

tag:blogger.com,1999:blog-1458274389096873945.post-609290207424736261
Extensions
Wikileaks Vault 7: CIA Tips for Git Workflow
hackingprogrammingtutorialsWikileaks
Show full content
Wikileaks has begun dumping a large number of files on the CIA's hacking tools. The dump is called Vault 7. It is a goldmine, not only for information about the CIA's activities, but also for information on things like how to set up a development environment or properly use Git in your everyday programming workflow. Here are a couple highlights from some cursory searches of the document dump:

CIA Git Tutorials

CIA Vim Tutorials

CIA Setting Up a Development Environment

tag:blogger.com,1999:blog-1458274389096873945.post-2476756896201753805
Extensions
Hide My IP Address: How to Browse a Website without Visiting It
anonymityGoogle hackssearch engines
Show full content
In this article, we'll provide a few tips and tricks on how to use a couple simple advanced web searches to browse a website without actually visiting the target site, effectively remaining invisible to the site's proprietors. Maybe the website is blocked on the computer you are using. Maybe the site seems somewhat sketchy and you want to check it out before you actually visit it. Maybe you want to read some content on the site, while depriving them of your own web traffic. Maybe you don't want the site's proprietors to know your IP address. Whatever the case may be, if you have access to Google, you may very well be able to see the content you are looking for without ever connecting to the site in question.

Intro For this article, we are going to use the website mediaite.com as our example target website. It has a good amount of content, and is structured in a way that will make our demonstration fairly clear. If we just do a simple Google search for the name of the site, mediaite, Google will return hits for the site itself, its Twitter page, a Wikipedia article, its Facebook page, references to it from other sites and so on.



This is not very useful for seeing what sorts of content are on mediaite.com. We are thus going to use an advanced search operator so that Google only returns results that are from mediate.com itself.

Advanced Operator: Google Site Search   Google allows for the use of so-called "advanced search operators" in its search bar. With these operators, you can easily filter the results of your searches to only return specific types of content. One such advanced search operator, the site search operator, only returns results from a specific website. To run a search that will only return results from our target site, we use the operator term, then a colon, then the full address of the site. So, in the present case, we would enter the following into the Google search bar: site:mediate.com


Now we are getting somewhere. You'll notice that Google now only returns page results that are from our target site itself. We can get an overview of tons of content from our target site just from browsing through these results, to see what pages from the target Google has already indexed.
Browsing a Website's Cached Pages  Okay, that's all well and good, but we want to actually read content on the site itself, not just get an overview of its various pages! Notice, in the image above, or in any Google search results, that next to the web address of the page, there is a little downward pointing triangle. This is a dropdown menu. Click on the triangle and the dropdown menu will pop up, with two options: Cached and Similar. 

If you click on the "Cached" link, this will take you directly to the most recent snapshot of that page that Google has indexed. Here is a screen grab of Google's cached version of Mediaite's "Contact Us" page:


Notice the web address of this page: webcache.googleusercontent.com/search?q=cache . . . We are not viewing the page on the target server itself! We are viewing a snapshot of that page on one of Google's servers. Now, Google's Cached pages are NOT necessarily a snapshot of what that page looks like right now. But a widget at the top of the Cached page will tell you exactly when this snapshot was created.  
Search a Site for Specific Cached Content Now that we know how to search only for results from a specific site, and read that site's content through Google's cached pages, we can do a site search for specific terms and then read Google's cached results for any of those pages. To do this, all we have to do is add our key term to the site search. Let's say, we wanted to search for articles on the CIA at Mediaite. It's pretty simple: site:mediaite.com CIA

Once you've found the content you're looking for in this way, all you have to do is click through to Google's cached page, and you are reading the desired content from your target site without ever visiting it!
Conclusion and Caveats With the help of Google's site search and cached pages, we can easily locate and browse content on a target website without ever visiting that site. This means the proprietors of that site have no way of knowing what our IP address is, or when we read their content, or even that we ever read it at all. But we do have a couple caveats here. Since we are using Google, Google's servers still have a record of our IP address, what we searched for, when we accessed the cached page and so on. But the goal here was to hide this information from the target site, not from the search engine. Secondly, it is possible that the Cached page you are reading does not reflect the current content of the page. For example, if a website publishes a page, and then Google created a cached version of the page, but then the target website updates their page, the data in the Google cache will be stale and out of date, until the cache is updated again. That's why it is important to look at the timestamp on the cached page, to get a sense of how old or out of date the content may be. And finally, it is possible that Google has not indexed or has no cached page of the specific content you are looking for. If that is the case, then you are out of luck trying to use this method of quasi-anonymous web browsing. 
tag:blogger.com,1999:blog-1458274389096873945.post-272436410283362057
Extensions
County Government Computer System Taken Over by Ransomware
ransomware
Show full content
From The Newark Advocate:
A computer virus discovered late Tuesday night caused Licking County government to shut down its computers and phone systems indefinitely to prevent the virus from spreading, protect data and preserve evidence. The FBI and Bureau of Criminal Investigation have been notified. 
The virus, accompanied by a financial demand, is labeled ransomware, which has hit several local governments in Ohio and was the subject of a warning from the state auditor last summer.
tag:blogger.com,1999:blog-1458274389096873945.post-1045100536461142339
Extensions
The United States Pirate Party
Show full content
Did you know there is a United States Pirate Party?

The United States Pirate Party (USPP) was founded in 2006 by Brent Allison and Alex English. Our platform is aligned with the International Pirate Movement. 
We support and work toward reformation of intellectual property (IP) laws, true governmental transparency, and protection of privacy and civil liberties. 
We strive for evidence-based policies and egalitarianism, while working against corporate personhood and welfare. We believe that people, not corporations, come first. 
We would like to encourage you to learn more about our name and values here. The Pirate National Committee (PNC), formed in 2012, tracks and assists the growth and development of newly-formed state parties across the nation. As of January 2013, there are 8 member-state parties of the PNC. 
The PNC includes delegates from member-state parties across the nation, and is the governing body of the United States Pirate Party.  Meetings of the PNC are open to the general public and are held biweekly on Wednesdays at 9PM over IRC.
tag:blogger.com,1999:blog-1458274389096873945.post-8987688508146738675
Extensions
How to Make Sense of the Wikileaks Clinton Campaign Email Document Dump and Controversy
hoaxinformation securitypoliticsWikileaks
Show full content
It is becoming increasingly difficult to distinguish fact from fiction in the coverage of Wikileaks' ongoing publication of internal emails from Hillary Clinton's presidential campaign, known as the Podesta emails. There are internet hoaxsters pushing fake emails that are not contained in the actual published files. There are junk reports from prominent newsy websites that are based on obvious misreadings of the files in question. There is Clinton campaign and Democratic party spin seeking to distract from the content of the published emails. There is Trump campaign and Republican party spin exaggerating the content and import of what has been revealed by the leaked documents. And so on. In this article, we'll provide a bit of context on the leak itself, cover some examples of how it is being exploited by hoaxsters, how it is helping to reveal the incompetence of newsy sources of information, and how it is playing out within the context of the presidential campaign itself. We'll conclude with some tips on how to sift through the bullshit.


The Leaks This article focuses specifically on coverage of the Podesta emails. But it is important to point out the context in which these files have been published. The first thing to note is that there is not just one leak that has resulted in the publication of Democrats' internal documents. Back in June, a hacker or hacker group known as Guccifer 2.0 began releasing a large set of internal files from the Democratic National Committee.

It is speculated that Guccifer 2.0 is a front for Russian hackers, if not a state-sponsored Russian cyberwar group, mostly on the basis of circumstantial evidence. The Guccifer 2.0 documents can be found here. Emails obtained by Guccifer 2.0 were, it appears, also obtained and published by Wikileaks. The Wikileaks DNC email database can be found at the link.

(The name 'Guccifer 2.0' itself is an obvious allusion to a Romanian hacker who called himself Guccifer and released documents on prominent Republican and Democratic party officials in 2013. Guccifer was eventually tracked down and jailed in 2014.)

Then in early October, Wikileaks began publishing a large set of files from the email account of John Podesta, a long-time Democratic party insider, and current chairman of Hillary Clinton's presidential campaign. This set of documents is known as The Podesta Emails.

The Podesta Emails are not directly related to the larger Hillary Clinton email controversy, which resulted from her use of a private email server during her time as Secretary of State. Emails from that controversy were made public by congressional inquiries and Freedom of Information Act requests. Many, if not most, of those emails have also been published by Wikileaks in its Hillary Clinton Email Archive.

Disinformation Shortly after Wikileaks began publishing the Podesta email document dump, reports quickly began circulating online purporting to have found "smoking gun" evidence of one sort or another in the files. One of the most prominent of these was a report alleging that Clinton had called Democratic voters a "bucket of losers," in a clear allusion to her comments calling Trump supporters a "basket of deplorables." This claim can be demonstrated to be clearly false with a simple search for the term against the Wikileaks documents themselves. As a testament to their gullibility and refusal to do even basic research, numerous websites still have articles online breathlessly reporting the false claims as if they were true, without correction.

Misinformation Misinformation campaigns based on the Podesta emails have been equally as successful as the disinformation campaigns waged by the hoaxsters. One widely circulated report claimed that the Podesta emails contained solid evidence of racist comments made by Hillary Clinton. "Racist Hillary DUMPS on African Americans, Calls Them Professional Never-Do-Wells," read one headline at a self-declared right wing news site. That sounds pretty serious! Moreover, the author of the article proclaims that the email confirmed everything she already believed! Yet, as with the hoaxsters, this claim is easily debunked with a minimum of effort. A search for the offending terms among the Wikileaks documents does indeed turn up an email using the offending terms. But anyone who is neither an idiot nor a knave should be able to quickly debunk the claim by reading the email's header, which reveals that it is not from inside the Clinton campaign. It was in fact sent from orca100@upcmail.nl, and addressed to a wide array of media outlets and political insiders. In other words, the purveyors of the "smoking gun" claim are either morons who are incapable of reading an email, or they are just click-bait artists trying to earn a few pennies off bombastic headlines.

Trump Gets Trolled  Earlier this week, another story that was similarly based on an obvious faulty reading of an email from the Podesta files was published by the Russian state media outlet Sputnik News. The author(s) of the article misread an email in the Podesta files, and did not realize that it was just a forward, and not a personal email. This article was picked up by the Trump campaign, and the Republican candidate read from it at a campaign rally later that day. The embarrassing incident was reported widely in the media when the offending article was debunked later in the day.

Clinton Campaign Spin The Clinton campaign, for its part, has clearly been put off balance by the publication of the hacked documents, judging from the contradictory statements they have made in its wake. Podesta first claimed that the Wikileaks documents were in fact fake. "They've put out documents that are purported to be from my account," he stated on a Sunday morning talk show. Then later on Twitter, he seemed to walk back this claim, asserting that fake documents had been inserted into the file dump, according to Politico. Finally, by Wednesday, Podesta admitted that his account had in fact been compromised and the the FBI announced that it was investigating the hack. Podesta has now gone on the attack himself, fingering Russia as the source of the hack and claiming coordination with the Trump campaign: "Russian interference in this election and their apparent attempt to influence it on behalf of Mr. Trump . . . should be of utmost concern to all Americans," said Podesta, according to CBS News.

This line of attack builds upon existing campaign narratives that have been articulated by Hillary Clinton herself. As she stated at the second presidential debate: "Putin and the Russian government are directing the attacks, the hacking on American accounts to influence our election. And Wikileaks is part of that, as are other sites . . . we don't even know if it's accurate information . . . believe me, they're not doing it to get me elected. They're doing it to try to influence the election for Donald Trump."

But Podesta appears to have bigger problems than the Russians. The Clinton campaign chairman's Twitter account was apparently compromised by someone from 4chan's /pol/ board earlier today. Politico reports:"Podesta's Twitter account sent out a strange tweet reading: "I've switched teams. Vote Trump 2015.Hi pol." The tweet was quickly deleted, but the Clinton campaign confirmed the account had been hacked."

For an in-depth analysis of the Democratic response to the hacks and leaks, see Glenn Greenwald's article at The Intercept: "In the Democratic Echo Chamber, Inconvenient Truths Are Recast as Putin Plots."

Conclusion We live in a new information environment. Barack Obama was hailed as the first president of the social media age. The next president may be the first to inhabit an age of generalized, asymmetrical, information warfare. The Wikileaks Podesta emails file dump has completely muddied the waters in an already dirty presidential campaign. Widely read political news sources have been humiliated by transparent hoaxes. Others have had their shoddy reporting exposed for all to see. One major presidential campaign has been humiliated by spouting faulty Russian state news reports, while the other is getting pwned by 4chan.

Asking yourself a couple simple questions can help dispose of all the bullshit that is tripping people up right and left. Where's the evidence? Where's the corroborating evidence? The great thing about Wikileaks is that any assertions made on the basis of its documents can be verified or debunked by simply searching its archives and reading the primary source materials in question.

For more, check out our previous post on how to spot a fake news article and identify a hoax news website.
tag:blogger.com,1999:blog-1458274389096873945.post-7599412484111212400
Extensions
How to Spot a News Hoax and Prove that Its Source Is Fake
hoaxmedia
Show full content
Image via Hoax Slayer We all know the internet is rife with falsehoods, misinformation and disinformation. And, sooner or later, we're all bound to be taken in by an internet hoax, whether it is a fake news article, a photoshopped image, an advertisement masquerading as legitimate content, or even a government-sponsored propaganda campaign. In this article we'll use a real-world example to take a look at some simple sleuthing strategies on how to spot a hoax news article and prove that its source is fake.




Perhaps the most simplest way to approach the question of how to spot a fake news article and source is with a real world example. We'll begin by laying out the context and content of a recent hoax article. Then we'll consider the question of why and how the hoax works, and discuss ways in which we can detect the hoax and even prove that it is from a fake news source.

Consider the following scenario. You are scrolling through a social media news feed, and you come across the following headline along with a link to an article shared by a friend you know pretty well: "Boston Police Officer Kills Black Man Over Marijuana Cigarette." You follow the link and skim the article:
On the heels of recent scandals involving police brutality among the African American community, Malik Edwards, a 36-year old African American man living in the Boston area was shot by police officers following a dispute regarding a marijuana cigarette. 
According to witnesses, Edwards was seen sitting on the porch of his girlfriend’s home located in Evanston, Massachusetts, a municipality about 10-miles outside of Boston when the incident occurred . . .  
This has been one of several incidents of unarmed African American’s losing their life at the hands of police officers reported in the media this month . . .  
Officer Wright has been placed on a paid administrative leave pending a full-investigation into the incident resulting in Edwards death. Chief of Police Bill Conner, apologized for the “unfortunate circumstance” during a press-conference.

Now, this is in fact a fake news article from a fake news source, which quickly becomes apparent after just a bit of scrutiny. Yet articles from hoax sites like this one can succeed in duping even intelligent people into believing they are legit. How does such a hoax work?

How and Why Does a News Hoax Work?
A hoax relies on generic markers of legitimacy. The fake news item is presented in a familiar format that looks like any standard source of its type. We all know the basic 'look and feel' of a news website. There are numerous standard web design templates that you can check out that exemplify this genre of web page. 
A hoax relies on normal gaps in everyday knowledge. The site above, for example, is called The Boston Tribune. That sounds like it could be the name of a major national newspaper or a local daily. There is no reason for someone who isn't a news junky or a local resident to possibly know what the names of a specific city's newspapers are. So most people are not going to know that there is no paper in Boston with that name.
A hoax conforms to expectations. The article above is well written. It reproduces the generic standards of a news report. The piece mimics the form of a news article and provides content couched in terms common to news sources. In other words, it presents you with what you expect from a news article. Given that most news articles are are written at an eighth grade reading level, this is not difficult to do. 
As an addendum to the previous point, hoaxes will also often try to piggyback on current news and social media trends. When there are a lot of stories about a specific topic in the news, it becomes easier for hoaxes to blend in with the crowd. And when these topics are also emotionally charged, a hoax article can more easily exploit the fact that those emotions can disable rational skepticism. 
Hoaxes also rely on the lack of attention to detail that is common in normal web surfing. Consider the differenes between the acts of browsing the internet, reading a novel and studying a textbook. Browsing is casual by definition and to some extent random, without any specific target or goal. Thus, even sloppy hoaxes can succeed in duping people because, when you are engaged in an activity that is not detail-oriented and which may even entail skipping over details altogether, peculiarities that would otherwise raise red flags do not register at a conscious level. 
Finally, hoaxes exploit people's trust. If one person is duped by a hoax article, for whatever reasons, and then shares that story on social media, that person's friends are more likely to fall for the hoax because they trust the person who is sharing the article. You are less likely to scrutinize something if you assume that someone you trust has already scrutinized it. 
Anatomy of a News Hoax and a Fake News Site
Let's take a closer look at the hoax article mentioned above as well as its source, and go through some simple ways to determine if it is suspect and then confirm this fact. Indeed, taking a closer look is the first thing to do when trying to determine if an article is fake.

Upon closer inspection, the article under consideration should raise some red flags even at first glance. First, the use of the phrase "Marijuana Cigarette" in the headline is itself suspect. The phrase is antiquated and seems out of place, though perhaps one might believe such a phrase may still be in use by the media or by government authorities. Secondly, the body of the article contains an extremely high level of detail, which should raise suspicions because in such cases initial reports are usually quite vague and details are filled in later, when they are filled in at all. Can you find other red flags in the body of the article itself?

For the sake of argument, let's assume the article does not explicitly arouse any suspicions, but still does not seem right somehow. What then? The first thing to do here is pretty obvious: confirm whether the story is legit by seeking out other news sources reporting on it. Pick out the most prominent names of individuals indentified in the story, as well as other characteristic markers such as the time and place, and conduct a basic search for news articles on the story, seeking confirmation from sources that you do in fact trust. In the case of the article above, since it was indeed a fake, there are no other news sources that corroborate the story.

With that we might already conclude that the article is a hoax, but what if the hoax is not completely made up, and merely provides a twist on a news story that is being reported by trustworthy sources? In that case, then the basic gist will be confirmed by other sources.

The next step in determining whether a story might be a hoax is to check out other stories from the same source. If a "newsy" site contains one hoax article, it will very likely contain others. And some of these might be much more obviously fake than the one you are considering. In the case of The Boston Tribune, this becomes clear pretty quickly. Just scanning the headlines from other articles at the site should immediately raise suspicions, such as: "Casey Anthony Opens Daycare Center."

If there are no obvious causes for suspicion from checking out other articles on the site (even The Boston Tribune hoax site has a number of articles that a reasonable person would not have cause to question on their face), the next step is to investigate the site's credentials and contact information. Any reputable news site will have a detailed masthead that identifies owners, departments, editors, reporters and provide contact information. Of course, new media outlets may not have such formally detailed information. But if a "newsy" site has no such information, that in itself should raise suspicion.

In the case of The Boston Tribune, the site provides a single email address under its contact info page. That address is: associatedmediainquires@gmail.com. The fact that this email address is not associated with the domain name of the site (ex. contacts@thebostontribune.com) should be further cause for concern for a suspicious reader. A legitimate outlet will go to the trouble of setting up email addresses under its own domain rather than use free services that can be created by anyone. But perhaps you are inclined to give a site the benefit of the doubt, maybe it is a startup shoestring operation, and has not set up its own email services.

So we then take the handle from the email address and plug that into a search engine. What results in the present case are a series of hits that do not go to thebostontribune.com but rather a different site called associatedmediacoverage.com. However, when you follow the link to the latter address you are re-directed back to The Boston Tribune page! This is quite interesting. The proprietors of the site are literally engaging in redirection here, if not outright misdirection. Plugging associatedmediacoverage into a search engine in turn brings up a wealth of articles from other sites reporting on hoaxes perpetrated by the outlet. What likely happened here was that associatedmediacoverage.com was the original site, and after a number of its hoaxes were found out, they changed its address to thebostontribune.com, so as to get back under the radar.

With that, we have demonstrated beyond a shadow of a doubt that the original article under consideration is entirely false and that thebostontribune.com is indeed a fake news site. If you have another other tips or tricks for sniffing out a fake news article or site, let us know in the comments.

tag:blogger.com,1999:blog-1458274389096873945.post-7812144711708228996
Extensions
Space Station Sunday: Fire It Up!
International Space StationNASAspace
Show full content
Good morning / afternoon / evening (depending where you are on this fine planet), space fans! Here's what's been up lately in low-earth orbit!

Lookin' good, homeworld!
 The Northern Lights were so strong this week,
Reykjavik, Iceland turned off their streetlights to watch the whole show.
(Image courtesy NASA.gov.)

NASA Astronaut Kate Rubins, who recently became part of the first team to sequence DNA in space, took time this week to explore how solids in microgravity dissolve into liquids. As part of a study funded by the Eli Lilly corporation, this experiment could eventually help to improve the design of pharmaceuticals, allowing them to dissolve more effectively in the human body. She’s the Chuck Yeager of the blood-brain barrier!


She's so skilled, she's got the world at her feet.
Especially on spacewalks, like this one she co-conducted in September.
(Image courtesy NASA.gov.)

Speaking of melting things in space, a new fuel-burning study will soon be underway. The Group Combustion experiment, which is currently being set up by JAXA astronaut Takuya Onishi, will monitor droplets of decane (a fuel component) as they are set aflame on thin-fiber lattice points. 

Since microgravity blocks convection, the conditions will be more amenable to studying the variance of flame and droplet positions, as well as their temperature distribution. This will help to better understand the nature of combustion in space (don’t worry, they test everything in a multi-purpose payload rack designed for these things…no extra shooting stars will appear in the night sky anytime soon.)



Fire in space does strange things...time to get some more science on that.
(Image courtesy spaceflight101.)

Newly-minted ISS commander Anatoly Ivanishin studied how charged particles behave while held in a magnetic trap in microgravity. This could impact the development of future photovoltaic cells used in space and totally has nothing to do with Russia working on solar-powered electromagnetic space gulags. Probably.

Ivanishin also studied how to assess and report back to Earth instances of natural and man-made disasters as witnessed from the orbital office, seeing as how we’re probably slated for a whole lot more of these issues thanks to the way we treat the planet and each other. Get it together, humanity! Not all of us are going to be lucky enough to expatriate to Mars!


Fortunately this is just a volcanic eruption,
but with the way we humans have been acting lately,
who knows what will follow.
(Image courtesy discovermagazine.com.)

In the meantime, the ISS residents will be able to analyze underlying disaster-affected areas of Earth using the Photospectral system (PSS) science hardware, which uses sensors to assess the reflected radiation spectrum of the afflicted area. This will ultimately not only help to deduce the depth of disasters, but also to forecast where they might naturally occur next.


Some disasters are actually visible from space with the naked eye.
(Image courtesy bbc.com.)

If you want to space out whenever you feel like it, be sure to check out the ISS livestream cameras! In the meantime, here's some select space-based shots of Earth for your enjoyment.



Over the Strait of Gibraltar.



Ciao, Italy!


Egypt...ancient aliens perusing the pyramids not included.
That's all for this week, space fans! We'll see you soon...watch this space!


A majestic moonrise...sweet dreams, spacefarers!
(Image courtesy NASA.gov.)





tag:blogger.com,1999:blog-1458274389096873945.post-2953350194799661734
Extensions
Space Station Sunday: Soyuz Sails Home
International Space StationNASAspace
Show full content
Good afternoon, space fans!  It’s been another week of excellence from the orbital office!  Here’s what was up…


Welcome home Jeff, Anatoly, and Oleg!
(Image courtesy NASA.gov.)
This week, NASA astronaut Jeff Williams and cosmonauts Alexey Ovchinin and Oleg Skripochka swooped down from the heavens back into the grasp of gravity.  On Tuesday, after a 4-hour ride home from the ISS, they landed safely in Kazahkstan after 172 days in space.  Williams, the former ISS commander,  has completed one space shuttle missions and three station missions, attaining 534 cumulative days in space – the record for an American astronaut.


Through the fire:  the returning crew's Soyuz spacecraft reenters the atmosphere.
(Image courtesy NASA.gov.)

Before leaving the station, Williams examined the BEAM (Bigelow Expandable Activities Module) for air and surface samples.  The expandable module was added to the station in April, and creates an inflatable extra "room" for the crew.  The samples indicated that all was well in the new digs, and it will be reassessed in coming months by the impending new crew.


They practiced by inflating their space suits.
(Image courtesy NASA.gov.)
The crew members of the upcoming Expedition 49-50 are due to launch for the ISS on September 23rd.  Shane Kimbrough, Sergey Ryzhikov and Andrey Borisenko are currently in Kazahkstan completing pre-launch checks.  The crew will take a 2-day ride on the Soyuz MS-02 spacecraft after launching from the Baikonur cosmodrome.  Their mission is scheduled to last until February 27th, 2017.
L-R, Kimbrough, Ryzikov, and Borisenko prepare for liftoff.
(Image courtesy NASA.gov.)
Meanwhile, back way-topside, science and maintenance continued apace on the station.  NASA astronaut Kate Rubins continued her DNA sequencing work, while JAXA astronaut Takuya Onishi cleaned ventilation fans and measured air flow.  Cosmonaut Anatoly Ivanishin gathered data for the Pilot-T experiment, which explores how crew members adapt to the stresses of long-term spaceflight.

We'll miss the imagery from Commander Jeff Williams, but he signed off beautifully!



That's all for this week, space fans.  We'll see you next Sunday with all of the above from all of them above!  Watch this space!


"I will certainly miss this view! But it’s time to return home to the planet
and I do so with a tremendous sense of gratitude toward my crewmates,
 the ground teams, supporting friends around the globe, and my family."
-ISS Commander Jeff Williams.
Thanks for your service, Commander!
tag:blogger.com,1999:blog-1458274389096873945.post-6637842033724901612
Extensions
Space Station Sunday: Three Hurricanes And A Spacewalk
International Space StationNASAspace
Show full content

Good evening, space fans!  What a week for working offshore of the world!  Here's what was up...

Sometimes the Earth acts up:
Hurricanes Lester, Madeline, and Gaston
breeze over seas.
(Image courtesy NASA.gov.)

On Thursday, Commander Jeff Williams and NASA astronaut Kate Rubins spent 6 hours and 48 minutes conducting an E.V.A. (extravehicular activity...a.k.a. spacewalk.)  It was the pair's second spacewalk in as many weeks, and allowed them to not only finish their intended tasks, but also a few "get-ahead" jobs.  A backup thermal control radiator was retracted, bolts on a solar array were tightened, and two new HD cameras were installed to keep track of aliens incoming spacecraft and exciting visuals of Earth.  It was the 195th spacewalk conducted from the I.S.S.


Commander Williams installs a docking adapter
 during his previous spacewalk on 8/19.
He's got mad street cred, in space.
(Image courtesy NASA.gov.)
While the spacewalk remained tranquil, a series of hurricanes squalled down below.  Hurricane Lester in the Pacific (moving at 125 miles an hour), Hurricane Madeline (130 m.p.h.), and Hurricane Gaston in the Atlantic (100 m.p.h.) were all wreaking havoc on the waters of Earth.  All toll, the three hurricanes had no impact on the station, but certainly looked cool from space.





Seriously, good get on installing the new camera.
(Image courtesy NASA.gov.)
Rubins, who is also a doctor, made history in space this week after successful operating a  biomolecule sequencing device aboard the station.  This was the first attempt at sequencing DNA in orbit, and could later prove useful for diagnosing diseases or identifying microbes aboard the station.  For longer-duration missions, this could prove useful when far from Earth, and the sequencer could even be helpful in determining the nature of other DNA-based life forms should we run across any while outside our cozy little home planet.

The cosmonauts also kept busy with science this week, examining issues like how deeply humans can feel pain on long-duration spaceflights, how the digestive system adapts to microgravity life, and how stress can affect different astronauts while on missions.


"Also, it looks kind of scary as night falls."
-some official space science report, probably.
(Image courtesy Jeff Williams / NASA.gov.
Williams, Alexey Ovchinin and Oleg Skripochka will be headed home on Tuesday, with Williams currently holding the record for most accrued time spent in space by an American.  We'll miss you, Commander, and especially your excellent imagery!  Let's catch a few more snaps before Commander Williams floats back down to Earth...


Perito Moreno glacier, Argentina.
Ahmar Mountains, Ethiopia.

A "sand wave" in the Bahamas.

That's all for this week, space fans!  We'll see you next Sunday with even more excellence from orbit!  Watch this space!


"Need a mental escape from the summer heat?
Try these frozen volcanoes of Kamchatka."
-Commander Jeff Williams
tag:blogger.com,1999:blog-1458274389096873945.post-856143622608893095
Extensions
Space Station Sunday Standby
Show full content
Good afternoon, space fans!  We've swung a little outside the usual orbit today, but will be back later on this evening (or possibly early tomorrow, depending on your Earthling location) with all of this week's stories from space!  Standby for the science...watch this space!
tag:blogger.com,1999:blog-1458274389096873945.post-628118704598964359
Extensions
Space Station Sunday: National Treasures
International Space StationNASAspace
Show full content
Good afternoon space fans!  It's been another wonderful week for our friends whipping around above the world.  Here's what was up!


The SpaceX Dragon heads back to the realm of mortals.
(Image courtesy phys.org.)

Commander Jeff Williams set a record for most accumulated time in space by an American, surpassing even the famed One-Year Crew member Scott Kelly.  As of August 21, Williams had served a total 520 days in orbit. Williams had previously served as a shuttle crew member on STS-101 in 2000, as well two previous tours on the station, in 2006 and 2009.  When he returns to Earth this September, he will have acccured 534 total days hauling around in the heavens.


Congratulations, Commander!
(Image courtesy NASA.gov.)
SpaceX Dragon returned to Earth on Friday, stocked with some 3,000 thousand of pounds of cargo and science experiments.  It landed 326 miles off the coast of Baja, California, as part of the 9th commercial cargo mission contracted with NASA.  It will be transported to MacGregor, Texas for processing, after offloading some materials in Los Angeles.


Astronauts Kate Rubins and Commander Jeff Williams
watch the Dragon fly home.
(Image courtesy NASA..gov.)
Experiments included the heart cells study, a study on astronauts' immune systems, a study of liquid crystals in microgravity, and a group of tomato seeds that had been flown to space and will be planted on Earth to examine the differences between them and seeds that had always been bound by gravity.

NASA gave a shout-out to the 100th anniversary of the American National Parks system, and included some images that are a little different from what you'd see on your family vacation!


The Grand Canyon, looking particularly grand.
(Image courtesy NASA.gov.)
And, since Commander Williams has spent so much time in space, he's got a great eye for the lovely nuances of our planet!  Take it away, Commander!


Turkey!

Surat, India!

Mississippi Delta!

That's all for this week, space fans!  We'll see you next Sunday with more excellence from orbit!


Redwood National Park, California.
Those giant redwoods don't look so big from up here!
(Image courtesy NASA.gov.)
tag:blogger.com,1999:blog-1458274389096873945.post-7001753758509896048
Extensions
Sounds Like Victory: New Ultrasonic Brain Surgery Heals Tremors Sans Cracking Skulls
healthinventionmedical technology
Show full content
It sounds like something out of the future, but it's actually in operational trials for human beings right now:  a new type of surgery that uses ultrasonic sound waves to target specific neurons for eradication, thus healing certain brain malfunctions non-invasively...


This is a "song" that can heal certain brain anomalies,
if it gets stuck in your head properly.
(Image courtesy itnonline.com.)

According to CBC.ca, a team at Sunnybrook Health Sciences in Toronto, Canada, is using this new technology to treat patients who suffer from "essential tremors", a debilitating disease that threatens the quality of life dramatically in whom it afflicts.  Essential tremors, while not life-threatening, cause spasms that make victims spasm in a manner that could stop them from doing tasks as simple as holding a glass or writing their name.

The pre-op signature of Maureen, one of the patients in the study.
(Image courtesy cbc.ca.)
Forty patients have been selected for the clinical trial.  The process involves the afflicted patients undergoing an "MRI-guided focused ultrasound" wherein the focus of the ultrasound targets the specific troublesome neurons in the brain's thalamus that are responsible for the tremors.  While in an MRI machine, the doctors can "see" the affected areas, and use pulses of ultrasonic sound to break up the neurons desired.

Sunnybrook neurosurgeon Dr. Nir Lipsman extolled, "This is a game changer...It really changes the way we think about surgical treatments for tremor. No scalpel needed. No drill needed."

In Dr. Lipsman's initial study of 76 patients, 47% saw improvement within 3 months of treatment, with 40% reporting marked  improvements within the year.  Side effects only included some gait disturbance and numbness.  The procedure takes about four hours.
Maureen's signature, post-operation.
She was reported to have leapt from her wheelchair and
danced an Irish jig with joy at the cure.
(Image courtesy cbc.ca.)
This take on technology could feasibly rewrite the book for the methodology behind a variety of surgeries.  Dr. Kullervo Hynynen, director of physical sciences at Sunnybrook Research Institute and part of the technique's development team, states the ultrasonic surgery "will open up a new era that will revolutionize the way brain diseases will be treated, eventually benefitting millions of patients." 
Good soundwaves...is there anything they can't do?


tag:blogger.com,1999:blog-1458274389096873945.post-1694484106085654915
Extensions
3-D Print-ception: Scientists Create New, Working Ovaries Via 3-D Printing
3-D printinghealthinventionmedical technology
Show full content
It seems that the only technology progressing as rapidly as the robots who are going to take your jobs is that of 3-D printing.  Capable of creating clothes, huts, offices, art, prosthetic limbs, space station parts, and more, the science has now expanded to being able to reproduce the organs that are used to reproduce.

Even though they actually work, can we please call them "faux-varies"?
(Image courtesy chicagotribune.com.)

According to futurism.com, researchers at Northwestern University have successfully 3-D printed synthetic ovaries that have enabled infertile mice to resume their menstrual cycles and even give birth.  The ovaries were constructed from a Jello-like material combined with living cells.  Once implanted into mice that had had their ovaries removed, the Jellovaries (which is not a scientific term, but it should be) reacted as normal organs would.
The 3-D printed elements, as explained in a press release on Endocrine.com, created a “scaffold” in which hormone producing cells and immature egg cells (oocytes) were implanted.  The scaffold was created based on biological principles, accounting for enough rigidity to survive the surgery, as well as enough space to provide for blood vessel formation, oocyte growth, and ovulation.  By assessing human cell cultures, the scientists designed the scaffolding with crisscrossing struts, allowing the cells to anchor at multiple points.

A standard ovary.
(Image courtesy repropedia.org.)
The mice who were the recipients of the transplants were able to ovulate, give birth to healthy pups, and nurse.  No additional substances were needed to spur on the growth of blood vessels in the mice, and the bioprosthesis interacted well with the soft tissues in their bodies.  Future work on soft-tissue replacement could take cues from this experiment.

Oh science, is there anything you can't improve?
(Image courtesy 3ders.com.)
This bioprosthesis could someday be of tremendous help to women who have survived ovarian cancer or other troubles of the lady-bits that could have led to the impediment of fertility.  An estimated 1 in 250 adults has survived childhood cancer, and 1 out of 55 women will develop ovarian cancer in their lifetime.  Hopefully, science will be able to print up the perfect cure!

Ladies, stay vigilant!
But hopefully these new ovary upgrades will help...
(Image courtesy allnurses.com.)
tag:blogger.com,1999:blog-1458274389096873945.post-5373360405870577450
Extensions
Spice Up Your Dinner Conversation With ACTUAL Conversation, Courtesy "Pepper Hacker"
communication technologyculinary technologyinventionwifi
Show full content
Sometimes, it doesn’t take Wikileaks or the Russians to make a hack that changes everything.  Even a small-scale rerouting of the information superhighway can have an impact on everyday humans, and possibly even work in everyone’s best interests.  That was the thought behind this one unassuming new invention…
The Internet of Things?
How about the NON-Internet of Things?
(Image courtesy news.co.au.)

According to news.com.au, a new, technologically-modified pepper grinder may abet conversations and interactions that were previously thwarted by internet-enabled devices.  “Pepper grinder” is not a fancy futuristic tech term…the device is actually a pepper grinder.  Namely, a pepper grinder that shuts down your wi-fi temporarily so that you can enjoy dinner. 
The device was created by the Dolmio company, who conducted a survey of Australian households and deduced that 63% of family mealtime arguments were due to over-use of technology at the table.  38% felt like there was no reasonable way to thwart this modern menace, with one in three households having unsuccessfully attempted to ban web-surfing while meals were served.

Come on, you can deal with your family IRL for a FEW minutes each day.
(Image courtesy jimpintoblog.blogspot.com.)
Enter the Pepper Hacker – a device that effectively curtails the use of home wi-fi on phones, tablets, or laptops, so you can chow down with your family’s heads not afloat in cyber-space.  The Pepper Hacker can block up to four devices at a time, and has a rechargeable battery that lasts for “six dinners.”
This is Pepper Hacker's message to your meddling.
(Image courtesy news.co.au.)
Of course, your screen-scrolling spawn or spouse can simply choose to eat up their cell data as they eat their meals, but is Instagramming your reaction to mom’s pot roast really that crucial?  Can’t the online games or Netflix marathon take a brief break for, you know, real life?

Don’t let your memories just be in the form of those little notifications facebook sends you every day.  Your life will soon be filled with robots of all sorts…don’t let your family act like them already.  Who knows…your discussions might even generate a few quotes worthy of Tweeting (AFTER dinner)!  

You can bet Einstein would choose corned beef hash over hashtags.
(Image courtesy twitter.com.)
tag:blogger.com,1999:blog-1458274389096873945.post-4244250125936467188
Extensions