Plutonic Rainbows

Instagram Sharing

Looks like Instagram have removed the option to share with the iOS share sheet and consequently the ability to run shortcuts from within their app. It’s still seemingly available if you try with Safari. Now when you try to share, you are presented with a list of the people you follow and nothing more.

Current Listening & Reading

At the moment, I am listening to Cyclob’s Sulphur-Tarot-Garden, the excellent In, Demons, In! By Jim O’Rourke & CM von Hausswolff.

I’m also enjoying some (fairly) old Vaporwave from Midnight Television and Palm Grove Galleria. All good albums that I totally recommend.

I’m still reading the new Thomas Harris novel, Cari Mora. I’m currently waiting for a signed US edition as well as a rare UK slipcase edition from Goldsboro books that was limited to 150 copies. This was out of stock quickly but I see Goldsboro have managed to find some more copies and are now offering them at twice what was originally asked.

Theresa May Resigns

From her departing speech:

“Compromise is not a dirty word. Life depends on compromise.”

Fennesz - Agora

Four tracks of stunning beauty and life-affirming sounds to get lost in. Available from tomorrow here.

Apple Credit Card

Apple getting into credit cards. I feel deeply uneasy about this but I don’t know exactly why. I think it’s an uncomfortable look for them but hey, it’s yet another potential revenue stream and money is what matters - don’t let Apple ever convince you of anything else - despite all the empty platitudes and virtue-signalling at their events. Also don’t be fooled by the Apple privacy hype. Goldman Sachs are apparently being trusted with all the information.

The Verge:

Similarly, Apple’s approach to data privacy differs from other credit card companies: Apple is banking on Goldman Sachs to secure users’ credit card data, which also means that Apple won’t be the one held responsible in the event of a breach. Again, Goldman Sachs declined to comment.

I don’t think this is going to be anywhere near as exclusive as all the Apple fans would like - despite the Titanium design. American Express and Chase Sapphire (among others) are where the (relative) exclusivity lies with ownership fees as much as $550 just to own the card for one year. This is more like a tier 2 card rather than a 4 or 5 offering.

In addition, metal cards are very much a USA/Canada thing; Europe not so much. Amex in the UK don’t offer any cards in metal despite the sky-high ownership fees. I would not be surprised to see this launch in the UK as a plastic version. Hope I’m wrong as it will probably force Amex to up its game.

Introduction to Loops

A simple script for displaying how loops work.

i = 0

numbers = []

while i < 8:
	print "At the top i is now %d" % i
	i = i + 1
	print "Numbers now:", numbers
	print "Number at the bottom is now: %d" % i
print "The numbers:"

for num in numbers:
	print num

Salary Calculator 2

Here is a slightly modified script for the Salary Calculator. This time we are writing the result to a text file. Some folks over on the Python forum helped me with target.write(str(round(total, 2)).encode()) as I could not figure a way to round the decimal place correctly.

# -*- encoding: utf-8 -*-

from sys import argv
script, answer = argv

def salary(weeks, payments):
	return (weeks * payments)

weeks = (float(raw_input("Weeks: ")))
payments = (float(raw_input("Payments: ")))

total = salary(weeks, payments)

target = open(answer, 'w')

target.write(str(round(total, 2)).encode())


Salary Calculator

This script uses quite a few new things including a function. It calculates two user input values and then gives an answer depending on the outcome. The user is asked for the number of weeks and the payment each week.

# -*- encoding: utf-8 -*-

def salary(weeks, payments):
	return (weeks * payments)

weeks = (float(raw_input("Weeks: ")))
payments = (float(raw_input("Payments: ")))

total = salary(weeks, payments)

print "\nThe total is {0:.2f}".format (total)

if total < 7999 or total == 7999:
	print "That's not good enough.\n"
	print "You are on target.\n"

The script also uses float and format for currencies and values that use decimal places. Don’t forget to declare -*- encoding: utf-8 -*- at the beginning of the script.

Data Length

These few lines of code are useful to calculate the size of a file. Later, we’ll combine it with another script.

from sys import argv
script, filename = argv

a1 = open(filename)
data =

print "The size of the file is %r bytes." % len (data)


In the last script, I mentioned about condensing the lines down. It’s actually very simple to do. Just insert a semi-colon between lines.

For example:

from sys import argv script, filename becomes from sys import argv;script, filename

If you apply this in your scripts, things become much more manageable to read. Here is the previous script with the new additions.

from sys import argv;script, file_name = argv

print "Hello. let's erase the contents of the file called: '%s'." % file_name
print "If you do not want this, hit CTRL-C."


print "Opening file..."

target = open(file_name, 'w');target.truncate()

print "Contents now erased."

line1 = raw_input("Line 1: ");line2 = raw_input("Line 2: ");line3 = raw_input("Line 3: ")

print "Writing three lines..."


print "Done.";print "Let's close the file."


print "All finished."

As you can see, most of the time is saved with the part where the script asks for raw_input and when using target.write.