There is a new version of Reeder with iCloud sync and more.
From GitHub
Nextra - Nextra is a Next.js and Markdown (MDX) based site generator. 0 line of code needed.
wp-latte - This mu-plugin gives theme and plugin developers availability to write templates with Nette Latte v2.5.
PHP CS Fixer - The PHP Coding Standards Fixer (PHP CS Fixer) tool fixes your code to follow standards; whether you want to follow PHP coding standards as defined in the PSR-1, PSR-2, etc., or other community driven ones like the Symfony one. You can also define your (team's) style through configuration.
Javascript editors
Editor.js Next generation block styled editor. Free. Use for pleasure.
EasyMDE - Markdown Editor - A simple, beautiful, and embeddable JavaScript Markdown editor. (fork of SimpleMDE)
SimpleMDE - A simple, beautiful, and embeddable JavaScript Markdown editor.
Cascadia Code Font - This is a fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal.
FiraCode - Free monospaced font with programming ligatures
IPFS
Exploring IPFS a peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open.
IPFS powers the Distributed Web https://ipfs.io/
brew cask install ipfs
Logitech Folio Touch for iPad Air (4tg gen)
Logitech Folio Touch Backlit keyboard case with trackpad for iPad Pro® 11-inch and iPad Air® (4th gen)
There are a lot of popular Node.js modules for requestiong data with HTTP or HTTPS (e.g. axios, got, node-fetch), but you don't need them! You can easily made HTTP/HTTPS requests in Node.js with http.get or https.get:
import https from"https";
module.exports=(params, postData)=>newPromise((resolve, reject)=>{const req = https.request(params,(res)=>{// reject on bad statusif(res.statusCode <200|| res.statusCode >=300){returnreject(newError('statusCode='+ res.statusCode));}// read datalet body =[];
res.on('data',chunk=>{
body.push(chunk);});
res.on('end',()=>{try{
body = Buffer.concat(body).toString();}catch(e){reject(e);}resolve(body);// submit data});});
req.on('error',(err)=>{reject(err);});if(postData){
req.write(postData);}
req.end();// close request});
MHO-C401 is new (2020) MMC E-Ink Screen Smart Bluetooth Thermometer Hygrometer BT2.0 Temperature Humidity Sensor from Xiaomi. You can order yours on Gearbest or Aliexpress.
hcitool is Linux tool for monitoring and configuring Bluetooth devices. It is aptly named hcitool as it communicates via a common HCI (Host Controller Interface port to your bluetooth devices. You can utilize the utility to scan for devices and send commands/data for standard Bluetooth and Bluetooth Low Energy.
First check, if your hcitool can see your device with hcitool dev command, then you can start lescan for other devices arroud.
As you can see from list my MHO-C401 have A4:C1:38:4B:B7:FF MAC address.
Lets read some data!
We will use a Python to read the data from BLE - there are some great libraries for that, like bluepy. Bluepy provide a comprehensive API to allow access to Bluetooth Low Energy devices.
Each BLE devices provide Services and Characteristics. Services are used to break data up into logic entities, and contain specific chunks of data called characteristics. A service can have one or more characteristics, and each service distinguishes itself from other services by means of a unique numeric ID called a UUID, which can be either 16-bit (for officially adopted BLE Services) or 128-bit (for custom services).
The Python code below will generate a list of all the available services and characteristics on the our BLE device.
from bluepy import btle
device = btle.Peripheral()try:print("Connecting to device...")
device.connect("A4:C1:38:4B:B7:FF")# need change your MAC address here for service in device.getServices():print(str(service))for ch in service.getCharacteristics():if ch.supportsRead():print(" {}".format(ch))print(" > UUID: ", ch.uuid)print(" > HANDLE: ",hex(ch.getHandle()))print(" > SUPPORTS: ", ch.propertiesToString())if(ch.supportsRead()):try:print(" > RESULTS ",repr(ch.read()))except BTLEException as e:print(" > ERROR: ", e)print()finally:
device.disconnect()
Then you can read first device characteristic, with follow code:
from bluepy import btle
device = btle.Peripheral()try:
device.connect("A4:C1:38:4B:B7:FF")# read by UUID
deviceName = device.getCharacteristics(uuid="00002a00-0000-1000-8000-00805f9b34fb")[0].read()print("Device name: ", deviceName.decode('ascii'))# or by handle print("Firmware: ", device.readCharacteristic(0x12).decode('ascii'))print("Hardware Revision: ", device.readCharacteristic(0x14).decode('ascii'))print("Manufacturer Name: ", device.readCharacteristic(0x18).decode('ascii'))# read battery levelprint("Battery level: {}%".format(ord(device.readCharacteristic(0x1b))))# read device unitsif(device.readCharacteristic(0x33)==b'\x00'):print('Units: °C')if(device.readCharacteristic(0x33)==b'\x01'):print('Units: °F')finally:
device.disconnect()
Reading temperature and humidity
For reading temperature and humidity you have to subscribe notifications for UUID = EBE0CCC1-7A0A-4B0C-8A1A-6FF2997DA3A6 - there are 3 bytes of data. Notifications are processed by creating a “delegate” object and registering it with the Peripheral.
Sometimes you just won’t be able install latest version of any program and need
some older (e.g. PHP 5.6.1 won’t work and you need install at least 5.6.0 and
getting your work done). As you know all brew formulas are GIT repos, you
can swith to older version easly:
cd /usr/local/Homebrew/Library/Taps/homebrew
There are homebrew-cask, homebrew-core and homebrew-services dirs:
cd homebrew-core
git log --pretty="%h - %s" -10
71b2069 - Update to PHP 5.5.18
b8aeb54 - Use homebrew's openssl for IMAP
f0d721a - php56: improve phpdbg logic
0dc3f1c - Update to PHP 5.6.1
908fedd - Update to Blitz 0.8.12
4801697 - Updates formula for WP CLI to version 0.17.0
00560f3 - Upgrade php*-swoole to 1.7.5
8cbd369 - Updated PHP_CodeSniffer
a81eba6 - update pecl_http to 2.1.2
6a88856 - Add HEAD url for composer
Then just switch
git checkout 908fedd
And then run brew install php56 and older version PHP will be installed. Procedure can be used for any formulas.
Reset everything back
PS: you can always reset everything back to normal with follow command
There is really short and briliant script for create backup of indexes queries. This code iterate over all collections and create backup of createIndex() queries.