The Right Glue
October 2007
By Dean
Apparently I'm not zany enough, according to my coworkers. Well, I'll show them. Today I will be talking about a topic very dear to my heart: killing perfect strangers across the Internet in video games.
We'll start with the basics, as is my custom. When gamers want to play video games in a more-than-just-casual way, the first step is what's called a LAN party. A LAN party is basically a group of people (often people who have never met before) who like to play games who physically bring their computers to a predetermined location (be it a friend's basement or a hotel convention room) and network them together in order to play multiplayer games together with less lag then one typically sees on the Internet.
Due to the proximity of the computers and the competitive nature of gamers, some gamers will alter their computer cases by adding lights or glowy parts. This is called case modding. Case modding is the nerd equivalent of getting chrome wheels and lowered suspension. Usually case mods are done to make a computer fit into a certain theme. Sometimes it's to make a computer look like it belongs in a video game (in this case Half-Life 2); sometimes it's a steampunk theme.
The end goal of many case mods is to intimidate other players at LAN parties. People see a cool case mod and they think, "Wow, that guy must be awesome if he could spend all that time and effort into modding his case like that." (Well, I wouldn't think that. But someone must, right?) This effect adds to the victories made with that modded computer.
I subscribe to a different school of gamer intimidation. Imagine, if you will, that you are a gamer at a LAN party, setting up your PC. In walks in a tall, pale man carrying a case like this. You'd probably think something like, "Wow. He's probably not very good, bringing his sister's PC in like that." Or maybe you'd think something not very appropriate regarding his unbringing.
Now imagine that the guy with the pink unicorn case mod is actually really good, and has the ability to completely dominate the LAN party and win every game he plays. You lost to the pink unicorn case mod. That makes you feel pretty low.
It's pretty intimidating, isn't it? That happy pony is out for blood. She's gonna buck you right up. The legendary pink unicorn is not to be taken lightly.
And thus is my school of intimidation. Though I don't actually believe in case modding myself, and I don't go to many LAN parties anymore, I do what I can to portray the feeling of badass frivolty online.
This is why, when I play games like Half-Life or Halo 3, I make sure I stand out as much as possible. When you see someone in a big purple suit running at you with a gun, you know you're screwed. You might as well just give up.
Latest comments:
By Dean
To me, the scariest thing a programmer can say is, "I don't like X, I'd rather use Y," where X and Y are the names of programming languages. It means that whoever said this has fallen into the language trap.
We, as computer scientists, have many different programming languages at our disposal. From object-oriented languages like Java and C# to functional languages like LISP and Haskell to interpreted languages like BASIC and Perl to entirely bizarre languages like those found on Esolang, the esoteric programming languages wiki. Those of you not familiar with this might tend to think, "Why do you have so many different languages? Isn't programming just telling the computer to do things?"
The reason why we have so many different languages is because each language is created with a particular set of problems in mind. Though each language is inevitably compiled or interpreted into the same machine code, different languages are more suited to specific tasks than others. In general, if a language was designed for a specific task in mind, then if you are writing software that needs to accomplish that specific task, then you should be using that language.
For example, Perl was designed for parsing strings; Java is designed primarily for platform independence (the same code can be run on any machine running any operating system); XSL was created specifically to parse XML documents and transform them into other document types in entirely different (if desired) formats. I can go on. There simply too many programming languages to enumerate here.
It is paramount as a programmer to know as many different languages as possible, if only at a high level. Obviously no one person can have intimate knowledge of all languages; however, one can easily know the major language paradigms and know major languages that implement those paradigms. Indeed, even across language paradigms the majority of programming concepts still hold firm. After all, all languages are there to accomplish the same goal: to facilitate the programmer in creating the desired software. The differences are just niceties that allow us to produce software faster and better.
And thus is the language trap. One is trapped if one thinks one language or paradigm is fundamentally better than all others. Someone who is trapped in a language will not see that it is silly to write string-parsing libraries for XSL, or that JavaScript's object-oriented facade is nothing more than buzzword compliance (more on this some other day). This person will spend days trying to mutate one language (his preferred language) into an already-existing language he doesn't know about because his mind is closed to alternatives.
The language trap can even instill such arrogance in those trapped that they speak such nonsense as denying an entire paradigm as useless simply because it does not conform to their ideals. Take a look at this article, Inheritance is evil, and must be destroyed. Inheritance is a fundamental concept in object-oriented programming. Due to his exposure to JavaScript's terrible object-oriented implementation, the author builds a straw man example of how inheritance should not be used in any situation. He is simply missing the whole picture, most likely because his only exposure to object-oriented design is in his preferred language.
I'm not entirely sure how people first fall into the trap. I know of several people from both real life and online who have fallen. In one case, I suppose he fell for rhetoric from those who were already trapped. In other cases, I'm not so sure. I do know that practically no time at all is spent teaching this lesson to university students (at least at Waterloo, my alma mater), beyond teaching a few different paradigms. No extra effort was expended by saying, "No language is suited for everything, and so while it's OK to have a preferred language, it's not OK to not consider using a different one." How much impact such advice would have, I don't know.
One language does not suit every task. If that were so then we'd only have this one magic language and no one would ever have the need to create new languages. Don't fall into the trap — learn as much as you can!
Latest comments:
By Dean
I am proud to say that this week I experienced my first real home production issue. It was Tuesday night; I had just gotten home at around 1900 hours after dealing with some issues at work and having an after-hours teleconference with some Australian representatives.
After I hastily made some food in the kitchen, I sat down for what I hoped would be a quiet evening of watching the X Files. Unfortunately my hopes were soon destroyed by a unusually frantically blinking Ethernet hub on my desk. At first I wasn't sure what was causing the spike in network activity, so I thought, "Maybe if I wait, it will subside." I was wrong.
Given I am running a number of servers, I decided to take a look at some of my various daemons to see if any of them are the culprit. My first stop was httpd2, which is a web server. Taking a look at its status, I could see that it was dealing with 50-80 requests concurrently when it would usually only handle at most five at a time with my usual traffic.
That's odd, I thought. I took a look at the logs to see what everyone was so frantically requesting. I discovered that my HTTP server was being bombarded with requests outside of my domain.
For those of you who don't know what it is that HTTP servers do, here is a rough explanation. HTTP traffic is plain text with addresses. You know these addresses well; you use them every time you type one into your browser's address bar. When you type in an address and press enter, the series of tubes that make up the Internet send your request to the appropriate server (exactly how is beyond the scope of this topic). The server replies with a web page which your browser displays. The server should only reply to web page requests within its own domain.
This brings us to the concept of proxy servers. A proxy is a special kind of HTTP server that receives requests from any site on the Internet and, if it doesn't have the web page stored locally, it will go and get it. So if you had a proxy and you wanted to see welbog.homeip.net, then your browser would ask your proxy for welbog.homeip.net. Your proxy would see that this isn't a local file, so it would go ask the real welbog.homeip.net for the page, and then forward that back to you. Proxies let you indirectly get anything from the Internet — very, very useful if you want to mask your IP address and any other identifying information.
I'm fairly certain you can see where I'm going with this. As you have probably guessed, my HTTP server was set up as a proxy: one that anyone could use. Somehow its address had found its way into a network of open proxies and was being abused by users of that network. All of this network traffic was caused by people trying to mask their identities online by using my server to browse the Internet.
The funny thing is there was nothing explicit in my server's configuration that made it a proxy. It defaulted to being a proxy: I had to add an instruction to tell it to not be a proxy. It makes me wonder what kind of programmer would have set it up that way in the first place.
My server is safe now with the resolution of my first production issue. It's not too much to hope that it is my last, is it?
Latest comments:
By Dean
And so officially begins my new blog, The Right Glue. As is my tradition whenever I found a new blog on these wonderful Internets, I will introduce myself.
My name is Dean Whelton. As of today I am 22 years old and currently living in Florenceville, New Brunswick, Canada. I hold a bachelor of mathematics in computer science from the University of Waterloo. I have a wide variety of interests ranging from entertainment media to politics to proofreading to computer science and mathematics.
One of my primary interests — indeed, something I have been doing most of my life — is keeping an online log of my interests in a website of my own creation from the ground up. Roughly every two to four years I scrap my old web software in favour of something more robust. It started in grade 8 when I learned how to create web pages. Since then I have always kept a site going in one form or another. Originally these sites were about specific things, such as computer games I enjoy playing. Later they became about university life and politics (Unconventional Conformity; which is no longer online), eventually degrading to nothing more than a fancy link portal (Oh Two).
Each one of my websites was more complicated and robust than the previous. Originally they were nothing more than static HTML needing to be updated using non other than notepad. Later I created a Java application specifically designed to generate and update that static HTML. Later still I created a web-based Perl backend for my site including such novelties as user authentication. My last website, Oh Two, was an over-thought and arguably terrible DHTML window-manager concept, written primarily in JavaScript.
With The Right Glue, my primary focus is going to be on using the right tools for the job. This blog is hosted on my home Linux machine, in order to cut on costs and to maintain complete control over its environment. My Linux machine is not the most powerful machine today, nor was it when it was built some six or seven years ago; however, it does its job and it does it rather well. As this is the case, I have opted to use PHP and MySQL in this site's backend, since they are both supported by my outdated server without taxing its resources greatly.
Everything about this site was written by me and me alone. I am aware that there are many available (and free) web software packages in the world that would probably be robust enough to create this website exactly as you see it. In the real world of software development it's never a good idea to recreate that which was already created. In my case, however, I would rather do everything myself so that I can learn the hard way (read: the right way) how different web technologies work. As my previous post outlines, I can't very well use PHP, MySQL or any other technology at a high level unless I understand its minor details. To do so would result in utter failure.
I will update this log sporadically at best: whenever I can think of a topic worthy of a few hundred words I will commit it to my database to be displayed to the world. To that end I have supplied an RSS feed for those of us too bothered by the concept of periodically visiting a website (e.g. qedi, to whom I owe much regarding web design).
Feel free to add any comments of any kind to any of my posts. I will not enforce any rules on the comments, provided they are not incriminating against me. Be warned: html is not permitted in the comments in order to keep things simple.
I look forward to a few good years with this website, as well as you, my readers, until I move forward with whatever comes next.
Latest comment:
This is some kind of footnote. This webpage is awesome and can be viewed in any browser. Even ones that suck ass like Safari and Firefox. Isn't that awesome? This site is best viewed with browsers that aren't maximized on large-resolution displays (> 1024 pixels in width). But then again, if you are running a large resolution and browsing maximized, then you're a terrible person so you don't really deserve to see this site at its finest. Jerk. I mean, seriously. I spend all this time making a nice site and your silly browsing habits ruin its look. That's really cold, man. If you're using IE6, then in order to see the cool avatar effects you need to enable JavaScript. No rights reserved by Dean Whelton (who is awesome) of any of the content, images, design, backend or electrons used in this site. Steal at your convenience. None of it is worth stealing anyway, so there. I have even made an RSS feed for more efficient theft of my intellectual property: CLICK IT NOW!!! Now, don't say I'm not generous. I guess if you want to know more about me, you can visit the about page. It's not really an about page, though. It's just one of the first posts. I don't feel like making a real about page. You can contact me, too. If you feel like it. Are you really wasting time reading this? Go outside or something.