Technology

NPR

How Russia Used SolarWinds To Hack Microsoft, Intel, Pentagon, Other Networks : NPR

The routine software update may be one of the most familiar and least understood parts of our digital lives. A pop-up window announces its arrival and all that is required of us is to plug everything in before bed. The next morning, rather like the shoemaker and the elves, our software is magically transformed.

Last spring, a Texas-based company called SolarWinds made one such software update available to its customers. It was supposed to provide the regular fare — bug fixes, performance enhancements — to the company's popular network management system, a software program called Orion that keeps a watchful eye on all the various components in a company's network. Customers simply had to log into the company's software development website, type a password and then wait for the update to land seamlessly onto their servers.

The routine update, it turns out, is no longer so routine.

Hackers believed to be directed by the Russian intelligence service, the SVR, used that routine software update to slip malicious code into Orion's software and then used it as a vehicle for a massive cyberattack against America.

NPR

Falun Gong, Steve Bannon, And The Battle Over Internet Freedom Under Trump : NPR

Of all the disruptions unleashed by the Trump White House on how the federal government typically works, the saga of one small project, called the Open Technology Fund, stands out.

The fantastical tale incorporates the spiritual movement Falun Gong, former White House strategist Steve Bannon, the daughter of a late liberal Congressman, and a zealous appointee of former President Donald Trump.

And specifically, it involves a fierce, months-long battle over whether the U.S. Agency for Global Media and the U.S. State Department should subsidize software developed by adherents of Falun Gong. The decision to prioritize this software stripped money intended for critical apps from a federal fund designed to bolster technology vital to dissidents overseas, officials say. On top of that, once approved for funding, over a six-month period the software served a grand total of four people. That's right, four.

NPR

Alan Turing Honored As The Face Of The U.K.’s New 50-Pound Bank Note : NPR

The Bank of England has unveiled the new ?50 note featuring mathematician and computer science pioneer Alan Turing, who helped the Allies win World War II with his code-breaking prowess but died an outcast after facing government persecution over his homosexuality.

The bank revealed the note's design and features — which include a number of clever visual references to Turing's work — on Thursday, nearly two years after first announcing that it would honor Turing. The banknote will officially enter circulation on June 23, Turing's birthday.

Google fixes issue causing Android apps to crash with updates to Chrome and WebView – The Verge

Google fixes issue causing Android apps to crash with updates to Chrome and WebView – The Verge

Some apps were crashing for Android users, but Google has fixed it. The issue was due to a system component called Android System WebView that lets Android apps display web content. Google now has a fix that requires users to update Android System WebView to version 89.0.4389.105 and Google Chrome to the latest version. Both are available on Google Play.

The issues began on Monday afternoon and lasted about seven hours, according to the Google Workspace dashboard for Gmail. The company recommended using the desktop interface until issues were resolved.

I am a big fan of TableauScraper, which is super helpful for government agencies, namely the NYS Department of Health, I’m speaking to you, that wants to appear transparent but not really and make it difficult to download their data

I am a big fan of TableauScraper, which is super helpful for government agencies, namely the NYS Department of Health, I’m speaking to you, that wants to appear transparent but not really and make it difficult to download their data. But with TableauScraper it’s pretty easy to get their data. I use the TableauScraper prompt.py script to download the Tableau, prompt me for the table I want to select, then added a few line to dump the Panda into a CSV file. I won’t say I rewrote the book on this one, but it works for my purposes.

</p>
 The following script will get the session token, get the data,
# prompt the user to select a worksheet, parse the data into a dataframe
import json
import pandas as pd
import argparse
from tableauscraper import TableauScraper as TS
import os

parser = argparse.ArgumentParser()
parser.add_argument(
    "-get",
    "--get",
    choices=["dashboard", "dropdown", "select"],
    help="type of action",
    required=True,
)
parser.add_argument("-url", "--url", help="full tableau url", required=True)
args = parser.parse_args()

ts = TS()
ts.loads(args.url)

# checkout the json data
# with open('data.json', 'w', encoding='utf-8') as f:
#    json.dump(ts.data, f, ensure_ascii=False, indent=4)
# with open('info.json', 'w', encoding='utf-8') as f:
#    json.dump(ts.info, f, ensure_ascii=False, indent=4)

if args.get == "dashboard":
    dashboard = ts.promptDashboard()
elif args.get == "dropdown":
    dashboard = ts.promptDropdown()
elif args.get == "select":
    dashboard = ts.promptSelect()

with pd.option_context(
    "display.max_rows", None, "display.max_columns", 5, "display.width", 1000
):
    for idx, worksheet in enumerate(dashboard.worksheets):
        if idx == 0:
            print("|" + ("-" * (os.get_terminal_size().columns - 2)) + "|")
        print("|" + worksheet.name.center(os.get_terminal_size().columns - 2) + "|")
        print("|" + ("-" * (os.get_terminal_size().columns - 2)) + "|")
        print(worksheet.data)
        print("")
        # selectable values
        selectableColumns = worksheet.getSelectableColumns()
        print(f"selectable columns for this worksheet : {len(selectableColumns)}")
        for columnName in selectableColumns:
            print("&bull; " + columnName)
            # for value in worksheet.getValues(columnName):
            # 	print("t&bull;" + value)

        print("")
        print("|" + ("-" * (os.get_terminal_size().columns - 2)) + "|")
        
        csvpath="/tmp/tableau.csv"
        print("nWorksheet Data Exported to "+csvpath+"...n")
        
        worksheet.data.to_csv(csvpath)

    # dropdown list
    dropdownInputs = dashboard.getDropdownInputs()
    print(f"drop down lists for this dashboard : {len(dropdownInputs)}")
    for inputName in dropdownInputs:
        print("&bull; " + inputName)
        for inputValue in dashboard.getDropdownValues(inputName):
            print("t&bull; " + inputValue)