MuSh: Multi-Shebang Scripting

MuSh is a super simple meta-scripting language for parsing multiple shebang statements that invoke different interpretors. Why would you want to do this? I have no idea. Although there is no real reason to do this you might want to just for the fun of it.

How it works
MuSh is python based and has a linear approach, it splits up the script into smaller single-language scripts then runs them one after the other. Variables are transported between scripts using a register file (msb_register.json) and hook-in functions which add code to the scripts for interacting with the register. There are two important syntaxes (syntaces?) for separating languages, the first is:

#!! <interpretor> <passed-variables …>

A very simple Guess my Number game that uses Bash, Python and Common Lisp.

A little Guess my Number game that uses Shell, Python and Common Lisp. This example can be found at ‘examples/guess_my_num.msb‘ and uses the Vim syntax file found in the repo at editor_support/mush.vim.

The second separation syntax is for embedded use, it has open and close functionality:

#![ <interpretor> <passed-variables …>
#!] <passed-variables …>

MuSh uses the hook-in function inline_replace which replaces the embedded code with a call to a subscript (of that code). In the example below you can see how a python program might use subscripting to use Lisp. The left is the original, the right is after inline_replace has been called:

def fact_lisp(n):
        #![ clisp n
        (defun fact (n)
                (if (< n 2) 1
                (* n (fact(- n 1)))))
        (setf out (fact n))
        #!] out
        return out
def fact_lisp(n):
	# Get 'n' from register ...
	from subprocess import call
	call("./subscript_0", shell=True)
	# Get 'out' from register ...
	return out

The above code is from ‘examples/fact_speed_IO.msb from the repo. The meta-script starts with a python program that defines three factorial functions using subscripts to Python, Common Lisp, and Shell (sh). These three are called inside a python forloop 1000 times – calculating 10! each loop. Python timing methods are used giving:

 Subscripts Python Common Lisp Shell
Time (seconds) 25.4605309963 18.8304021358 21.1056499481

It also defines a pure python factorial function, which it also loops for. Next the meta-script moves to a Lisp program which has a Lisp forloop and factorial function, timing here is done with (get-internal-real-time) and (internal-time-units-per-second). Finally the meta-script moves to Shell and runs a while loop for its factorial function. These script results seem peculiar to me, Lisp shows to be slower than Python and Shell is almost as bad as subscripting:

 Scripts Python Common Lisp Shell
Time (seconds) 0.002014 0.009645 14

I find it strange that when using a python loop/timing – python was the slowest, but when using native loops/timing – python was the fastest. This could be because my implementation is incorrect somewhere or python just has great looping but bad recursive arithmetic. Maybe it’s a reflection of how python interacts with the register. I’m more confused by why shell is so slow.

WavelengthPro Version 2.0 Release Notes

*scroll down for release notes*

This is WavelengthPro, software for full-spectrum and multi-spectral photo editing. The first video shows a demo of the original version including the Kodak Ektachrome IR film Emulator, Channel Mixer and pseudo colour-mapping. It’s an example of some ways to merge infrared, visible & ultraviolet images together:

This video (and this blog post) shows multiple ways someone might edit ultraviolet images, including Luminance Mapping:

Then finally here is a start to finish edit of an ultraviolet image to apply the ‘Gold UV’ effect:

Release Notes

Fixes of V1.2 Issues:

  • Removed pop-up welcome message
  • Added default settings

New Features Added:

  • Colour-Space Mixer
  • Colour Purity Tool
  • Cloud-Balancer
  • General editing of images (hue shift/brightness/contrast/invert/etc)
  • General loading of images (non-spectral)
  • ‘Drop to Pool’ functionality for all tools
  • Drag and Drop functionality for loading images
  • Custom greyscale in Multi-Channel Mixer
  • Advanced settings to edit config file directly
  • About WLP menu
  • Examples menu with links
  • Scale Pool


  • Three image pools (Spectral, Created & General)
  • Settings now in wlpConfig.ini instead of text file
  • More basic settings options
  • More greyscale options in Multi-Channel Mixer
  • 3DLUT for Lab & LCHab colour-spaces

The RGB Universe

Three images bounded to the respective spaces: Colour, Chromaticity, and Hue.

One image bounded to three respective spaces: Colour, Chromaticity, and Hue.

The Colour-Space: RGB
Everyone is familiar with this, it is the additive model for colours that uses the primaries: red, green & blue. A 3D Model where each unique colour sits at position (x: r, y: g, z: b).

The Chromaticity-Space: RCGCBC
Some people will be familiar with this, it is RGB without luminance, the brightness is removed in a way that doesn’t effect the hue or saturation. It is referred to as rg-Chromaticity because it’s construction from RGB means only two elements are needed to represent all the chromaticity values:

Conversion to Conversion from (kind of*)
R_C= \frac{R}{R+G+B}
G_C= \frac{G}{R+G+B}
B_C= \frac{B}{R+G+B}
 R = \frac{R_C G}{G_C}
G = G
B = \frac{(1 - R_C - G_C) G}{G_C}

It will always be that R_C + G_C + B_C = 1 so by discarding the blue component we can have unique chromaticities as (x: r’, y: g’). This means that rg-Chromaticity is a 2D-Model and when converting to it from RGB we lose the luminance. So it is impossible to convert back. *An in-between for this is the colour-space rgG where the G component preserves luminance in the image.

The Hue-Space: RHGHBH
No one uses this, I just thought it would be fun to apply the same as above and extract the saturation from RCGCBC. Like RCGCBC it is a 2D Model, this seems strange because it is only representing one attribute –hue– but it is because the elements themselves have a ternary relationship (how much red, how much green, how much blue) and so to extrapolate one you must know the other two.

Conversion to 3-tuple Hue Normalise to 2D
M = \text{Max}(R,G,B)
m = \text{Min}(R,G,B)
\delta = 255/(M-m)
R_h = (R-m) \delta
G_h = (G-m) \delta
B_h = (B-m) \delta
R_H = \frac{R_h}{R_h + G_h + B_h}
G_H = \frac{G_h}{R_h + G_h + B_h}
B_H = \frac{B_h}{R_h + G_h + B_h}

Measuring Hue Distance
The HSL colour-space records hue as a single element, H, making measuring distance as easy as \Delta H = \sqrt{{H_a}^2 - {H_b}^2} where as in rg-Hue we have two elements so \Delta H = \sqrt{({R''_a}^2 - {R''_b}^2) + ({G''_a}^2 - {G''_b}^2)} where R'' = R_H and G'' = G_H for readability. What’s interesting here is it works almost the same. Though it should be noted that on a line only two distances are equidistant to zero at one time where as in rg-Hue, on a 2D plane, there are many equidistant points around circles.

Below are images of a RGB testcard where each pixel’s hue has been measured against a colour palette (60° Rainbow) and coloured with the closest match. The rg-Hue measure has a notable consistency to it and shows more red on the right hand side than HSL, but also between the yellow and red there is a tiny slither of purple. I believe this is from the equal distance hues and the nature of looking through a list for the lowest value when there are multiple lowest values:

Hue Distance (HSL) Hue Distance (RHGHBH)
HSL Measure rg-Hue Measure

Islam: The Religion of… Logic? (3/3)

Not often described as the Religion of Logic, Islam had a golden age spanning from the 8th-12th century (CE). This is the last in a three-part post on logic and rational thought in Islam. The previous post looked at the Mu’tazilites, who believed in reason and rational thought above all else. Here we will look at applications and types of logic in Islamic law making.

Islamic Jurisprudence (fiqh)
In the modern day there are many schools of fiqh (madhhab) which can be seen in this world map. The four accepted Sunni madhhabs are Hanafi, Shafi’i, Maliki and Hanbali. The Shia’s have the Ja’fari, Isma’ili and Zaidi madhhabs. Mu’tazilism, being a system of theological interpretations, doesn’t exactly have a madhhab. This gives a rather confusing situation where you can have “Sunni Mu’tazalites” and “Shia Mu’tazalites”. This would be Mu’tazilites roughly following, for example, a Hanafi or Zaidi madhhab. The movement was predominantly of Sunnis, notably the founder Wasil ibn Ata (a good friend of Zayd ibn Ali) and scholar Abd al-Jabbar, but there were also Shi’ite Mu’tazilah like Ayatollah Hilli and the poet Ibn al-Rumi. The introduction of Mu’tazilism on the kalam of Judaism even brought about “Jewish Mu’tazilites” such as David ibn Merwan al-Mukkamas. Though again we see another area of Islam wherein Mu’tazilites are shown to be very different from standard Islamic views.

The Sources of God’s Law (Sharia)
Fiqh is the process used for creating, understanding and applying religious laws, for the main part madhhabs can be seen to follow a process of stages involving different religious sources: The main ones being the Qur’an, Sunnah, Ijma, Qiyas (Sunni) and ‘aql (Shia). The madhhabs give different weight to different sources. Hanbali, for example, give credence to the first two stages and ignore the last ones.

1 2 3 4
Sunni Qur’an Sunnah Ijma Qiyas
Shia Qur’an Sunnah Ijma ‘Aql
Mutazilah ‘Aql Qur’an Sunnah Qiyas*

ijma – meaning “consensus” either by religious authorities (Sunni), the Imam (Shia) or the Muslim community (Ibadi). Sunni’s often use the Companions of Mohammad (Sahabah) as the religious authorities, looking for their consensus in Hadiths. Using ijma is invalid for Mu’tazilah because of a rational scepticism towards peoples’ ability to make mistakes. For this same reason Hadiths are treated with caution and discarded if they contradict the Quran. Both the Shia and Mu’tazilah held critical views about the first generation of Muslims, with Ibadi also viewing Uthman and Ali as less than righteous.

Qiyas – meaning “deductive analogy” in reference to what is written in The Qur’an and Hadiths with what is being assessed. Because most Mu’tazilites follow Hanafi teachings Qiyas were often accepted, though not always. Notably Ibrahim an-Nazzam who denied Qiyas, Ijma and even Sunnah as sources for Sharia stating that only The Qur’an and ‘aql were acceptable.

‘Aql – meaning “reason” is intellect in terms of the rational faculty of the soul, deep understanding of God’s words, Imams have ‘aql. The term is slightly different when seen from Mu’tazilah doctrine as much closer to rational logic than religious understanding. Where Qiyas are analogical reason, ‘aql is pure logical reason.

A Note on Ibadi’ism
I found two completely contradictory Ibadi views on Qiyas and ijma, the first was Ibadi madhhab rejects the 3rd and 4th stages as a form of innovation (bid‘ah). This follows from the generally conservative nature of Ibadi Islam, but then in a state-published book on Ibadi’ism from Oman it says they follow 5 stages of fiqh: Qur’an, Sunnah, ijma, Qiyas & Induction (istidlal). The use of ijma can be seen to follow directly from the democratic nature of the Ibadi caliph. So I’m not sure which is the case as they both make sense for different reasons.

Sources: Initially Wikipedia then (Shia), (Sunni) then videos of scholars, academics and documentaries on Youtube (Sunni & Shia & Ibadi). The information was sporadic and sometimes contradictory so please feel free to correct me if I made mistakes.

Islam: The Religion of… Logic? (2/3)

Often described as the Religion of Violence, Islam had a golden age spanning from the 8th-12th century (CE). The previous post brushed over the Islamic Golden Age and Kalam. This post introduces a prominent theological school that lived and died in that time.

The Mu’ tazila


Paradoxical statements in the Qur’an had to be logically qualified.

Their theology was and is incredibly different to mainstream Islam for many reasons, the big ones being belief in Free Will, Atomism, rationalising discrepancies in the Qur’an and that the Qur’an itself was created. Now although the Qur’an is a primary source for knowing God’s laws – pure analytical reason gets the final say! Listed below are the five fundamental beliefs in Mu’tazilism, although monotheism and divine justice are standard for virtually all forms of Islam the interpretation makes them very important. The First Principle, as stated in the Mu’tazila text Kitab Al-Usul Al-Khamsa, is that good and evil can be known solely through human reason (without revelation) and that it is a Muslim’s duty to try and know God in this way. This principle, the autonomy of intellect, underpins the five fundamentals below:

  • MonotheismTawhid,  better expressed as the oneness of God, has had slightly different meanings over the history of Islam. Usually the Qur’an is seen to be an essence of God (His word) and thus co-eternal with Him. Mu’tazilites strict interpretation of tawhid says the Qur’an cannot both be part of Him and apart from Him, so the Qur’an cannot be eternal and thus is created. This became one of the most contested positions in Islamic thought. A view shared by the Ibadi Muslims of present day Oman.
  • Divine JusticeAl-‘Adl, there are many divine attributes and although virtually all schools of thought believe God to have justice as one – the strict analysis of it by Mu’tazilites brings about a controversial view. In answer to the Problem of Evil, like in Zoroastrianism, they respond by introducing Free Will – something completely opposed to the determinism of mainstream Islam. This is because if God is divinely just then he cannot create someone, command them to do evil then punish them for doing so.
  • The Promise and the Threat – At-wa’d wa al-wa’id, this is divine retribution. For this reason one must try to know God through rationality in order not to inadvertently disobey Him (and burn in Hell).
  • The Intermediate PositionAl-Manzilah Bayna al-Manzilatayn, when a Muslim sins they do not become a disbeliever (kafir) but neither do they stay a true believer (mu’min). If they die in this state they will be judged by God separately from a mu’min and a kafir. This view sits between the Kharijite position that sinning is disbelief (a view shared by modern day Islamic Extremists) and the Murjite position that a sinner is still a believer until Judgement Day where God will decide.
  • Commanding Good, Prohibiting EvilAl-‘amr bil ma’ruf wa al-nahy ‘an al-munkar, an obligation for all mu’min. This is the maxim that led to political intervention in the Abbasid Caliphate.

Mu’tazila: Sunni, Shia, Ibadi?
There are quite a few sects/schools/movements in Islam, this infograph shows the types that are around today. It doesn’t mention Mu’tazila and in my reading I have seen them referred to as Sunni sub-set, their own sect and even not Muslims at all. I would say there is enough difference in views to call them an independent sect. If we look at views on who can be a caliph we see that Sunni say the caliph must be from the tribe of Mohammed, Shia say the caliph must be from the family of Ali then the Ibadi say it can be anyone of strong faith. The Ibadi view was one adopted from their predecessor the Kharijites, the Mu’tazila share the Ibadi and Kharijite view on who can be caliph. But their rational dispute with the texts and onus on self-reasoning is contrary to conservative Ibadi/Kharijite views. Although the lines do blur as we will see in the next post, Mu’tazilites were quite the contrarians of their time – and even of our time.

Nobody Expects the Islamic Inquisition! (Minha)
The fifth doctrine, commanding good and prohibiting evil, invoked political action during the Abbasid Caliphate. Pro-Mu’tazila ulama (religious officials), including the caliphs al-Ma’mun and al-Mu’tasim, began interrogating scholars and ulama who did not believe in the Jahmite and Mu’tazilte view of Quranic Createdness. Imprisonment, punishment and even death would fall on those who did not concede. There was a growing ‘traditionalist’ re-serge in Sunni Islam at the time which promoted much the opposite and the fact that Mu’tazila shared views in-line with Zoroastrians and Shia muslims did not win them any favours with the populous. In the field of kalam two more systematic schools emerged in response, these were the Ashi’arites and the Maturidis. The latter was a hardline reaction that advocated Quranic literalism and threw out rational applications. The Ashi’arite school was the middle ground and found much support.

The 10th caliph of the Abbasid reign, Al-Mutawakkil, reversed the order of Minha and with that the ulama freely became less accepting of Mu’tazilites. The general community were already rather against them and Mu’tazilites quickly lost any power or influence they once held. Even after the Mu’tazilites had all gone – their practices still continued, mainly with the Zaidi Shias of Yemen, but also Ismaili Shias, Karaite Jews and certain Sufi schools had by this time all adopted different aspects of Mu’tazila doctrine. The Ashi’arite school of theology which advocated a lighter version of rationalism became moderately accepted in the Sunni mainstream.

The next post is on interpreting sharia (law).

Sources: Initially Wikipedia then,, scholars on Youtube (Sunni & Shia, including Wahhabist Feiz Mohammad), academics and documentaries online. The information was sporadic and sometimes contradictory so I also bought the book Defenders of Reason in Islam which is a detailed analysis of the movement’s initial serge all the way up to it’s revival in our modern times.

Islam: The Religion of… Logic? (1/3)

Often described as the Religion of Peace, Islam had a golden age spanning from the 8th-12th century (CE). This is the first in a three-part post on logic and rational thought in Islam. Each post will look at a different relationship analytical thought has had with the Arab-speaking populous.

Liberalisation of Science and Philosophy
During the Golden Age great advances were made, importantly the House of Wisdom was set up in Baghdad. From here the first ever international scientific venture in history began; Wherein, large volumes of written knowledge from Persian, Greek, Latin, European and Indian origin were translated to Arabic. The great Arabic polymaths such as Al-Kindi, who had the earliest writings on encryption by frequency analysis and wrote On the Use of the Indian Numerals, worked from the House of Wisdom. The biggest star of the Golden Age was ibn Sina (Avicenna) who made so many contributions – the biggest being The Canon of Medicine which, written in 1025, was used as a medical standard from England to China for about 600 years. Like many thinkers were at the time, Avicenna was also a logician and he disliked Aristotelian logic. For example when looking at ‘if p, then q’ he believed it too presumptuous to assert an such a strong relation between p and q. His response, ‘q while p’, is the beginnings of Temporal Logic. Below are some examples of his Temporalis (While Logic) :

  • Whenever the Sun is out, then it is day
  • It is never the case that if the Sun is out, then it is night
  • It is never the case that either the Sun is out or it is day
  • If, whenever the Sun is out, it is day, then either the Sun is out, or it is not day
Considered the Founder of Optics, and with it Experimental Physics, ibn Al-Haythem appears on the Iraqi dinar. He also divided the first rigorous attempt at testing - making him the Founder of the Scientific Method.

Ibn Al-Haythem (Alhazen), a Persian Islamic thinker whom worked from the House of Wisdom, is considered the Founder of Optics and with it Experimental Physics. He also devised the first rigorous attempt at testing – making him the Founder of the Scientific Method.

Dialectical Exploration of Theology (kalam)
Baghdad may have had the House but Basra had the Circle, the circle of Al-Hasan Al-Basri (Hasan) to be exact. In this gathering of minds instead of scientific discussion there was theological questions emerging. Questions asked were to do with the nature of God, His attributes, good and evil, how to understand the Qur’an. Not all Muslims supported the idea of kalam but those who did would relish the chance to debate other religions – especially ahl al-kitab (People of the Book). A practitioner of kalam is called a mutakallim, and this word was used for non-Muslims aswell. From these endeavours there later developed Jewish Kalam, schools of thought in this time influenced each other a great deal. There was even athiest mutakallimun such as Ibn al-Rawandi. The first Muslims that practiced early on were the Qaadariyah (believers in Free Will) who were mockingly compared to Zoroastrians and the Jahmites (believers in Quranic Createdness and non-literal interpretations of the Qur’an). These early terms were for people holding certain singular dogmas. Later, as kalam evolved, three distinct schools of thought emerged (the Mu’tazila, Ash’ari and Maturidi). The next post looks specifically at the Mu’tazila.

Accuracy of Generated Fractals

Note: I refer to the Mandelbrot set in general as the M-set for short.

When I was writing the post on Rough Mandelbrot Sets I tried out some variations on the rough set. One variation was to measure the generated M-set against a previously calculated master M-set of high precision (100000 iterations of z = z^2 + C). In the image below the master M-set is in white and the generated M-sets are in green (increasing in accuracy):

50 Against MasterHere instead of approximating with tiles I measured the accuracy of the generated sets against the master set by pixel count. Where P = \{ \text{set of all pixels} \} the ratio of P_{master} / P_{generated} produced something that threw me, the generated sets made sudden but periodic jumps in accuracy:

Graph OneLooking at the data I saw the jumps were, very roughly, at multiples of 256. The size of the image being generated was 256 by 256 pixels so I changed it to N by N for N = {120, 360, 680} and the increment was still every ~256. So I’m not really sure why, it might be obvious, if you know tell me in the comments!

I am reminded of the images generated from Fractal Binary and other Complex Bases where large geometric entities can be represented on a plane by iteration through a number system. I’d really like to know what the Mandelbrot Number System is…

Below is a table of the jumps and their iteration index:

Iterations Accuracy measure