This page contains expanded versions of some of my thoughts from my notes app. I have found that this is a quicker way of explaining about simple ideas than writing an entire article about them.

Not all of these are fully developed ideas, and my views on things can change very quickly, so any opinions expressed should be taken with a grain of salt. If you would like me to further expand or discuss anything mentioned here, please don't hesitate to contact me through email.

Inspired by Nadia Eghbal's and Quentin Carbonneaux's notes pages.


Do we still need multi-user operating systems?

Computing resources have become so cheap and important over the last few year that almost everyone has their own personal smart phones, and many even have their own laptop or desktop. What percentage of users actually need multiple accounts for these devices?


Possibly the best thing to happen to Bitcoin may have been Satoshi leaving.

Satoshi was—and still is—idolised by many within in the crypto space, so whatever his opinion on a related topic (e.g. the block-size limit), it would likely influence many others; without proper debate.

His leaving has resulted in Bitcoin development to becoming more decentralised, thus improving consensus and security of the network. This is in contrast to many other blockchains, which typically have a core development team, who hold a huge amount of influence over their respective network.

I think Satoshi knew that Bitcoin's survival was dependent on his absence.


Is it possible to create "bug-free" software? Technically yes, but it is very unlikely as mistakes are inevitable and there may be bugs further down the chain (e.g. in the compiler or libraries). It is also impossible to prove that a piece of software is "bug-free" or 100% secure.

However, there are certain actions a software engineer can take to reduce the amount of bugs they churn out. DJB had some interesting thoughts on the subject.


Recently while I was learning about the lambda calculus, it dawned on me that mathematical equivalence and can be represented as simple boolean operators.

A boolean equivalence check (x ≡ y) is the same as performing an XNOR operation on the two inputs. Likewise a boolean non-equivalence check (x ≢ y) is the same as an XOR operation.


Encourage problem solving; when answering a question, don't give solutions, give pointers.


Will historians of the future ever document the "information age" since we are already documenting everything?