Usually I do an annual budget post - but my budget for 2021 pretty much can only be calculated through August Due to ~~uncertainty~~ - is posting an 8 month budget even useful?
{
"type": "entry",
"published": "2020-12-28T16:42:34+00:00",
"url": "https://twitter.com/anomalily/status/1343598227354873864",
"content": {
"text": "Usually I do an annual budget post - but my budget for 2021 pretty much can only be calculated through August Due to ~~uncertainty~~ - is posting an 8 month budget even useful?"
},
"author": {
"type": "card",
"name": "Lillian Karabaic \ud83e\udd44\ud83c\udff3\ufe0f\u200d\ud83c\udf08 BLM",
"url": "https://twitter.com/anomalily",
"photo": "https://pbs.twimg.com/profile_images/1123802400731664385/dsHQG1nZ.jpg"
},
"post-type": "note",
"_id": "17347055",
"_source": "2773"
}
Rain, lightning bolts and thunderclaps: scottgruber.me/2020/12/28/rai…
{
"type": "entry",
"published": "2020-12-28T16:28:54+00:00",
"url": "https://twitter.com/scott_gruber/status/1343594785303633920",
"content": {
"text": "Rain, lightning bolts and thunderclaps: scottgruber.me/2020/12/28/rai\u2026",
"html": "Rain, lightning bolts and thunderclaps: <a href=\"https://scottgruber.me/2020/12/28/rain-lightning-bolts-and-thunderclaps\">scottgruber.me/2020/12/28/rai\u2026</a>"
},
"author": {
"type": "card",
"name": "Scott Gruber",
"url": "https://twitter.com/scott_gruber",
"photo": "https://pbs.twimg.com/profile_images/1340653730526445568/sfMRNA6p.jpg"
},
"post-type": "note",
"_id": "17346847",
"_source": "2773"
}
Some UX patters I've just always hated building. A "load more" button to display additional posts at the bottom of a feed being one of them.
After much fiddling (lack of docs), I got it working in #rails with #hotwire Turbo Streams! The final solution is remarkably elegant! 👏
{
"type": "entry",
"published": "2020-12-28T16:26:56+00:00",
"url": "https://twitter.com/jaredcwhite/status/1343594290388160514",
"content": {
"text": "Some UX patters I've just always hated building. A \"load more\" button to display additional posts at the bottom of a feed being one of them.\n\nAfter much fiddling (lack of docs), I got it working in #rails with #hotwire Turbo Streams! The final solution is remarkably elegant! \ud83d\udc4f",
"html": "Some UX patters I've just always hated building. A \"load more\" button to display additional posts at the bottom of a feed being one of them.\n\nAfter much fiddling (lack of docs), I got it working in <a href=\"https://twitter.com/search?q=%23rails\">#rails</a> with <a href=\"https://twitter.com/search?q=%23hotwire\">#hotwire</a> Turbo Streams! The final solution is remarkably elegant! \ud83d\udc4f"
},
"author": {
"type": "card",
"name": "Jared White",
"url": "https://twitter.com/jaredcwhite",
"photo": "https://pbs.twimg.com/profile_images/1342524575876218881/buD8P1lX.jpg"
},
"post-type": "note",
"_id": "17346746",
"_source": "2773"
}
{
"type": "entry",
"published": "2020-12-28T11:15:24-05:00",
"url": "https://david.shanske.com/2020/12/28/3712/",
"syndication": [
"https://www.swarmapp.com/user/454146796/checkin/5fea049c7c57da1e075027f1"
],
"author": {
"type": "card",
"name": "David Shanske",
"url": "https://david.shanske.com/",
"photo": "https://david.shanske.com/avatar/dshanske?s=49"
},
"checkin": {
"type": "card",
"name": "Dania Beach",
"url": "https://foursquare.com/v/510c76ede4b0b5592ae90775"
},
"post-type": "checkin",
"_id": "17346572",
"_source": "1905"
}
Pastel mixing patterns today
{
"type": "entry",
"published": "2020-12-28T16:03:06+00:00",
"url": "https://twitter.com/anomalily/status/1343588295003914240",
"video": [
"https://video.twimg.com/ext_tw_video/1343588277505327108/pu/vid/720x1280/QMdUfhvS_f1sWI22.mp4?tag=10"
],
"content": {
"text": "Pastel mixing patterns today"
},
"author": {
"type": "card",
"name": "Lillian Karabaic \ud83e\udd44\ud83c\udff3\ufe0f\u200d\ud83c\udf08 BLM",
"url": "https://twitter.com/anomalily",
"photo": "https://pbs.twimg.com/profile_images/1123802400731664385/dsHQG1nZ.jpg"
},
"post-type": "video",
"_id": "17346389",
"_source": "2773"
}
How do you sum up 300+ days of March during eternal Caturday?
{
"type": "entry",
"published": "2020-12-28T10:39:51-0500",
"url": "https://martymcgui.re/2020/12/28/103951/",
"category": [
"caturday"
],
"video": [
"https://media.martymcgui.re/a5/7d/02/2d/b58011eae4d55207c9a62ff7d6fbd7d30af7a92a5a1fe547de43f408.mov"
],
"content": {
"text": "How do you sum up 300+ days of March during eternal Caturday?",
"html": "<p>How do you sum up 300+ days of March during eternal Caturday?</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "video",
"_id": "17346207",
"_source": "175"
}
I love it when a person like Windex Missy gets one of those preservation notices, and realizes they have a legal obligation to provide revidence of their own liability to the person suing them. It’s even better when they learn failure to preserve can bias the case against them.
“[Y]ou have positioned yourself as a...leader of the...misinformation campaign by pretending to have...insider’s knowledge’ re: Dominion’s business activities, wh...
{
"type": "entry",
"published": "2020-12-28T14:51:48+00:00",
"url": "https://twitter.com/karabaic/status/1343570350613774337",
"quotation-of": "https://twitter.com/jennycohn1/status/1343345436657008640",
"content": {
"text": "I love it when a person like Windex Missy gets one of those preservation notices, and realizes they have a legal obligation to provide revidence of their own liability to the person suing them. It\u2019s even better when they learn failure to preserve can bias the case against them."
},
"author": {
"type": "card",
"name": "jk",
"url": "https://twitter.com/karabaic",
"photo": "https://pbs.twimg.com/profile_images/1256785873384861696/QfRzUvne.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/jennycohn1/status/1343345436657008640": {
"type": "entry",
"published": "2020-12-27T23:58:04+00:00",
"url": "https://twitter.com/jennycohn1/status/1343345436657008640",
"content": {
"text": "\u201c[Y]ou have positioned yourself as a...leader of the...misinformation campaign by pretending to have...insider\u2019s knowledge\u2019 re: Dominion\u2019s business activities, when in reality you were hired thru a staffing agency for one day to clean glass on machines...\u201d lawandcrime.com/high-profile/d\u2026",
"html": "\u201c[Y]ou have positioned yourself as a...leader of the...misinformation campaign by pretending to have...insider\u2019s knowledge\u2019 re: Dominion\u2019s business activities, when in reality you were hired thru a staffing agency for one day to clean glass on machines...\u201d <a href=\"https://lawandcrime.com/high-profile/dominion-attorneys-send-brutal-letter-to-trump-campaigns-so-called-star-witness-mellissa-carone/\">lawandcrime.com/high-profile/d\u2026</a>"
},
"author": {
"type": "card",
"name": "Jennifer Cohn \u270d\ud83c\udffb \ud83d\udce2",
"url": "https://twitter.com/jennycohn1",
"photo": "https://pbs.twimg.com/profile_images/1308254783359205376/MOI-gCse.jpg"
},
"post-type": "note"
}
},
"_id": "17345690",
"_source": "2773"
}
“[Y]ou have positioned yourself as a...leader of the...misinformation campaign by pretending to have...insider’s knowledge’ re: Dominion’s business activities, wh...
{
"type": "entry",
"published": "2020-12-28T14:46:52+00:00",
"url": "https://twitter.com/karabaic/status/1343569108680331268",
"quotation-of": "https://twitter.com/jennycohn1/status/1343345436657008640",
"content": {
"text": "Missy Windex"
},
"author": {
"type": "card",
"name": "jk",
"url": "https://twitter.com/karabaic",
"photo": "https://pbs.twimg.com/profile_images/1256785873384861696/QfRzUvne.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/jennycohn1/status/1343345436657008640": {
"type": "entry",
"published": "2020-12-27T23:58:04+00:00",
"url": "https://twitter.com/jennycohn1/status/1343345436657008640",
"content": {
"text": "\u201c[Y]ou have positioned yourself as a...leader of the...misinformation campaign by pretending to have...insider\u2019s knowledge\u2019 re: Dominion\u2019s business activities, when in reality you were hired thru a staffing agency for one day to clean glass on machines...\u201d lawandcrime.com/high-profile/d\u2026",
"html": "\u201c[Y]ou have positioned yourself as a...leader of the...misinformation campaign by pretending to have...insider\u2019s knowledge\u2019 re: Dominion\u2019s business activities, when in reality you were hired thru a staffing agency for one day to clean glass on machines...\u201d <a href=\"https://lawandcrime.com/high-profile/dominion-attorneys-send-brutal-letter-to-trump-campaigns-so-called-star-witness-mellissa-carone/\">lawandcrime.com/high-profile/d\u2026</a>"
},
"author": {
"type": "card",
"name": "Jennifer Cohn \u270d\ud83c\udffb \ud83d\udce2",
"url": "https://twitter.com/jennycohn1",
"photo": "https://pbs.twimg.com/profile_images/1308254783359205376/MOI-gCse.jpg"
},
"post-type": "note"
}
},
"_id": "17345201",
"_source": "2773"
}
{
"type": "entry",
"published": "2020-12-28T05:53:27+00:00",
"url": "https://cleverdevil.io/2020/my-emotional-support-pug-eliza",
"photo": [
"https://cleverdevil.io/file/4a7d827e9ee9f3070b3992a397b19c5a/thumb.jpg"
],
"syndication": [
"https://twitter.com/cleverdevil/status/1343435065347477506",
"https://mastodon.social/@cleverdevil/105456262493613337"
],
"name": "My emotional support pug, Eliza \ud83d\udc36",
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://cleverdevil.io/file/fdbc7696a5f73864ea11a828c861e138/thumb.jpg"
},
"post-type": "photo",
"_id": "17341055",
"_source": "10"
}
{
"type": "entry",
"author": {
"name": "Cathie",
"url": "https://cathieleblanc.com/",
"photo": null
},
"url": "https://cathieleblanc.com/2020/12/27/raspberry-pi-christmas-project/",
"published": "2020-12-27T23:52:48-05:00",
"content": {
"html": "<p>Like a lot of people, I am spending this Christmas/New Year holiday by myself because of COVID-19. It really hasn\u2019t been a bad thing but I did want to plan something different for me to do on Christmas Day. I decided to try to build a network accessible storage (NAS) server to use primarily for my photos. I wanted to create storage that would be accessible from any of my devices while I\u2019m at home. I have a Dropbox subscription that works really well for this for most of my files but I have chosen not to store my photos there, primarily because there are so many of them. I could have bought an NAS server like <a href=\"https://www.newegg.com/buffalo-ls220d0402/p/N82E16822165596\">this one</a> but I thought it would be fun to build one myself. And it was fun!</p>\n<p>I decided that I would base my NAS on the Raspberry Pi, mainly because I thought it would be fun to try out a couple of different projects. For those who don\u2019t know, a <a href=\"https://www.raspberrypi.org/help/what-%20is-a-raspberry-pi/\">Raspberry Pi</a> is a credit card sized computer that can be customized for a variety of tasks. It provides a way to learn about and practice a lot of computing skills.</p>\n<p><img src=\"https://i2.wp.com/cathieleblanc.com/wp-content/uploads/Raspberry-Pi.png?resize=300%2C241&ssl=1\" alt=\"\" /></p>\n<p>For my playing, I chose <a href=\"https://vilros.com/collections/raspberry-pi-kits/products/raspberry-pi-3-model-b-plus-complete-kit\">a starter kit</a> from Vilros. As you can see in the image above, the kit comes with a Raspberry Pi board which includes a number of ways to connect to other devices (USB, Ethernet, wireless LAN, HDMI), a case to enclose the board, a couple of heat sinks that need to be installed, a power supply, a slot for a microSD card, and the NOOBS (New Out of the Box Software) installer on the card to install the Raspberry Pi operating system which is a version of Unix designed specifically for the Pi. I followed the instructions in the Quick Start Guide to insert the heat sinks. I then followed the instructions to insert the 32GB microSD card.</p>\n<p>In order to work on the Raspberry PI, you need to attach a monitor and keyboard. I used the HDMI cable to connect the Pi to my TV for use as a monitor. I already owned an <a href=\"https://www.eagletec.com/product/50/keyboards/K104-BB\">Eagletec wireless keyboard and mouse</a> so I inserted the wireless dongle into one of the Pi\u2019s USB ports. I then plugged the Pi into the power supply and followed the instructions to install and configure the operating system which is called Raspbian.</p>\n<p>Raspbian provides a graphical desktop environment that looks a lot like Windows or macOS. But most of the work that I did in this project is easier to do using text-based commands. Raspbian provides a tool called Terminal to allow you enter these commands. It looks like this:</p>\n<p><img src=\"https://i0.wp.com/cathieleblanc.com/wp-content/uploads/terminal.png?resize=279%2C180&ssl=1\" alt=\"\" /></p>\n<p>In doing this project, it was definitely helpful that I already know how to use the command line. It was also helpful that I have used Unix systems a lot in the past and know about most of the commands I needed to use. This helped with debugging when things looked different than how the tutorials I was using suggested they would look. But I think with persistence anyone can do this project even without previous Unix experience. If nothing else, this project is a great way to learn about Unix.</p>\n<p>One of the first things I did was to rename my Raspberry Pi to something other than the default name. I called it \u201ccathienas\u201d. To rename the device, I typed the following command (without the quotes) at the command prompt in Terminal: \u201chostname cathienas\u201c.</p>\n<p>So the basic idea for this project is that I wanted to have storage attached to the Pi that I can both read from and write to wirelessly from my other devices (laptops, phone, iPad). In doing research before starting the project, I decided that I wanted to set the NAS to be set up as a RAID (redundant array of inexpensive disks). This means that when I write a file to the NAS, it is copied to 2 storage devices automatically. This is helpful because if one of the devices fails for some reason, you still have a copy of all of your files. Plus, I just thought it would be fun and challenging to set up a RAID since I have never done it before.</p>\n<p>The next decision that I had to make was what devices to use for the storage. My first thought was that I would use a couple of portable external hard drives (something like <a href=\"https://www.bhphotovideo.com/c/product/1487010-REG/sandisk_sdssde80_1t00_a25_extremepro_1tb_portable_ssd.html?SID=kj7w9jsmj701vop902fa9\">this</a>). This kind of drive is powered through a USB connection but the Pi isn\u2019t powerful enough to power 2 external hard drives. So to use portable hard drives, I would also need to use a powered USB hub (something like <a href=\"https://www.bhphotovideo.com/c/product/1496361-REG/xcellon_sh4_3h1hc_2_4_port_powered_usb_3_0.html\">this</a>). A second option is to use 2 desktop hard drive that each have their own independent power supply (something like <a href=\"https://www.staples.com/Seagate-Backup-Plus-Hub-Desktop-Hard-Drive-4TB/product_2431928\">this</a>). Note that my links to these products does not represent a recommendation for those particular options. I didn\u2019t choose either of these alternatives for storage so I can\u2019t vouch for any of those products. Instead, I chose to use 2 thumb drives for my RAID because I can see myself reusing these in other projects should I decide to abandon my NAS. So I purchased 2 <a href=\"https://www.bestbuy.com/site/sandisk-ultra-512gb-usb-3-0-type-a-flash-drive-with-hardware-encryption-black/6422265.p?skuId=6422265&ref=212&loc=1&extStoreId=868&ref=212&loc=1&gclid=Cj0KCQiA_qD_BRDiARIsANjZ2LCEW1gEtKaG2xsvT62C0hIRnKQi1iuBjVG0RH8zYuckXzL2GFBQEMoaApV4EALw_wcB&gclsrc=aw.ds\">SanDisk 512GB thumb drives</a>. Note that the Raspberry Pi that I purchased only supports USB 2.0 and these thumb drives are USB 3.0. Luckily, the 3.0 standard is backward compatible to 2.0 so I was confident these drives would work.</p>\n<p>Once I plugged the thumb drives into the Pi, I was ready to set up the RAID. I relied on <a href=\"https://magpi.raspberrypi.org/articles/build-a-raspberry-pi-nas\">this tutorial</a> although I did have to change a couple of things. All of the following commands (which are in blue) should be typed at the command prompt in Terminal (see above).</p>\n<p>First, check to make sure the drives are available to the system. Type \u201clsblk\u201d (without the quotes) at the command prompt. This command means list all block devices that are part of the system. There should be 3 (unless you have added something other than what I\u2019ve talked about in this post). The first one is \u201cmmcblk0\u201d which is the microSD card that contains the Raspbian operating system. The other two should be \u201csda\u201d and \u201csdb\u201d (storage device a and storage device b).</p>\n<p>Second, format sda and sdb so they can be used as part of the RAID. Type \u201csudo fdisk /dev/sda\u201d at the command prompt. \u201csudo\u201d means \u201csuperuser do\u201d and will run the fdisk command with the privileges of the superuser. \u201cfdisk\u201d mean \u201cformat disk\u201d and \u201c/dev/sda\u201d is the directory path for storage device a. Within the fdisk command, I first had to delete the current partition on the drive by typing \u201cd\u201d and then I could create a new partition by typing \u201cn\u201c. I answered all of the questions that came up by just pressing Enter (which means to use the default answer). Once all of the questions have been answered, type \u201cw\u201d to write these changes to the disk (that is, save the changes). This will cause fdisk to exit back to the command prompt.</p>\n<p>Next, repeat the steps above for sdb. That is, type \u201csudo fdisk /dev/sdb\u201c, delete its current partition, create a new partition with default settings, and write the changes to the disk.</p>\n<p>At this point, I had to make sure my operating system was up-to-date. To do this, type \u201csudo apt update\u201c. Recall that \u201csudo\u201d means \u201csuperuser do\u201d. This time, we are running the \u201capt\u201d command which stands for \u201cadvanced package tool\u201d and we\u2019re telling it to \u201cupdate\u201d. Then type \u201csudo apt -dist upgrade\u201d which asks the advanced package tool to upgrade the distribution of the operating system. Don\u2019t forget the single minus sign in front of dist in the command.</p>\n<p>Now we are ready to create the RAID. To do this, we need to make the Pi see sda and sdb as one storage location that it will write every file to twice (once on sda and once on sdb). We need to install the RAID manager which is called mdadm (which stands for Multiple Disk And Device Management). Type \u201csudo apt install mdadm\u201d which I think is self-explanatory.</p>\n<p>Next, we need to tell mdadm to create the RAID. Type \u201csudo mdadm \u2013create \u2013verbose /dev/md0 \u2013level=mirror \u2013raid-devices=2 /dev/sda1 /dev/sdb1\u201d all in one long command. Note the double minus signs in front of create, verbose, level, and raid-devices. The command runs the RAID manager and asks it to create a new device with a root directory of /dev/md0. This device will be a mirrored device (\u2013level=mirror) which means that it will make multiple copies of anything added to it and it will have two RAID devices. The first will be the partition we created on sda (which is called sda1 and don\u2019t forget the 1 or you will get an error) and the second will be the partition we created on sdb (and again don\u2019t forget the 1). \u2013verbose asks the mdadm command to give long feedback about what it is encountering. Now Pi will see the 2 thumb drives as 1 device.</p>\n<p>In Unix-based systems, we need to \u201cmount\u201d storage devices in order for the system to see them. So in order for our Raspbian operating system to see our new RAID, we need to mount /dev/md0. This will take several commands. First, type \u201csudo mkdir -p /mnt/raid1\u201c. \u201cmkdir\u201d means \u201cmake directory\u201d. A directory in Unix is the same as a folder in Windows. So this command says make a directory called \u201craid1\u201d inside the directory called \u201cmnt\u201d. The -p (that\u2019s with a single minus sign) says to make the parent directories if they don\u2019t already exist. In other words, if the directory called \u201cmnt\u201d doesn\u2019t already exist, create it. Next, type \u201csudo mkfs.ext4 /dev/md0\u201d which means make a new file system (of type extension 4 which is too complicated to explain here) for our RAID (which is called /dev/md0). Next, we will actually mount the RAID by typing \u201csudo mount /dev/md0 /mnt/raid1/\u201c. (Note the / after raid1.) So our mounted RAID will be located in the directory /mnt/raid1/. To list the contents of our mounted RAID, type \u201cls -l /mnt/raid1/\u201c. \u201cls\u201d means \u201clist\u201d and \u201c-l\u201d (with a single minus sign) means in long format. You see only the item \u201clost+found\u201d in the list and that\u2019s how you know the RAID is operational.</p>\n<p>We don\u2019t want to have to manually mount the RAID every time we reboot the Raspberry Pi so we will need to add a command in the start up instructions for the file system. These start up instructions are located in a file called fstab which stands for file system table. To do this, we will use a text editor called nano. Type \u201csudo nano /etc/fstab\u201d which will open the fstab file in nano. Type the following line somewhere within the file: \u201c/dev/md0 /mnt/raid1/ ext4 defaults,noatime 0 1\u201c. This adds the RAID to the file system table. To exit nano, type CTRL-x and answer the question about overwriting the file with \u201cy\u201c.</p>\n<p>Now to make sure the RAID mounts correctly on start up, type \u201csudo mdadm \u2013detail \u2013scan | sudo tee -a /etc/mdadm/mdadm.conf\u201c. This command uses the pipe operator | to feed the results of \u201csudo mdadm \u2013detail \u2013scan\u201d (with double minus signs in front of detail and scan) into \u201csudo tee -a /etc/mdadm/mdadm.config\u201d (with single minus sign in front of a). So this command puts the details of the current mdadm set up into the configuration file for mdadm. When the Raspberry Pi reboots, that configuration file will set up mdadm as it is set up now.</p>\n<p>Reboot the Raspberry Pi and the RAID is ready to use.</p>\n<p>But how do we access files on the RAID from other devices on the network? We will use the SMB protocol but since that protocol is not installed by default on the Pi, we will need to install it. The protocol is known as Samba on the Pi. So to install the protocol, type \u201csudo install samba samba-common-bin\u201c. Answer any questions with the default answer.</p>\n<p>We have to make sure that we have a shared space on the RAID that is accessible to people on our network. We will make a directory to be shared by typing \u201csudo mkdir /mnt/raid1/shared\u201c. Note that the directory name \u201cshared\u201d can be any name that you choose. There is nothing magic about the word \u201cshared\u201d. Now we need to make that directory available for everyone to read, write, and execute (or run programs). Type \u201csudo chmod 777 /mnt/raid1/shared\u201c. \u201cchmod\u201d is the command to change file permissions in Unix. One of my favorite parts of the Unix OS is how it handles file permissions. There are three groups of people that you can give permissions to for each file: the person who owns the file, people in the file\u2019s group, and everyone else. For each of these 3 groups, you can give read (can open and view the file), write (can edit, modify, and delete the file), and execute (can run the file if it is a script or program of some sort) access. Typically, the permissions for the owner of the file are set to rwe which means that person can read, write, and execute the file. This would be written as 111. If for some reason, the owner did not have access to execute the file, their permission would be rw- or 110. In binary, 111 is 7 and 110 is 6. So a 7 in the first position of the number after \u201cchmod\u201d means that the owner has read, write, and execute access to this directory and the files within the directory. The second 7 means anyone in the group also has read, write, and execute access. The third 7 means everyone else has read, write, and execute access as well. Knowing binary helps here: 7=111=rwe, 6=110=read and write, 5=101=read and execute, 4=100=read only, 3=011=write and execute, 2=010=write only, and 1=001=execute only. Isn\u2019t that cool?</p>\n<p>Next, we need to tell Samba to make the RAID shared directory available on the network. To do that, we will change the Samba configuration file using nano. Type \u201csudo nano /etc/samba/smb.conf\u201c. Scroll to the bottom of the file using the arrow keys and type each of the following on a separate line: \u201c[shared]\u201c, \u201cpath = /mnt/raid1/shared\u201c, \u201cwriteable=Yes\u201c, \u201cmask=0777\u201c, \u201cdirectory mask=0777\u201c, \u201cpublic=no\u201c. Exit the file by typing CTRL-x and answer \u201cy\u201d to the question about overwriting the file. Now restart Samba by typing \u201csudo systemctl restart smbd\u201c. This command uses the systemctl tool to restart the SMB daemon which is the software that runs the SMB protocol.</p>\n<p>The default user on the Raspberry Pi is called pi. We have to give that user a password to access the Samba share from other devices. Type \u201csudo smbpassword -a pi\u201c. \u201c-a\u201d (with a single minus sign) means add the user \u201cpi\u201d to the list of smbpasswords. You will be prompted for a password which you will need to enter twice.</p>\n<p>How do we now access this shared space on the RAID from other devices? If you\u2019re using a Windows computer, you will map a network drive to the RAID. In Windows 10, you do this by opening File Explorer and navigating to \u201cThis PC\u201d. At the top of the window, you will see \u201cComputer\u201d as shown below:</p>\n<p><img src=\"https://i0.wp.com/cathieleblanc.com/wp-content/uploads/Screenshot-2020-12-27-23.22.37-1.png?resize=1024%2C681&ssl=1\" alt=\"\" /></p>\n\n<p>Click on \u201cComputer\u201d and then click on \u201cMap Network Drive\u201d. You will see the following dialog box:</p>\n<p><img src=\"https://i2.wp.com/cathieleblanc.com/wp-content/uploads/Screenshot-2020-12-27-23.30.45.png?resize=1024%2C672&ssl=1\" alt=\"\" /></p>\n<p>Change the drive to whichever letter you want and then type \u201c\\\\cathienas\\shared\u201d in the Folder box but replace \u201ccathienas\u201d with whatever you named your Pi and \u201cshared\u201d with whatever you called your shared folder. Be sure to check the box that says \u201cConnect using different credentials\u201d. You will then be prompted to enter the username (probably \u201cpi\u201d) and password that you created for Samba. A new window will open that contains the contents of your shared folder on your Raspberry Pi RAID and you can treat it like any other folder on your Windows 10 computer.</p>\n<p><img src=\"https://i2.wp.com/cathieleblanc.com/wp-content/uploads/Screenshot-2020-12-27-23.39.26.png?resize=1024%2C262&ssl=1\" alt=\"\" /></p>\n<p>To access the shared folder on my Android phone, I downloaded a new File Manager app that has the SMB protocol built into it. I chose File Manager Plus from the Google Play store. I installed it and navigated to the Home page which looks like:</p>\n<p><img src=\"https://i0.wp.com/cathieleblanc.com/wp-content/uploads/Screenshot_20201227-184317.png?resize=512%2C1024&ssl=1\" alt=\"\" /></p>\n<p>Click on the Remote icon at the bottom of the screen. Choose Add a remote location and you will be prompted for the type of remote location you want to add. Choose SMB and enter \u201c//cathienas/shared\u201d again replacing \u201ccathienas\u201d and \u201cshared\u201d as needed. Enter your username and password using the ones you set up on your Raspberry Pi. You will now have access to the shared folder on the Pi RAID on your phone.</p>\n<p>As I said, this was a really fun project. And I have a networked location to store the photos that I take. I\u2019m still figuring out the work flow but it\u2019s certain to be more convenient than the non-networked work flow I have been using up until now.</p>",
"text": "Like a lot of people, I am spending this Christmas/New Year holiday by myself because of COVID-19. It really hasn\u2019t been a bad thing but I did want to plan something different for me to do on Christmas Day. I decided to try to build a network accessible storage (NAS) server to use primarily for my photos. I wanted to create storage that would be accessible from any of my devices while I\u2019m at home. I have a Dropbox subscription that works really well for this for most of my files but I have chosen not to store my photos there, primarily because there are so many of them. I could have bought an NAS server like this one but I thought it would be fun to build one myself. And it was fun!\nI decided that I would base my NAS on the Raspberry Pi, mainly because I thought it would be fun to try out a couple of different projects. For those who don\u2019t know, a Raspberry Pi is a credit card sized computer that can be customized for a variety of tasks. It provides a way to learn about and practice a lot of computing skills.\n\nFor my playing, I chose a starter kit from Vilros. As you can see in the image above, the kit comes with a Raspberry Pi board which includes a number of ways to connect to other devices (USB, Ethernet, wireless LAN, HDMI), a case to enclose the board, a couple of heat sinks that need to be installed, a power supply, a slot for a microSD card, and the NOOBS (New Out of the Box Software) installer on the card to install the Raspberry Pi operating system which is a version of Unix designed specifically for the Pi. I followed the instructions in the Quick Start Guide to insert the heat sinks. I then followed the instructions to insert the 32GB microSD card.\nIn order to work on the Raspberry PI, you need to attach a monitor and keyboard. I used the HDMI cable to connect the Pi to my TV for use as a monitor. I already owned an Eagletec wireless keyboard and mouse so I inserted the wireless dongle into one of the Pi\u2019s USB ports. I then plugged the Pi into the power supply and followed the instructions to install and configure the operating system which is called Raspbian.\nRaspbian provides a graphical desktop environment that looks a lot like Windows or macOS. But most of the work that I did in this project is easier to do using text-based commands. Raspbian provides a tool called Terminal to allow you enter these commands. It looks like this:\n\nIn doing this project, it was definitely helpful that I already know how to use the command line. It was also helpful that I have used Unix systems a lot in the past and know about most of the commands I needed to use. This helped with debugging when things looked different than how the tutorials I was using suggested they would look. But I think with persistence anyone can do this project even without previous Unix experience. If nothing else, this project is a great way to learn about Unix.\nOne of the first things I did was to rename my Raspberry Pi to something other than the default name. I called it \u201ccathienas\u201d. To rename the device, I typed the following command (without the quotes) at the command prompt in Terminal: \u201chostname cathienas\u201c.\nSo the basic idea for this project is that I wanted to have storage attached to the Pi that I can both read from and write to wirelessly from my other devices (laptops, phone, iPad). In doing research before starting the project, I decided that I wanted to set the NAS to be set up as a RAID (redundant array of inexpensive disks). This means that when I write a file to the NAS, it is copied to 2 storage devices automatically. This is helpful because if one of the devices fails for some reason, you still have a copy of all of your files. Plus, I just thought it would be fun and challenging to set up a RAID since I have never done it before.\nThe next decision that I had to make was what devices to use for the storage. My first thought was that I would use a couple of portable external hard drives (something like this). This kind of drive is powered through a USB connection but the Pi isn\u2019t powerful enough to power 2 external hard drives. So to use portable hard drives, I would also need to use a powered USB hub (something like this). A second option is to use 2 desktop hard drive that each have their own independent power supply (something like this). Note that my links to these products does not represent a recommendation for those particular options. I didn\u2019t choose either of these alternatives for storage so I can\u2019t vouch for any of those products. Instead, I chose to use 2 thumb drives for my RAID because I can see myself reusing these in other projects should I decide to abandon my NAS. So I purchased 2 SanDisk 512GB thumb drives. Note that the Raspberry Pi that I purchased only supports USB 2.0 and these thumb drives are USB 3.0. Luckily, the 3.0 standard is backward compatible to 2.0 so I was confident these drives would work.\nOnce I plugged the thumb drives into the Pi, I was ready to set up the RAID. I relied on this tutorial although I did have to change a couple of things. All of the following commands (which are in blue) should be typed at the command prompt in Terminal (see above).\nFirst, check to make sure the drives are available to the system. Type \u201clsblk\u201d (without the quotes) at the command prompt. This command means list all block devices that are part of the system. There should be 3 (unless you have added something other than what I\u2019ve talked about in this post). The first one is \u201cmmcblk0\u201d which is the microSD card that contains the Raspbian operating system. The other two should be \u201csda\u201d and \u201csdb\u201d (storage device a and storage device b).\nSecond, format sda and sdb so they can be used as part of the RAID. Type \u201csudo fdisk /dev/sda\u201d at the command prompt. \u201csudo\u201d means \u201csuperuser do\u201d and will run the fdisk command with the privileges of the superuser. \u201cfdisk\u201d mean \u201cformat disk\u201d and \u201c/dev/sda\u201d is the directory path for storage device a. Within the fdisk command, I first had to delete the current partition on the drive by typing \u201cd\u201d and then I could create a new partition by typing \u201cn\u201c. I answered all of the questions that came up by just pressing Enter (which means to use the default answer). Once all of the questions have been answered, type \u201cw\u201d to write these changes to the disk (that is, save the changes). This will cause fdisk to exit back to the command prompt.\nNext, repeat the steps above for sdb. That is, type \u201csudo fdisk /dev/sdb\u201c, delete its current partition, create a new partition with default settings, and write the changes to the disk.\nAt this point, I had to make sure my operating system was up-to-date. To do this, type \u201csudo apt update\u201c. Recall that \u201csudo\u201d means \u201csuperuser do\u201d. This time, we are running the \u201capt\u201d command which stands for \u201cadvanced package tool\u201d and we\u2019re telling it to \u201cupdate\u201d. Then type \u201csudo apt -dist upgrade\u201d which asks the advanced package tool to upgrade the distribution of the operating system. Don\u2019t forget the single minus sign in front of dist in the command.\nNow we are ready to create the RAID. To do this, we need to make the Pi see sda and sdb as one storage location that it will write every file to twice (once on sda and once on sdb). We need to install the RAID manager which is called mdadm (which stands for Multiple Disk And Device Management). Type \u201csudo apt install mdadm\u201d which I think is self-explanatory.\nNext, we need to tell mdadm to create the RAID. Type \u201csudo mdadm \u2013create \u2013verbose /dev/md0 \u2013level=mirror \u2013raid-devices=2 /dev/sda1 /dev/sdb1\u201d all in one long command. Note the double minus signs in front of create, verbose, level, and raid-devices. The command runs the RAID manager and asks it to create a new device with a root directory of /dev/md0. This device will be a mirrored device (\u2013level=mirror) which means that it will make multiple copies of anything added to it and it will have two RAID devices. The first will be the partition we created on sda (which is called sda1 and don\u2019t forget the 1 or you will get an error) and the second will be the partition we created on sdb (and again don\u2019t forget the 1). \u2013verbose asks the mdadm command to give long feedback about what it is encountering. Now Pi will see the 2 thumb drives as 1 device.\nIn Unix-based systems, we need to \u201cmount\u201d storage devices in order for the system to see them. So in order for our Raspbian operating system to see our new RAID, we need to mount /dev/md0. This will take several commands. First, type \u201csudo mkdir -p /mnt/raid1\u201c. \u201cmkdir\u201d means \u201cmake directory\u201d. A directory in Unix is the same as a folder in Windows. So this command says make a directory called \u201craid1\u201d inside the directory called \u201cmnt\u201d. The -p (that\u2019s with a single minus sign) says to make the parent directories if they don\u2019t already exist. In other words, if the directory called \u201cmnt\u201d doesn\u2019t already exist, create it. Next, type \u201csudo mkfs.ext4 /dev/md0\u201d which means make a new file system (of type extension 4 which is too complicated to explain here) for our RAID (which is called /dev/md0). Next, we will actually mount the RAID by typing \u201csudo mount /dev/md0 /mnt/raid1/\u201c. (Note the / after raid1.) So our mounted RAID will be located in the directory /mnt/raid1/. To list the contents of our mounted RAID, type \u201cls -l /mnt/raid1/\u201c. \u201cls\u201d means \u201clist\u201d and \u201c-l\u201d (with a single minus sign) means in long format. You see only the item \u201clost+found\u201d in the list and that\u2019s how you know the RAID is operational.\nWe don\u2019t want to have to manually mount the RAID every time we reboot the Raspberry Pi so we will need to add a command in the start up instructions for the file system. These start up instructions are located in a file called fstab which stands for file system table. To do this, we will use a text editor called nano. Type \u201csudo nano /etc/fstab\u201d which will open the fstab file in nano. Type the following line somewhere within the file: \u201c/dev/md0 /mnt/raid1/ ext4 defaults,noatime 0 1\u201c. This adds the RAID to the file system table. To exit nano, type CTRL-x and answer the question about overwriting the file with \u201cy\u201c.\nNow to make sure the RAID mounts correctly on start up, type \u201csudo mdadm \u2013detail \u2013scan | sudo tee -a /etc/mdadm/mdadm.conf\u201c. This command uses the pipe operator | to feed the results of \u201csudo mdadm \u2013detail \u2013scan\u201d (with double minus signs in front of detail and scan) into \u201csudo tee -a /etc/mdadm/mdadm.config\u201d (with single minus sign in front of a). So this command puts the details of the current mdadm set up into the configuration file for mdadm. When the Raspberry Pi reboots, that configuration file will set up mdadm as it is set up now.\nReboot the Raspberry Pi and the RAID is ready to use.\nBut how do we access files on the RAID from other devices on the network? We will use the SMB protocol but since that protocol is not installed by default on the Pi, we will need to install it. The protocol is known as Samba on the Pi. So to install the protocol, type \u201csudo install samba samba-common-bin\u201c. Answer any questions with the default answer.\nWe have to make sure that we have a shared space on the RAID that is accessible to people on our network. We will make a directory to be shared by typing \u201csudo mkdir /mnt/raid1/shared\u201c. Note that the directory name \u201cshared\u201d can be any name that you choose. There is nothing magic about the word \u201cshared\u201d. Now we need to make that directory available for everyone to read, write, and execute (or run programs). Type \u201csudo chmod 777 /mnt/raid1/shared\u201c. \u201cchmod\u201d is the command to change file permissions in Unix. One of my favorite parts of the Unix OS is how it handles file permissions. There are three groups of people that you can give permissions to for each file: the person who owns the file, people in the file\u2019s group, and everyone else. For each of these 3 groups, you can give read (can open and view the file), write (can edit, modify, and delete the file), and execute (can run the file if it is a script or program of some sort) access. Typically, the permissions for the owner of the file are set to rwe which means that person can read, write, and execute the file. This would be written as 111. If for some reason, the owner did not have access to execute the file, their permission would be rw- or 110. In binary, 111 is 7 and 110 is 6. So a 7 in the first position of the number after \u201cchmod\u201d means that the owner has read, write, and execute access to this directory and the files within the directory. The second 7 means anyone in the group also has read, write, and execute access. The third 7 means everyone else has read, write, and execute access as well. Knowing binary helps here: 7=111=rwe, 6=110=read and write, 5=101=read and execute, 4=100=read only, 3=011=write and execute, 2=010=write only, and 1=001=execute only. Isn\u2019t that cool?\nNext, we need to tell Samba to make the RAID shared directory available on the network. To do that, we will change the Samba configuration file using nano. Type \u201csudo nano /etc/samba/smb.conf\u201c. Scroll to the bottom of the file using the arrow keys and type each of the following on a separate line: \u201c[shared]\u201c, \u201cpath = /mnt/raid1/shared\u201c, \u201cwriteable=Yes\u201c, \u201cmask=0777\u201c, \u201cdirectory mask=0777\u201c, \u201cpublic=no\u201c. Exit the file by typing CTRL-x and answer \u201cy\u201d to the question about overwriting the file. Now restart Samba by typing \u201csudo systemctl restart smbd\u201c. This command uses the systemctl tool to restart the SMB daemon which is the software that runs the SMB protocol.\nThe default user on the Raspberry Pi is called pi. We have to give that user a password to access the Samba share from other devices. Type \u201csudo smbpassword -a pi\u201c. \u201c-a\u201d (with a single minus sign) means add the user \u201cpi\u201d to the list of smbpasswords. You will be prompted for a password which you will need to enter twice.\nHow do we now access this shared space on the RAID from other devices? If you\u2019re using a Windows computer, you will map a network drive to the RAID. In Windows 10, you do this by opening File Explorer and navigating to \u201cThis PC\u201d. At the top of the window, you will see \u201cComputer\u201d as shown below:\n\n\nClick on \u201cComputer\u201d and then click on \u201cMap Network Drive\u201d. You will see the following dialog box:\n\nChange the drive to whichever letter you want and then type \u201c\\\\cathienas\\shared\u201d in the Folder box but replace \u201ccathienas\u201d with whatever you named your Pi and \u201cshared\u201d with whatever you called your shared folder. Be sure to check the box that says \u201cConnect using different credentials\u201d. You will then be prompted to enter the username (probably \u201cpi\u201d) and password that you created for Samba. A new window will open that contains the contents of your shared folder on your Raspberry Pi RAID and you can treat it like any other folder on your Windows 10 computer.\n\nTo access the shared folder on my Android phone, I downloaded a new File Manager app that has the SMB protocol built into it. I chose File Manager Plus from the Google Play store. I installed it and navigated to the Home page which looks like:\n\nClick on the Remote icon at the bottom of the screen. Choose Add a remote location and you will be prompted for the type of remote location you want to add. Choose SMB and enter \u201c//cathienas/shared\u201d again replacing \u201ccathienas\u201d and \u201cshared\u201d as needed. Enter your username and password using the ones you set up on your Raspberry Pi. You will now have access to the shared folder on the Pi RAID on your phone.\nAs I said, this was a really fun project. And I have a networked location to store the photos that I take. I\u2019m still figuring out the work flow but it\u2019s certain to be more convenient than the non-networked work flow I have been using up until now."
},
"name": "Raspberry Pi Christmas Project",
"post-type": "article",
"_id": "17340730",
"_source": "2782"
}
My emotional support pug, Eliza 🐶
{
"type": "entry",
"published": "2020-12-28T05:54:14+00:00",
"url": "https://twitter.com/cleverdevil/status/1343435065347477506",
"photo": [
"https://pbs.twimg.com/media/EqTXEoQXAAA-de_.jpg"
],
"content": {
"text": "My emotional support pug, Eliza \ud83d\udc36"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/744804831064317952/W-gMo7AO.jpg"
},
"post-type": "photo",
"_id": "17339800",
"_source": "2773"
}
In order to free yourself from the surveillance capitalism of your TV, you’ll need to find a streaming device that respects your privacy!
Good luck. As far as I can tell, none of the major players do (Roku, Google, Amazon). Apple TV is overpriced, but Apple cares about privacy.
Why? Because modern TVs are part of the surveillance capitalism machine. Why can you buy an amazing TV for peanuts? Because the vendors sell them at cost so they can trac...
{
"type": "entry",
"published": "2020-12-28T05:24:25+00:00",
"url": "https://twitter.com/cleverdevil/status/1343427563855650816",
"quotation-of": "https://twitter.com/cleverdevil/status/1343425421292040192",
"content": {
"text": "In order to free yourself from the surveillance capitalism of your TV, you\u2019ll need to find a streaming device that respects your privacy!\n\nGood luck. As far as I can tell, none of the major players do (Roku, Google, Amazon). Apple TV is overpriced, but Apple cares about privacy."
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/744804831064317952/W-gMo7AO.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/cleverdevil/status/1343425421292040192": {
"type": "entry",
"published": "2020-12-28T05:15:54+00:00",
"url": "https://twitter.com/cleverdevil/status/1343425421292040192",
"content": {
"text": "Why? Because modern TVs are part of the surveillance capitalism machine. Why can you buy an amazing TV for peanuts? Because the vendors sell them at cost so they can track you and sell your information to the highest bidder.\n\nStick it to the man. Don\u2019t connect your TV to Wi-Fi!\ntwitter.com/cleverdevil/st\u2026",
"html": "Why? Because modern TVs are part of the surveillance capitalism machine. Why can you buy an amazing TV for peanuts? Because the vendors sell them at cost so they can track you and sell your information to the highest bidder.\n\nStick it to the man. Don\u2019t connect your TV to Wi-Fi!\n<a href=\"https://twitter.com/cleverdevil/status/1343423517551853569\">twitter.com/cleverdevil/st\u2026</a>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/744804831064317952/W-gMo7AO.jpg"
},
"post-type": "note"
}
},
"_id": "17339551",
"_source": "2773"
}
Why? Because modern TVs are part of the surveillance capitalism machine. Why can you buy an amazing TV for peanuts? Because the vendors sell them at cost so they can track you and sell your information to the highest bidder.
Stick it to the man. Don’t connect your TV to Wi-Fi!
Got the kids some inexpensive TVs for Christmas. They’re “smart” TVs powered by Roku. I hooked them up, connected them to Wi-Fi, upgraded their OS, and set them to ...
{
"type": "entry",
"published": "2020-12-28T05:15:54+00:00",
"url": "https://twitter.com/cleverdevil/status/1343425421292040192",
"quotation-of": "https://twitter.com/cleverdevil/status/1343423517551853569",
"content": {
"text": "Why? Because modern TVs are part of the surveillance capitalism machine. Why can you buy an amazing TV for peanuts? Because the vendors sell them at cost so they can track you and sell your information to the highest bidder.\n\nStick it to the man. Don\u2019t connect your TV to Wi-Fi!"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/744804831064317952/W-gMo7AO.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/cleverdevil/status/1343423517551853569": {
"type": "entry",
"published": "2020-12-28T05:08:20+00:00",
"url": "https://twitter.com/cleverdevil/status/1343423517551853569",
"content": {
"text": "Got the kids some inexpensive TVs for Christmas. They\u2019re \u201csmart\u201d TVs powered by Roku. I hooked them up, connected them to Wi-Fi, upgraded their OS, and set them to automatically switch to the Apple TV input when powered on. I then immediately blocked them both from my network."
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/744804831064317952/W-gMo7AO.jpg"
},
"post-type": "note"
}
},
"_id": "17339494",
"_source": "2773"
}
Got the kids some inexpensive TVs for Christmas. They’re “smart” TVs powered by Roku. I hooked them up, connected them to Wi-Fi, upgraded their OS, and set them to automatically switch to the Apple TV input when powered on. I then immediately blocked them both from my network.
{
"type": "entry",
"published": "2020-12-28T05:08:20+00:00",
"url": "https://twitter.com/cleverdevil/status/1343423517551853569",
"content": {
"text": "Got the kids some inexpensive TVs for Christmas. They\u2019re \u201csmart\u201d TVs powered by Roku. I hooked them up, connected them to Wi-Fi, upgraded their OS, and set them to automatically switch to the Apple TV input when powered on. I then immediately blocked them both from my network."
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/744804831064317952/W-gMo7AO.jpg"
},
"post-type": "note",
"_id": "17339422",
"_source": "2773"
}
{
"type": "entry",
"author": {
"name": "Lillian",
"url": "http://anomalily.net/",
"photo": null
},
"url": "http://anomalily.net/2021-goals/",
"published": "2020-12-27T17:58:56+00:00",
"content": {
"html": "<p>Goals this year include possible Croatian citizenship, and maybe going to grad school.</p>",
"text": "Goals this year include possible Croatian citizenship, and maybe going to grad school."
},
"name": "2021 Goals: Keep my Health Insurance, Get a New Passport",
"post-type": "article",
"_id": "17339124",
"_source": "199"
}
I don't like gravy! 😆 https://t.co/xrI3RGVu7N
Without saying your age, post your favorite film that released the year you turned 18.
{
"type": "entry",
"published": "2020-12-28T04:27:00+00:00",
"url": "https://twitter.com/jaredcwhite/status/1343413114809720835",
"video": [
"https://video.twimg.com/tweet_video/EqTDGwUUcAAfxM5.mp4"
],
"quotation-of": "https://twitter.com/filmdaze/status/1343283357321474051",
"content": {
"text": "I don't like gravy! \ud83d\ude06 https://t.co/xrI3RGVu7N"
},
"author": {
"type": "card",
"name": "Jared White",
"url": "https://twitter.com/jaredcwhite",
"photo": "https://pbs.twimg.com/profile_images/1342524575876218881/buD8P1lX.jpg"
},
"post-type": "video",
"refs": {
"https://twitter.com/filmdaze/status/1343283357321474051": {
"type": "entry",
"published": "2020-12-27T19:51:24+00:00",
"url": "https://twitter.com/filmdaze/status/1343283357321474051",
"content": {
"text": "Without saying your age, post your favorite film that released the year you turned 18."
},
"author": {
"type": "card",
"name": "Film Daze",
"url": "https://twitter.com/filmdaze",
"photo": "https://pbs.twimg.com/profile_images/1322942044038377479/oRGxDjlt.jpg"
},
"post-type": "note"
}
},
"_id": "17339064",
"_source": "2773"
}
When the person you followed randomly years ago manages to make defending Woody Allen and Jeffrey Toobin their 2020 topics of choice, that’s a good sign to unfollow. #smdh
{
"type": "entry",
"published": "2020-12-28T03:36:50+00:00",
"url": "https://twitter.com/karabaic/status/1343400489967255552",
"content": {
"text": "When the person you followed randomly years ago manages to make defending Woody Allen and Jeffrey Toobin their 2020 topics of choice, that\u2019s a good sign to unfollow. #smdh",
"html": "When the person you followed randomly years ago manages to make defending Woody Allen and Jeffrey Toobin their 2020 topics of choice, that\u2019s a good sign to unfollow. <a href=\"https://twitter.com/search?q=%23smdh\">#smdh</a>"
},
"author": {
"type": "card",
"name": "jk",
"url": "https://twitter.com/karabaic",
"photo": "https://pbs.twimg.com/profile_images/1256785873384861696/QfRzUvne.jpg"
},
"post-type": "note",
"_id": "17338592",
"_source": "2773"
}
Sounds
and knowledge
pulse up
in opposite directions
from the other
side
#smallpoems
#ukulele
{
"type": "entry",
"published": "2020-12-28T01:24:42+0000",
"url": "https://quickthoughts.jgregorymcverry.com/2020/12/28/sounds-and-knowledgepulse-upin-opposite-directionsfrom-the",
"category": [
"smallpoems",
"ukulele"
],
"syndication": [
"https://twitter.com/jgmac1106/status/1343367526223384578"
],
"content": {
"text": "Sounds\n\n and knowledge\n\n\u00a0\u00a0pulse up\n\nin opposite directions\n\n\u00a0\u00a0\u00a0from the other \n\nside\n#smallpoems\n#ukulele",
"html": "Sounds<br />\n and knowledge<br />\n\u00a0\u00a0pulse up<br />\nin opposite directions<br />\n\u00a0\u00a0\u00a0from the other <br />\nside<br /><a href=\"https://quickthoughts.jgregorymcverry.com/tag/smallpoems\" class=\"p-category\">#smallpoems</a><br /><a href=\"https://quickthoughts.jgregorymcverry.com/tag/ukulele\" class=\"p-category\">#ukulele</a>"
},
"author": {
"type": "card",
"name": "Greg McVerry",
"url": "https://quickthoughts.jgregorymcverry.com/profile/jgmac1106",
"photo": "https://quickthoughts.jgregorymcverry.com/file/2d6c9cfed7ac8e849f492b5bc7e6a630/thumb.jpg"
},
"post-type": "note",
"_id": "17338065",
"_source": "1300"
}
Turns out it's much more fun to talk to random strangers all over the internet than to talk to the people you actually know in real life. 😳
😜
People who deactivated Facebook in a study were happier afterward, reporting higher levels of life satisfaction and lower levels of depression and anxiety.
That change ...
{
"type": "entry",
"published": "2020-12-28T02:39:36+00:00",
"url": "https://twitter.com/jaredcwhite/status/1343386085464956930",
"quotation-of": "https://twitter.com/bopinion/status/1342897485702983694",
"content": {
"text": "Turns out it's much more fun to talk to random strangers all over the internet than to talk to the people you actually know in real life. \ud83d\ude33\n\n\ud83d\ude1c"
},
"author": {
"type": "card",
"name": "Jared White",
"url": "https://twitter.com/jaredcwhite",
"photo": "https://pbs.twimg.com/profile_images/1342524575876218881/buD8P1lX.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/bopinion/status/1342897485702983694": {
"type": "entry",
"published": "2020-12-26T18:18:05+00:00",
"url": "https://twitter.com/bopinion/status/1342897485702983694",
"photo": [
"https://pbs.twimg.com/media/EqLuJZJW4AI_mIA.jpg"
],
"content": {
"text": "People who deactivated Facebook in a study were happier afterward, reporting higher levels of life satisfaction and lower levels of depression and anxiety. \n\nThat change is equal to about 25-40% of the beneficial effect typically reported for psychotherapy trib.al/pt2iTCx",
"html": "People who deactivated Facebook in a study were happier afterward, reporting higher levels of life satisfaction and lower levels of depression and anxiety. \n\nThat change is equal to about 25-40% of the beneficial effect typically reported for psychotherapy <a href=\"https://trib.al/pt2iTCx\">trib.al/pt2iTCx</a>"
},
"author": {
"type": "card",
"name": "Bloomberg Opinion",
"url": "https://twitter.com/bopinion",
"photo": "https://pbs.twimg.com/profile_images/991778099397320705/6LWXR6MS.jpg"
},
"post-type": "photo"
}
},
"_id": "17338013",
"_source": "2773"
}
Sounds
and knowledge
pulse up
in opposite directions
from the other
side
#smallpoems
#ukulele (quickthoughts.jgregorymcverry.com/s/2d19jx)
{
"type": "entry",
"published": "2020-12-28T01:25:51+00:00",
"url": "https://twitter.com/jgmac1106/status/1343367526223384578",
"content": {
"text": "Sounds\n and knowledge\n\u00a0\u00a0pulse up\nin opposite directions\n\u00a0\u00a0\u00a0from the other \nside\n#smallpoems\n#ukulele (quickthoughts.jgregorymcverry.com/s/2d19jx)",
"html": "Sounds\n and knowledge\n\u00a0\u00a0pulse up\nin opposite directions\n\u00a0\u00a0\u00a0from the other \nside\n<a href=\"https://twitter.com/search?q=%23smallpoems\">#smallpoems</a>\n<a href=\"https://twitter.com/search?q=%23ukulele\">#ukulele</a> (<a href=\"https://quickthoughts.jgregorymcverry.com/s/2d19jx\">quickthoughts.jgregorymcverry.com/s/2d19jx</a>)"
},
"author": {
"type": "card",
"name": "https://jgregorymcverry.com",
"url": "https://twitter.com/jgmac1106",
"photo": "https://pbs.twimg.com/profile_images/565227710104883200/g4MDcTnx.jpeg"
},
"post-type": "note",
"_id": "17337141",
"_source": "2773"
}