The Psycho’s Homepage

Disclaimer: Don’t be a dumbass. Follow Norman Bates’ advice at your own risk.

Hello, and welcome to my WordPress site. I’m Michael Warren, a tech-savvy psychopath who likes to do hacky stuff and tinker with technology. I have a ton of interesting stuff on this site, so feel free to look around. Follow me if you like what you see. 😛

Hot Topics:

Here are some of my top subjects that I write on, so look through the list below to see if you find anything that interests you:

Unix shell scripting

Other topics:
Unix and Linux
Cyber security
Computer graphics
Computer networking
Anti-Apple rants

Most Recent Article:


Arch Linux Hacker Battlestation Setup

When I was using my laptop by itself, I loved to boot into Arch Linux and then use tmux to split the terminal into multiple windows and start a bunch of different programs to make it look all 1337ed out. But when I started using the dual-monitor setup, I started to have problems doing this. The biggest one being that Arch Linux doesn’t recognize multiple monitors in text mode, so I was stuck using only one monitor and having the other one blank at all times. The second problem being the text-mode scaling, which never matched the actual resolution of the monitors. Well, through some bending of the rules, I have managed to achieve the look that I want. I’m writing this as much as a note to myself as to anyone else…
Continue Reading

More Articles →

Status report, Mr. Data...

Sun, Apr 28, 2019 8:52:39 PM
As promised I have returned after a one-week absence. During the last couple days I have made some minor modifications to this site, including creating an About Me page and adding a link below my Most Recent Article that leads to my entire archive of posts. I was going to put in an iframe and allow visitors to view my archive from my homepage that way, but apparently WordPress doesn’t recognize iframes, at least not with the free plan anyway. So I guess I’ll have to scrap that design idea, at least for the time being.

Sun, Apr 21, 2019 9:16:17 AM
Well, it looks like posting infrequently was not what was causing my pages to get de-indexed from Google, or at least it wasn’t the only thing causing it (I’m sure it was a factor), because I’ve been posting every day for the last week and about half of what I’ve posted during that time has been de-indexed. I’m going to go on a hiatus, or at least start posting less frequently, for a few days, until I figure out exactly what is causing this. I don’t want to risk any more future articles getting de-indexed, so I guess I’m going on another vacation. My official return date is set for April 28 – one week from today.

Thu, Apr 18, 2019 6:16:46 AM
I have created an official static page for the Michael Warren Free Software License. The license is also available for download as a PDF. link

Sun, Apr 14, 2019 12:55:21 PM
Unfortunately my Latest Posts page that was my homepage before I designed my new one is essentially gone now. There’s simply no way to access it. However, I have found a way in which my full post archive can still be viewed: Click in the search bar on the right sidebar of my site and hit Enter without entering any text, and you will be brought to a full archive of all my past posts in reverse chronological order.

Sun, Apr 14, 2019 12:20:29 PM
So after analyzing several Google searches of my site against my own posting patterns, I’ve realized that any content I post gets automatically de-indexed from Google Search if I don’t post again within about 36 hours. In light of this, I’m going to start posting every day again. I might have to post some shorter articles to make more time for myself. I’ll think of some way to make it work out. But anyway, I’m just glad I finally figured out why my pages were getting de-indexed, and know what I need to do to rectify this in the future. Cheers.

Recent Announcements:


I Return Once Again

Well, looks like yet another WordPress vacation has come and gone, and I’m excited to get back into the groove of writing and blogging after some much-needed time off. Unfortunately, I wasn’t able to do much in the way of addressing my SEO problem. I ended up spending most of my hiatus either catching up on sleep (because I was horribly sleep-deprived at the time) or recovering files from the Internet (these were images, PDFs, or web pages that I had downloaded/bookmarked on my old Macbooks that I lost access to because I hadn’t backed up those particular files/bookmarks at the time when my Macbooks died). I’ve realized the quest for better SEO will take longer than a week, and besides that, I think part of the problem is just that Google takes a while to index stuff (I noticed the images from my Top Software for DOS article finally managed to get indexed after being online for over a month). Anyway, I said I would return on the 28th, so here I am…
Continue Reading

My Projects:

These are ongoing projects that I’m working on, which I document in my blog.

Implementing a 2D game in QBASIC:


Part 1: Graphics modes, drawing functions, and scan codes

In this episode, our hero discovers the wonders of the QBASIC language. Intrigued by its quirky capabilities, he learns the ropes in one night of feverish coding, as well as learning some neat tricks for getting the most out of the language.


Part 2: Functions, subroutines, and recursion, and more drawing functions

Here our hero explores functions and subroutines in the QBASIC language and starts getting into pixel-level drawing with the DATA statement.


Part 3: Color tables, font files, and sprite animation

Here our hero graduates to writing useful programs in QBASIC, starting with one that prints a color table. Not content to stop there, he then designs his own font, calling it PsychoFont 5x6, and creates a full-fledged sprite animation through iterative use of the DATA statement.

My hacking arsenal, or, finding creative ways around tech lockdowns:


Using Javascript and GIMP skillz to pirate fonts

Our hero wants to use the Papyrus font for his art. Unfortunately it’s not on his computer and every download page for the font is paywalled. So he decides to be sneaky and write a script that will allow him to use the font for free.


Shell script to fuck with bandwidth throttling bots

Take that, Ajit Pai!


Shell script to download photos directly from Instagram

Our hero gets sick and tired of bullshit web interfaces interfering with his pastime of ogling sluts on the Internet and devises a plan to bypass Instagram’s default interface and get the boobies delivered directly to his hard drive.


Hacking image files

Our hero gets into reverse engineering and starts digging through image files with a hex editor, trying to figure out how they’re built and how they can be safely altered without being corrupted or having their appearance changed

My Battlestation:


Making the switch from Macbooks to Thinkpads

Our hero takes the essential first step in the construction of his battlestation and his hacker lair. It’s pretty hard to have an awesome hacker setup with a deliberately crippled hardware platform like the Mac.


Getting a new office chair

Another essential component. Can’t have an epic battlestation without something to put your butt on while you’re hacking.


The Ethernet Island

In this chapter of our story, our hero builds an island of wired Ethernet connectivity inside the WiFi network imposed on him by his evil overlords (otherwise known as the tech staff), thus allowing him to control the security policy and other aspects of the system even though he’s not allowed to access the house’s gateway.


Escaping from the Matrix with the Van Eck tinfoil hat

After suffering a psychotic episode, our hero becomes extremely paranoid about a government conspiracy against him. Here he envisions a completely isolated and unhackable air-gapped system that the Illuminati can’t get to.


Why Lenovo laptops are THE SHIT

Our hero reflects on why switching to Lenovo was probably the best decision he ever made in his career as a hacker.


The Tactical DOS VM

Our hero works on some of the software for the rig – a super-secret DOS-based spy VM for doing spy stuff and h4xx0r stuff!


Using Arch Linux with the dual monitor setup

Our hero hacks his system to run a text-mode Arch Linux system that utilizes both monitors.

MIX emulator:


Project launch

Introducing the MIX emulator project… Our hero designs an emulator for the fictional MIX architecture used in Knuth’s famous TAOCP series. This introductory entry looks at the two main components of the system: an assembler for MIX assembly language code, and an execution environment for running MIX executables, both written in C.

Highlight Reel:

Some of the best or most important articles I’ve written (in my opinion).


Factorial Overflow

While working on his latest coding masterpiece, our hero makes an astounding mathematical discovery. Read all about it here.


The Joy of Hacking

What does it mean to be a hacker? What does it mean to hack? What does the future hold for hackers and the hacker culture? All these and more questions are explored here.


Online Content Marketing and the Future of the Economy

Follow our hero’s journey in building his dreams and escaping from the rat race through the magic of passive income. Learn about his rules and secrets to success.


Adventures in VirtualBox

Follow the adventures of our intrepid explorer as he pushes the limits of retrocomputing with VirtualBox and travels to distant systems long forgotten by humanity. Explore the wonders of MS-DOS 6.22, Windows 2.0, Windows 3.1, OS/2 Warp, and Windows 95 in this whirlwind tour of computing’s past.


5 Things I Hate About Apple Culture

Listen to our hero rant about Apple-using hipsters and why their entire culture is fucking cancer.

After Dark Panel

5 Awesome Software Titles for DOS

Our hero reviews some of his favorite DOS software on the market. Titles include After Dark, Borland Turbo C, Tandy Deskmate, DOS Navigator, and MATLAB. Tons of cool screenshots to look at in this article as well.


Marketable Skills (Random X11 Post)

Oh shit, 15 years of knowing how to code and our hero still can’t get a job. Better stop procrastinating and learn some graphics programming so he can write programs that dumb normies can use. In this chapter our hero gets his feet wet with the X11 API and explains all the basic concepts so you guys can learn too.


Chickenshit Minimalism: How Apple Ruins Product Design for Everyone

Our hero makes the case that Apple’s shitty product designs are bad for everyone, not just Apple customers.

Top Tutorials:

Learn how to do all kinds of neat stuff with computers.


How Linux Package Managers Work

Have you ever wondered what goes on under the hood when you install a package in Linux? This tutorial will explain the exact step-by-step process, based on observations made while reverse-engineering pacman.


Custom Syntax Highlighting for Vim

Learn about our hero’s tried-and-true system for automatically adding custom syntax highlighting rules to Vim.


How to Write a Daemon Process in C

Ever wanted to write your own servers? Ever wondered what goes into making a Unix process run as a daemon so that it can provide services to other processes? This tutorial will explain the exact process, with example code so you can implement it yourself.


How to Block Websites and Prevent DNS Leaks Using Your Hosts File

This tutorial will show you a quick-and-dirty method you can use to completely block any website, as well as to automatically access websites by their IP addresses to prevent DNS-related vulnerabilities when using a VPN.


A Guide to Error Handling in C

All the information you will ever need to know about the C Standard Library’s error handling features, conveniently collected in one place.


How to Get the Dimensions of a Linux Terminal Window in C

A tutorial that will come in handy for anyone wishing to implement full-screen terminal applications from the ground up.


Implementing the DoD Data Sanitation Algorithm in C

Example code for how to implement DoD 5220.22 – the new state-of-the-art hard drive sanitation method designed to replace Gutmann.

Odds and Ends:

Interesting nuggets that you probably won’t find anywhere else on the Web.


Use SyncTERM as a Remote Login Terminal for the Raspberry Pi

This tutorial will show you how to take two hitherto unrelated platforms and use one as a terminal for the other, just like in the old days of time-sharing networks.


Real Programmers Don’t Use Structs

Ever wondered how you would build complex data structures without using structs or objects? No? Well, I’m going to show you anyway, using the incredible power of void pointers!


How to Check the Byte Order (Endianness) of Your System in C

This tutorial will show you a quick method you can use to easily determine whether your CPU is little-endian or big-endian.


VirtualBox Data Recovery: How to Rescue Files from a Corrupted VM

This tutorial will give you some valuable tips in case you ever find yourself unable to start a VirtualBox VM because it’s corrupted and want to be able to access the files on that VM again.


Overcoming the Idiosyncrasies of C Programming in Windows

Not a lot is written about C programming on the Windows platform. This article looks at how C programming in Windows differs from C programming in Unix/Linux and how Windows C can be thought of as a subset of Unix C.

All Other Articles (that aren’t utter shite):


Run 64-Bit Guests in VirtualBox Using Hardware Virtualization (Lenovo Host)

Ever gotten weird errors when trying to run 64-bit operating systems on VirtualBox VMs? This tutorial will explain what you need to do, using a Lenovo BIOS (though the knowledge found here applies to other hardware platforms as well).


How to Generate Truly Random Numbers in POSIX Systems

A tutorial on the generation of truly random numbers in C programs using the facilities of the POSIX system.


Scheduling Jobs in Linux with crontab

Learn all about the legendary cron job scheduling system used in Unix and Linux systems for decades.


The Michael Warren Free Software License

A software license designed by yours truly for the purpose of protecting open source software, its authors and contributers, and its users from those with malicious intent.


How to Generate UUIDs in Linux

Learn how to generate Universally Unique Identifiers from the Linux command line or in programs using the libuuid library.


The Lost Art of the All-Nighter

Do you like staying up late at night to work on coding projects? Does the midnight silence give you a buzz? Come here to have your love of nighttime hacking validated.


The Psycho is Back!

Our hero returns after a one-week absence and announces great things that are to come.


SSD Data Sanitation in Linux

Like the DoD article, but for SSDs.


Understanding and Using the OpenSSL Command Line Utility

An explanation of how to use the OpenSSL command line utility to encrypt and decrypt files, as well as some key concepts in cryptography theory.


Finding the Day Difference Between Two Dates in C

Just some random C programming.


My Step-by-Step Process for Starting Arch Linux Live

Our hero details his exact sequence of steps for constructing a fully functional Arch Linux system from a minimalist live CD, because he can’t be assed to actually install anything.


Hi, Everyone!

The first ever post on this site. Introducing our hero and his computing awesomeness.