Skip to main content


Why Hololens is the most important technological leap since the smartphone

By "most important technological step" I mean the most important change in form factor. That's a fancy term for when the computers we use change how they are physically shaped.

Our computers physically have changed alot. They used to take up big rooms. Then they were able to fit on our desks. Then we could use them on our laps or in bed. Now they fit into our pocket. Some go as far as to try to wear them on their wrist. Not for me. I think that although that is a direction which we may come back to, the forward motion is taking us towards computers that we wear on our heads.

Now what do you call computers that you wear on your heads. If you said virtual reality you are stuck a generation behind in technology. The real computing gets done in augmented reality.

A virtual reality helmet is something you put on to cover your entire vision like a television bigger than a movie theater. The good ones use special lenses to keep your eyes from having to focus on something so clo…
Recent posts

Further delving into the limits of Symbolic Computation, and some algorithms too.

First of all let me describe what I mean by the limits. By the limits I mean the limit of cost versus benefit of a language. I mean the limit of the cost of using the language divided by the benefit of using the language. You want the language to be as easy to use as possible and as powerful as possible.

Or at least that's what I want, and I've been researching it for many years. I am eternally seeking the El Dorado of computer programming languages. When I list my favorite programming language I always want it to be the one with what I think are the best features.

Currently that language is forth and here is why. Forth is alot like lisp but it fits on a smaller computer.

Now here's why I like lisp. First of all lisp is turing complete. That's a bonus because turing completeness is great. We can solve any computational problem we want providing we have enough ram to do it. Many languages can do it, even english. That's why when I explain to you in english what a tu…

The Myth of Non Repeating Code

One of the first lessons you learn in computer science is that if you find yourself repeating yourself in your code then you've done something wrong. I am here to tell you that that's a lie.

I'll give you some very simple examples.

In many languages there is a feature like C++ include. We've all seen this where at the top of your file you write out the libraries that you are going to include in order to make your code run. By necessity these have always got to be typed every time.

Furthermore in C++ and some other languages there must be a main function and you must always add some extra syntax in order to declare your functions which doesn't necessarily need to be there but is just caked into the language.

Here lies the crux of the problem in that there are some language features that just get in the way which you can do nothing about.

Take for example an if statement in javascript.








Realitically this could be reduced to…

The system that never needed to be replaced - El Dorado

I am extremely interested in systems programming and language design.

As you may know there are many computer systems in existence today and those systems are usually made out of systems.

Take the proprietary Microsoft Windows, for example. MS Windows is a computer system known as an Operating System. We can think of it as three parts. First is the kernel, which runs at the base of Windows. The second are the file system and programmer utilities which the programmers use to provide applications for the user. Among these applications is the proprietary MS Windows desktop environment where the rest of the graphical programs live.

Linux is built a similar way. We have a kernel underneath, with gnu running on top. Among the things ported to GNU are the x window environment where graphical applications live.

Here is an illustration

Kernel -> shell -> graphics -> applications

What I am concerned in with my research is this shell level.

In linux the most common shell we are met with…

Research into the Unix Way of Programming: an exploration of concatenative language

I have been spending the last four years studying the Unix way of programming as described in this video:

Watching this video and understanding it is key to understanding the thinking behind my research.

In the UNIX days you would have to rewrite your entire system from scratch each time a new computer came onto the market and your team decided to upgrade. This was very expensive, and so the UNIX people were very concerned with trying to make sure that their code would not be rewritten but have everlasting life. And their mission has succeeded, as I can still use programs like awk, dc, vi, and many more today in my terminal.

Part of the way they describe in the video above of how they were to solve the problem of having to rewrite code was the use of the UNIX pipeline. Specifically they discussed how one could write a text file which makes shell calls on c programs, and turn that text file it's self into a file that behaves as if it were…

Memories as an 11 Year Old Struggling with HTML

When I was younger I was taught the basics of html by my dad and how to find the w3schools website. w3schools was pretty much one of the only two good website I could find for learning about making websites. The other one had something to do with a monkey but I could not remember the title.

I played around alot with HTML and at first I tried really hard to figure out how to make my website beautiful and interactive like some of the ones I had seen in the past few years. But eventually I got tired of that and I thought to myself, what if I could make a website that was entirely ascii art that was actually really great and pretty interactive.

So the first thing I started doing since I was playing around was to add random features. The only way I knew how to write features at the time was to create another html document and save it into my documents, then link it in the other html document. Of course, I was doing this in notepad, so this became tedious to do with alot of webpages.

I want…

My current setup: ssh + tmux + emacs

I want to explain how I currently program so that people can get an idea of what my environment looks like. I'll first go into a little extra detail because I know most people are not emacs or tmux users, or even Linux users.

So I've got a chromebook which means that all I can do is run javascript apps or go to webapps like stack overflow, github, facebook, wikipedia, etc. Luckily chromebooks come with this dedicated application called Secure Shell which allows me to connect remotely into a Linux machine with just a url, a username, and a password. And so I rent a virtual machine which is just a linux server from Microsoft in their Azure datacenter and I use Secure shell to connect to this remotely. So what it sort of looks like is I open up my application and I am greeted by a prompt asking me to type in my hostname, my username, and my password. After that is done I am greeted by a black terminal window much like powershell or the old terminals in the 70's and 80's.