SocialPath

“SocialPath is a django application for gathering social media intelligence on specific username. It checks for Twitter, Instagram, Facebook, Reddit and Stackoverflow. Collected data is sorted according words frequency, hashtags, timeline, mentions, similar accounts and presented as charts with the help of D3js. This technique allows me to track darknet users who does not use unique nicknames.”

-Wojciech, “SocialPath — track users across social media platforms.” Medium.com. September 23, 2019.

A Second ‘Second Life’: Facebook Horizon

“Welcome to Facebook Horizon, an ever-expanding VR world where you can explore, play, and create in extraordinary ways. At Horizon, you’re not just discovering a new world, you are part of what makes it great.”

Facebook Horizon

At first glance, Horizon seems like a modernized Second Life, a first-person Sims, a fulfillment of the intentions of AltspaceVR and a competitor to PlayStation’s PSVR Dreams and cross-platfrom kids’ favorite Roblox. Back in 2016, Facebook was giving every new Oculus employee a copy of the Ready Player One novel. It seems they’ve been busy building that world since then.

Facebook Horizon will start centralized around a town square. Before people step in, they can choose how they look and what they wear from an expansive and inclusive set of avatar tools. From inside VR, users will be able to use the Horizon World Builder to create gaming arenas, vacation chillspots and activities to fill them without the need to know how to code.

-Josh Constine, “Facebook announces Horizon, a VR massive-multiplayer world.” Techcrunch.com. September 25, 2019.

Imagine. An entire world mediated by Facebook, where they monetize your creativity for their profit.

Standard Ebooks: Free and Liberated ebooks

“Standard Ebooks is a volunteer driven, not-for-profit project that
produces new editions of public domain ebooks that are lovingly
formatted, open source, and free.

Ebook projects like Project Gutenberg transcribe ebooks and make them available for the widest number of reading devices. Standard Ebooks takes ebooks from sources like Project Gutenberg, formats and typesets them using a carefully designed and professional-grade style manual, fully proofreads and corrects them, and then builds them to create a new edition that takes advantage of state-of-the-art ereader and browser technology.”

https://standardebooks.org/

Fans Are Better Than Tech at Organizing Information Online | WIRED

“On [Archive of Our Own, a.k.a.] AO3, users can put in whatever tags they want. (Autocomplete is there to help, but they don’t have to use it.) Then behind the scenes, human volunteers look up any new tags that no one else has used before and match them with any applicable existing tags, a process known as tag wrangling.”

—Samantha Puc, “Fans Are Better Than Tech at Organizing Information Online.” Wired. June 11, 2019.

There’s been lots of discussion of the significance of AO3’s Hugo Award for Best Related Work.

Modest proposal? Use this process on new terms entered in the search box of a library’s online catalog to surface subject headings for users. It’s a logical extension of the catalogers work.

Nobias

“Track media bias, credibility, authenticity, and politics in the press you read. Burst your filter bubble…

…Nobias was founded in 2017 with a mission to promoting responsible/inclusive technology to protect consumers from deceptive or misleading content on the internet. Along the way, we hope to help people understand the landscape of media bias and to give them the power over the algorithms that shape what they read and see online.”

No Bias

Using /etc/hosts to Cut Internet Crap

I was using a website this morning that pointed to fonts.googleapis.com. I know this because the url was displayed at the bottom of the browser, as my machine freezed into an unusable state, which required a reboot to return it to functioning again.

It seems strange to me that a website should be able freeze both a browser and the machine running it. But, minimally, I thought I should prevent downloading fonts from google from doing it in the future.

With a little web searching, I came across this article, “Fix Slow Page Loading Waiting for fonts.googleapis.com.” I made the appropriate changes to my /etc/host file and noticed an immediate improvement on the loading of the site I was using.

So, not being one for half-measures, I thought, “I wonder if there’s a good list to block most of these types of sites that slow down the web experience…” Of course, there are many. I ended up choosing Steven Black‘s list: Unified hosts + fakenews + gambling + porn + social because it is used by the previously mentioned Pi-Hole as one of its filters. I kept my original host file, noting in the top where to get an updated list and just added everything after: # Custom host records are listed here. to the end of the file.

Works beautifully. I’ll live with it for a few months and post an update here of any problems I encounter. However, this seems like a good option for cutting down the amount of crap you come across on the Internet and will likely speed web page load times considerably. If you need more explicit instructions, this article seems to provide a good discussion on how to do it across different platforms..

Build Your Own Text Editor

“This is an instruction booklet that shows you how to build a text editor in C.

The text editor is antirez’s kilo, with some changes. It’s about 1000 lines of C in a single file with no dependencies, and it implements all the basic features you expect in a minimal editor, as well as syntax highlighting and a search feature.

This booklet walks you through building the editor in 184 steps. Each step, you’ll add, change, or remove a few lines of code. Most steps, you’ll be able to observe the changes you made by compiling and running the program immediately afterwards.”

https://viewsourcecode.org/snaptoken/kilo/index.html

Might be interesting to compare to the source code of mg, which is a minimal editor written in C that works like Emacs.

Forecasting in R: Probability Bins for Time-Series Data

This time-series.R script, below, takes a set of historical time series data and does a walk using the forecast period to generate probabilistic outcomes from the data set.

Input file is a csv file with two columns (Date, Value) with dates in reverse chronological order and in ISO-8601 format. Like so:

2019-08-06,1.73                                                                
2019-08-05,1.75                                                                
2019-08-02,1.86

Output is as follows:

0.466: Bin 1 - <1.7
0.328: Bin 2 - 1.7 to <=1.9
0.144: Bin 3 - 1.9+ to <2.1
0.045: Bin 4 - 2.1 to <=2.3
0.017: Bin 5 - 2.3+

Note: Patterns in data sets will skew results. A 20-year upward trend will make higher probabilities more likely. A volatile 5-year period will produce more conservative predictions and may not capture recent trends or a recent change in direction of movement.

R Script

# time-series.R 
# Original: December 4, 2018
# Last revised: December 4, 2018

#################################################
# Description: This script is for running any 
# sequence of historical time-series data to make 
# a forecast for five values by a particular date.
# Assumes a cvs file with two columns (Date, Value) 
# with dates in reverse chronological order and in
# ISO-8601 format. Like so:
#
# 2019-08-06,1.73                                                                
# 2019-08-05,1.75                                                                
# 2019-08-02,1.86

#Clear memory and set string option for reading in data:
rm(list=ls())
gc()

  #################################################
  # Function
  time-series <- function(time_path="./path/file.csv", 
                        closing_date="2020-01-01", trading_days=5, 
                         bin1=1.7, bin2=1.9, 
                         bin3=2.1, bin4=2.3) {

  #################################################
  # Libraries
  #
  # Load libraries. If library X is not installed
  # you can install it with this command at the R prompt:
  # install.packages('X') 

  # Determine how many days until end of question
  todays_date <- Sys.Date()
  closing_date <- as.Date(closing_date)
  remaining_weeks <- as.numeric(difftime(closing_date, todays_date, units = "weeks"))
  remaining_weeks <- round(remaining_weeks, digits=0)
  non_trading_days <- (7 - trading_days) * remaining_weeks
  day_difference <- as.numeric(difftime(closing_date, todays_date))
  remaining_days <- day_difference - non_trading_days 

  #################################################
  # Import & Parse
  # Point to time series data file and import it.
  time_import <- read.csv(time_path, header=FALSE) 
  colnames(time_import) <- c("date", "value")

  # Setting data types
  time_import$date <- as.Date(time_import$date)
  time_import$value <- as.vector(time_import$value)

  # Setting most recent value, assuming descending data
  current_value <- time_import[1,2]

  # Get the length of time_import$value and shorten it by remaining_days
  time_rows = length(time_import$value) - remaining_days

  # Create a dataframe
  time_calc <- NULL

  # Iterate through value and subtract the difference 
  # from the row remaining days away.
  for (i in 1:time_rows) {
    time_calc[i] <- time_import$value[i] - time_import$value[i+remaining_days]
  }

  # Adjusted against current values to match time_calc
  adj_bin1 <- bin1 - current_value
  adj_bin2 <- bin2 - current_value
  adj_bin3 <- bin3 - current_value 
  adj_bin4 <- bin4 - current_value 

  # Determine how many trading days fall in each question bin
  prob1 <- round(sum(time_calc<adj_bin1)/length(time_calc), digits = 3)
  prob2 <- round(sum(time_calc>=adj_bin1 & time_calc<=adj_bin2)/length(time_calc), digits = 3)
  prob3 <- round(sum(time_calc>adj_bin2 & time_calc<adj_bin3)/length(time_calc), digits = 3)
  prob4 <- round(sum(time_calc>=adj_bin3 & time_calc<=adj_bin4)/length(time_calc), digits = 3)
  prob5 <- round(sum(time_calc>adj_bin4)/length(time_calc), digits = 3)
  
  ###############################################
  # Print results
  return(cat(paste0(prob1, ": Bin 1 - ", "<", bin1, "\n",
                  prob2, ": Bin 2 - ", bin1, " to <=", bin2, "\n", 
                  prob3, ": Bin 3 - ", bin2, "+ to <", bin3, "\n", 
                  prob4, ": Bin 4 - ", bin3, " to <=", bin4, "\n", 
                  prob5, ": Bin 5 - ", bin4, "+", "\n")))
}

A (Relatively Easy to Understand) Primer on Elliptic Curve Cryptography | Ars Technica

“If you just want the gist, here’s the TL;DR version: [Elliptical Curve Crytography,] ECC is the next generation of public key cryptography, and based on currently understood mathematics, it provides a significantly more secure foundation than first-generation public key cryptography systems like RSA. If you’re worried about ensuring the highest level of security while maintaining performance, ECC makes sense to adopt. If you’re interested in the details, read on.”

—Nick Sullivan. ” A (relatively easy to understand) primer on elliptic curve cryptography.” Ars Technica. October 24, 2013.