Make 404s fun!
Suddenly find yourself on the shell of a crashed web server

Error pages are a topic in itself: In the best case, people don’t see the error page of a website for a single time. And if they do so, they probably followed a broken or outdated link and find themselves stuck, since they don’t came out in the place they were actually looking for. This being the case, most error pages offer a search form or a possibility to contact someone.

On the other hand, error pages are also a refuge for creativeness – instead of boring the visitor with off-the-shelf phrases about how sorry you feel, a 404 page can be a both fun and interactive experience. During the last week I set out and realized an idea, that I kept in my mind for a long time: I created a command line interpreter that runs in a browser and comes with a simple abstraction of a filesystem and user management.

The first use case of this webshell is the 404 page of this blog: When you hit a non existing URL, it seems like the server crashed due to the fact that the requested URL could not be resolved and you find yourself on the bare metal of the server (at least that is what it looks like).

Try it out

To visit my new error page, you must enter a non existing URL on my domain. (Or click on this link for your convenience: jotaen.net/error-404.) If you don’t know what to do, just type help to see all the commands or help "command" to see, what one particular command does.

You can also fiddle around in this box:

The name of the project is webshell.js and the sources reside on GitHub. The project bids you and your contributions welcome! So feel free to open an issue or to implement your favorite shell command by yourself. There are still many todos left and also a few bugs to fix. When the project has moved along, I probably will write a dedicated blog post about it. Meanwhile, here is just a brief overview:

Appendix: Some other nice 404 pages

If you investigate about 404 pages in google, you find a ton of resources about this topic. Here are a some of my personal favorites: