Every so often I’m reminded how we judge addicts. We all do it – look down on them because it makes us feel a little better. Even I did it last week; shared a meme with an image that was trending on Facebook, of a girl with a trolley more or less attached to her, and some condescending text about meth. Now I’m sorry I shared it.
People used to judge me too, and write me off, but last night I was reminded of some stuff I achieved on meth. I was looking around on my hard drive because it’s getting full and I need to delete some old files, when I found a backup directory, a backup of my old drive from a few years ago, because I gave the drive to my ex…
It contained a lot of evidence, not of my drug use, but of the results of my tweaking on the computer. Besides the movies and downloads, there was also some source code I’d forgotten about.
I’ll try to make this as simple as possible, but that isn’t easy. I’d written my own video player, in c# using DirectShow. It’s not great, but it works, and it works pretty well. But it only plays video files directly. At some point, I was interested in playing DVDs too. So I found source code that I could use, a tutorial with some sample code on playing DVDs from c#. The only problem was, my video player code was “tightly coupled” to the form that uses it. So the form, which should just be the user interface (with the buttons to play and so on) included all the code for playing videos. Not only that, but it does some funky stuff with background threads, for example so that if you click “next”, it already knows all the files in the directory. Plus it has features like frame stepping and player speed that aren’t necessarily implemented in the DVD player code.
So, to change my player so that it could play files or DVDs, I had two options:
- Use inheritance. This would involve defining a base “player” class, and having two derived classes. One would be the file player, with all the existing code moved to it, and another would be a DVD player class.
- Define a “player” interface. This interface would contain the definitions for all the stuff the player did, but only the definitions. Then I’d have two implementations of this interface, one with my existing code, and another for DVDs. (The DVD player would then not implement the methods or properties that were specific to the file player, or at least fail gracefully at those things.)
Apparently I decided on option two. “Apparently” is quoted because I was so high, I don’t remember any of that. But it’s there – I found that I went as far as defining the interface. Then I stopped there, because it would be a couple more days work to refactor my code, and then implement the DVD playing code, as well as having some way (an “abstract factory” probably) of deciding an runtime which implementation to use based on what was being played. The bulk of the work would be the refactoring… There’s a lot more that I’m not mentioning, such as the peripheral details around the two kinds of players. The file player has a concept of play lists, which involves relative paths to the locations of files on disk, and it can also persist the starting position (and ending position which allows for playback loops because I was tweaking) within files, while a DVD player would need to be able to navigate a menu system, and switch between different tracks. The code for the file player to “know” the difference between playing files in a list verses playing whatever is in the directory, is messy. Not to mention repeat modes… on reaching the end of a file, it must decide, based on the repeat mode, whether to go to the next file, or repeat the file, or if set to repeat the whole list/directory, decide what to do then based on the index within the list/directory (and lastly if super-duper tweaker pervert porno repeat cumshot loop is engaged, repeat that part of the file when it gets to the end of the section, or check if there is a loop to repeat when loading a new file. Sigh… Tweaking leads to strange complications). That shit would be complicated to refactor, and even on meth I was too lazy to do all that.
The point is, I did some hard-core programming shit on meth. This is unfinished code, but I have had the dubious “pleasure” of working with some less talented programmers over the years, programmers who were incapable of doing what I could do when I was on meth.
Don’t judge people just because they’re on drugs. Being an addict doesn’t make anyone stupid, although it certainly does lead to them doing some stupid things. (For example, writing video players when you’re tweaking on porn – then not actually watching the porn but rather going off on a tangent writing a fairly feature-rich video player.) While you’re laughing at people and putting them down, there are some good people out there who just made some bad choices. Some of them are more clever or gifted than you can imagine, and a little empathy goes a long way.
Another way addicts are often judged, and sorry if you’ve read what I’ve written about this before, is the so called “faces of meth”, photos shared online with the pretence of it being about deterring others from using meth. It’s never about that. It’s about laughing at people less fortunate than yourself. It’s also about missing the point.
I won’t share such images myself, but I will state an example. I remember seeing one of those images of a girl who supposedly used meth for ten years. She was a pretty girl, probably about seventeen in the first image, then more or less a year older in every subsequent image. But here’s the problem: The first image, where she looked pretty, was a police mug shot. She was arrested for drug possession and prostitution, and was probably already living on the street. Do you see where I’m going with this? In the before image, she was probably already using meth for at least five years, maybe longer. And as for the rest, they were pictures of a woman living on the street, most likely using multiple drugs, including but not limited to meth. Once you get to the point of living on the street, meth is soon out of range of what you can afford, unless of course you happen to be a career criminal. And of course, career criminals and long time prostitutes have more factors affecting their appearance than the number of years they use meth.
Edit: This needs to be expanded on… Career criminals and the people associated with them, who are committing crimes for their drugs, don’t have normal lives. Contrast this with normal people who happen to be addicts… who still go home to their houses where they shower, brush their teeth, get dressed and go to work every day. (And then maybe party all night and every weekend, sometimes disappearing for a day or two each month after they get paid.) They’re nothing like those pitiful looking photos you see in mug shots online.
So while you look at those photos and laugh at the subjects in them, you miss that most addicts look nothing like those people. Most addicts are working normal jobs, and you would never guess they’re using drugs. People might work while using for up to twenty years, before they reach that point where they can’t work any more. And it’s all too easy to judge them while you have a drink every day, or do cocaine occasionally. You might find yourself judging them even after you’ve already become one of them. And when that happens, you might realize as I did, that those “photos of meth” are not a deterrent at all. They’re one of many ways to misunderstand how widespread and dangerous addiction really is, allowing you to see addicts in terms of stereotypes rather than reality.