I thought I would take a look at Django, a high-level Python Web framework. It may prove useful going forward.
Albums 2019
December 1, 2019
I listened to quite a lot of stuff this year. These were my favourite things in 2019. The Boards of Canada entry is a compilation of other artists they curated for the Warp 30th Anniversary so it doesn't really belong here but was extremely good.
Some are albums from decades past that I rediscovered buried in my collection - musing on memory and in the process, unearthing some things I'd rather have forgotten.
- Mikron - Severance
- The Caretaker - Everywhere At The End Of Time (Stage 6)
- Fennesz - Agora
- 5HTTP - Since Then
- Duran Duran - The Wedding Album
- New Dreams Ltd (Vektroid) - Initiation Tape
- ... - No Title
- Pino Donnagio - Dressed To Kill
- Kim Carnes - Mistaken Identity
- A Guy Called Gerald - Black Secret Technology
- Midnight Television - Midnight Television
- Klaus Schulze - Silhouettes
- Barry De Vorzon - Night Of The Creeps
- Phenomena - Phenomena
- The Caretaker - A Stairway To The Stars
- Steely Dan - Gaucho
- Moon King - Hamtramck '16
- Konx-om-Pax - Ways Of Seeing
- Blue Chemise - Daughters Of Time
- Mort Garson - Mother Earth's Plantasia
- Virginia Astley - Hope In A Darkened Heart
- Coil - Theme From The Gay Man's Guide To Safer Sex
- Boards of Canada - Societas X Tape
- Julio Iglesias - Non Stop
- Cyclobe - Sulphur-Tarot-Garden
- Mark Isham - The Beast
- Tangerine Dream - Logos
- Basil Kirchin - Quantum
- Jim O' Rourke & CM von Hausswolf - In, Demons, In!
- Black Zone Magic Chant - Voyage Sacrifice
- HTRK - Over The Rainbow
- Maurice Jarre - After Dark, My Sweet
- Rafael Anton Irisarri - Solastalgia
- Mystery - Mystery
- Chris Spheres & Paul Voudouris - Passage
- David Sylvian - Brilliant Trees
- Plaid - Polymer
- William Basinski - On Time Out Of Time
- Rosie Vela - Zazu
- Shell Money - Family Tapes 89-93
- Xvarr - Echoes of Time
Brave's Privacy-First Browser
November 17, 2019
Another company promising privacy in a browser. I don't see what's so different about this compared to Firefox or Safari. Personally, I just use AdGuard which sits at the OS level meaning you are not tied to any one browser.
I think the Basic Attention Tokens that apparently run through blockchains is an interesting idea but will it take off? People don't like paying for things - that's the reason Facebook and Twitter have huge market share.
Chanel Bois Des Iles
November 16, 2019
A very refined sandalwood fragrance but the opening is just too feminine for me.
Autumn & Winter Fragrances
November 14, 2019
In rotation for this Autumn/Winter are some things that you might like. These are all fantastic fragrances that I totally recommend.
- Tom Ford Noir Extreme
- Valentino Uomo Noir Absolu
- Dior Homme Parfum
- Carner Barcelona El Born
- Parfum Prissana Ma Nishtana
And if you can still find it, the EDT of Chanel Coromandel.
Wired reviews the Pixel 4
October 22, 2019
Jeffrey Van Camp writing for Wired:
For once, Google’s latest phone falls short. Its predecessor is just as good ... and cheaper
Watchmen
October 21, 2019
HBO’s Watchmen is a companion-piece to the Watchmen comics by Alan Moore and Dave Gibbons, set in present-day Tulsa, thirty years after the events of the comics.
First episode is quite compelling. Visually stunning and rewards a repeat viewing. There are a lot of great details you'll miss the first time. If you've seen it already and want a recap, there is one here.
HBO must have spent a fortune on this show. Looking forward to the remaining eight episodes. It will be interesting to see how this all unfolds.
Blockchain in Python
October 20, 2019
A script that gets a basic blockchain up and running.
import hashlib as hasher
class Block:
def __init__(self, index, timestamp, data, previous_hash):
self.index = index
self.timestamp = timestamp
self.data = data
self.previous_hash = previous_hash
self.hash = self.hash_block()
def hash_block(self):
sha = hasher.sha256()
sha.update(str(self.index) +
str(self.timestamp) +
str(self.data) +
str(self.previous_hash))
return sha.hexdigest()
import datetime as date
def create_genesis_block():
# Manually construct a block with
# index zero and arbitrary previous hash
return Block(0, date.datetime.now(), "Genesis Block", "0")
def next_block(last_block):
this_index = last_block.index + 1
this_timestamp = date.datetime.now()
this_data = "Hey! I'm block " + str(this_index)
this_hash = last_block.hash
return Block(this_index, this_timestamp, this_data, this_hash)
Create the blockchain and add the genesis block
blockchain = [create_genesis_block()]
previous_block = blockchain[0]
How many blocks should we add to the chain
after the genesis block
num_of_blocks_to_add = 20
Add blocks to the chain
for i in range(0, num_of_blocks_to_add):
block_to_add = next_block(previous_block)
blockchain.append(block_to_add)
previous_block = block_to_add
# Tell everyone about it!
print "Block #{} has been added to the blockchain!".format(block_to_add.index)
print "Hash: {}\n".format(block_to_add.hash)
Security Code Autofill
October 20, 2019
Apple engineer explains the story about how this small but extremely useful function came into being.
Good Battery Management
October 19, 2019
Some sound advice from Wired UK:
A phone battery is made up of two layers, one of graphite and the other of lithium cobalt oxide. Energy releases when lithium ions move from the graphite layer to the lithium cobalt oxide layer. Charging up a battery shifts the lithium ions back the other way, preparing the process to start again.
What you this tells us is that the real sweet spot for a battery is a 50 per cent charge – when half of the battery’s moveable lithium ions are in the lithium cobalt oxide layer and the other half in the graphite layer. This equilibrium puts the least amount of strain on the lithium ions that power your battery, and basically extends the number of charge cycles it can take before degrading. Therefore it’s best to keep your your battery between 20 and 80 per cent, and regularly top up with partial charges.
The article also talks about badly engineered apps and the downside of trickle charging - which is what I was doing with the Belkin.