So I was bored and decided to update my Flash plugin, a chore that I recollect stopping in it’s tracks previously, for reasons I couldn’t recall. Main reason was that my flash plugin has been nearly constantly crashing on certain sites. Mostly due to the ubiquitous use of flash for advertisements, which seems to be one of the dominant uses of the technology.
So, I visit adobe.com and go to download the player. First, they try to shove a McAfee scan down my throat. You know the drill. They know we just want to get the hell away from them, so they decide to helpfully fill out the “default” options for us, which just so happen to correspond with the options one would need to choose to give them the most revenue.
So I finally manage to get past that brigade of crap, and then it asks to install software. fair enough- that is what I was doing.
Much to my chagrin, however, it isn’t installing flash, it wants to install Adobe DLM, DLM I assume stands for DownLoad manager, although it could very well stand for Dingo-Llama-Mammoth for all I care.
let’s analyze the sequence of events so far:
Every single fucking program I download wants to install a god damned download manager! how many bloody download managers do I need? Am I going to need a download manager manager to manage all the download managers that all manage only the specific downloads from that specific company? Is there something wrong with the concept of downloading a program, I don’t know, using the conventional browser method? You know, like any other sane person? No, Adobe has decided to decide for me. “We won’t install Flash like you wanted, but we will install a download manager that will consume resources indefinitely for this one-time installation of Flash. Then it will sit in the background and make sure your updated, because god forbid if your version get’s out of date!”
Which brings me to another rant, Versioning. I mean, I totally understand why you might want to have the latest version of an application- it fixes bugs, adds features, and so forth. and being notified, and even having the opportunity to update with a few clicks is very convenient. I have no beef with the concept.
What I disagree with is this whole “OMG if you aren’t updated to the latest version you will get haxored!” there are people who say this about every bloody program. It’s understandable for browsers, and for a number of browser-based/web-based technologies, as well as things like the .NET framework, and of course the core of windows itself. But, seriously, the main reason you update a program is to fix bugs and add features, and hope that the bugs and security concerns that a new version adds (And they always do, unless the change is extremely minor) don’t outweigh the benefit of having the known vulnerabilities and the existing bugs eliminated.
Additionally, this very mantra is proposed on applications that have little relevance to web technologies. I mean, Microsoft Word has been relatively unchanged since version 6, with of course downlevel changes (which I’m sure took a lot of effort, I’m not downplaying that) But the fact is the entire purpose of the program is to be a word processor. The fact that it now represents a bloody programming platform should be some indication that they might have sort of lost their focus on what the program is supposed to do. It’s supposed to make it easy to edit documents, not make it easy to program spam e-mail merge programs or even be a platform from which to launch your own applications.
I don’t mean to pick on Word or Microsoft by any means- this seems to be a problem with a global scale. It’s a complex with versioning. If somebody has a problem, and they don’t have the latest version, that is automatically the cause, and truly, this attitude, or more precisely, the logic behind me, continues to elude me. They don’t understand the various downlevel changes, and half the time the release notes and changelog for said program mention nothing even remotely relevant to the various issues the person might be having.
Going almost hand-in-hand with the “download manager” syndrome is the “background updater”. Each company seems to have it’s own. You’ve got the Adobe one, the one from, say, Google, Apple, and so forth. And every single one of them is sitting in the background making sure I’m “up to date”. The problem here is that they all have to same goal but they all have very different UIs and they all act entirely different and essentially have different paradigms. This is something where Linux has the right idea; the package manager can update any package you install through either the GUI package manager or through a apt-get command in the terminal. The thing is, the environment is different; Linux programmers have no problem submitting their updates and new packages to the essentially neutral repository folks. With Windows, the best solution, which is the integrate this all into Windows Update, is owned by MS, which many of the companies who would have their software in it are competing with, which seems a bit like a conflict of interest; who knows if MS will “accidentally” forget to update users of competing products?
Back to the various “update” managers, they don’t simply update the programs you already have from their company; they also inform you of “updates” to their other products. The Apple update software makes sure you know when a new version of Safari is available, even if you only have iTunes; Google’s updater makes sure that you’re fully aware of when a new version of Picasa is released. And so on.
In conclusion, suffice it to say that currently update and download managers are wholly unnecessary (especially with the latter) and a huge pain in the ass for everybody.
516 total views, 2 views today
When it comes to Older games; and even just games in particular, The developers obviously have to make some compromises; a game is never 100% realistic, even the most open sandbox game restricts your actions; Fallout 3, for example, while a vast world with numerous ways to complete the game and perform actions, still provides only a finite number of ways to go through the game; additionally, you can never “leave” the capital wasteland thanks to.. well, for no good reason. It just won’t let you leave thanks to invisible walls.
NES games, in particular, really use this. Take- Super Mario Brothers.
Right at the start, there is a goomba. If it happens to shuffle slowly into you, you die. Realistically speaking, being touched by a mushroom is not something that is usually fatal, even a anthropomorphized one that can magically move by changing the size of it’s feet.
it’s a permissible break from reality, given the limitations of the system, and in the name of fun. Extending this logic back into reality has some pretty interesting results, what with people exploding at the slightest touch, meaning that reproduction of our species is made both very impossible and all attempts to do so rather messy.
But wait! They wouldn’t explode, they would look to their right, hold up their arms and legs, and jump up several times higher then is physically possible and fall through the floor. Additionally, we will find that grabbing seemingly innocuous objects will grant us super powers; the leaves of any deciduous tree will allow you to become a mutant freak raccoon hybrid, while grabbing flowers will allow you to shoot fireballs.
Then you have the various games, such as contra, that represent bullets as slow moving projectiles. Allowing you to literally see the enemy shoot, the bullet come towards you, and effortlessly jump over it. It’s like the entire game is played in bullet time or something. Which naturally makes the game a lot easier, which isn’t saying much, as anybody whose played this game can attest. They may have made the bullet mechanic less frustrating, but they compensate by literally filling the screen with these bullets, especially the later levels.
Additionally, most games often represent lasers as projectiles that have an observable speed- see Goldeneye 007 for the N64 for one example- super metroid provides another, with the Plasma beam (which to my understanding is a laser).
a laser, by definition, travels at the speed of light, not something you can really “observe” in transit. On the other hand, the results from this particular difference are a lot more fun to observe; seeing a laser coming at you and blowing up your head, even though you died in the game would be a lot more “fun” then simply having your head explode for what seems to be no reason.
On the flipside, you often have games that perform what is known as “hitscan” testing. That is- the bullet is never actually “in-flight” when you shoot, it instantly hits the target. This is an acceptable compromise, since a game like Doom was both made many years ago (when computers weren’t as powerful) and the aim of the game is to kill evil stuff, not to learn about firearm ballistics. Some newer games try to avert this by actually having the bullets trajectory’s estimated and accounted for. This makes for more realistic gameplay, which can be just as fun.
Mario is an example of many of another interesting issue. for example, it’s easy to create a perpetual motion machine; simply find a koopa or buzzy beetle between two pipes, stomp them, and kick their shell. The shell effortlessly glides along the ground as if it was made of a completely frictionless material (despite mario’s clear ability to grip and move along it) additionally the shell will rebound off the pipes or blocks to either side in a perfect elastic collision and it preserves 100% of it’s horizontal momentum. Further, having two shells do this and collide causes them both to “die” (flip upside down and fall off the screen, just like how objects are destroyed in real life, right?) whereas one would expect they might bounce off one another. Actually, the reason for this I suspect is that a shell in movement essentially kills any enemy whose hitbox it collides with; in this case, both shells kill each other. (since there is no special case whereby a shell hitting another shell causing any specific behaviour). This is changed in Super Mario World, since making two movable enemies (such as upside down goombas, koopa shells, buzzy beetles, etc) collide will cause them to die but it also gives you a different amount of points; whereas on the first SMB two shells colliding would give you the sum of the number of points each shell is worth (depending how many enemies they have collides with so far) colliding two objects in smw would always give you 1000 points. additionally, you could just walk into a second shell or enemy while holding another and destroy both, while simply dropping the shell on said enemy’s head will kill them but preserve the shell. Really it’s a lot of rather complicated rules that make sense to people that play it but when you consider it it not only is entirely unrealistic (justified, it being a game designed for fun) it is also inconsistent even with it’s own rules (a ‘la the “drop or kick the shell to kill an enemy but preserve the shell, or keep holding it to destroy both)).
RPGs are of course not exempt from this, clearly because people don’t advance through levels nor actually acquire experience points; nor do they magically learn new skills out of nowhere when they acquire enough tech points or reach certain levels. Earthbound has this, when you reach certain levels, you instantly learn new PSI skills. “Ness realized the power of PSI Rockin’ A” for example. However, when you consider it, it doesn’t make any sense, realistically, whatsoever. “Wow, it’s a good think I killed that boss. Hey, I just realized I can kill shit with my mind, cool.”. You’d expect there to be some training involved. And then later in the game, Poo, a hilariously named character from the Far East area called “Dalaam” is whisked away by somebody who actually does teach him PSI skills. So it would seem that when you have PSI abilities, you can just walk around and kill things, using whatever you want and you suddenly learn new ones. Hell, you could even get Jeff to just kill stuff with bottle rockets while everybody else watches.



Ness: OMG! A blue swirl enveloped me, and now you guys have suddenly appeared next to me to fight a oak tree!
Jeff: Don’t Worry! I’ll launch a Big Bottle Rocket at it! *shoots bottle rocket*
Ness: OMG! the Oak tree exploded into flames
Jeff: ACK! I have taken mortal damage!
Paula: AHH! I also have suffered damage that will lead to my death
Poo: the flames missed me.
Ness: Whew, the battle is over, everybody OK?
Jeff: yes, thankfully despite having 86%A of my body covered in third degree burns during the battle in what would realistically cause me instant death, because the HP counter had not rolled over to zero by the end, I survived just fine with only a few scratches.
Paula: I’m a GHOST!
Ness: OMG! Watching you kill that Oak tree with a bottle rocket has caused me to learn a new psychic move, despite the fact that PSI healing Omega is clearly unrelated in any way to bottle rockets.
Poo: I can mysteriously speak english, despite being from a country on the other side of the world.
Paula: HELLO! I’m a ghost here! Not good!
Ness: here, Paula’s Ghost, have a cup of noodles
Paula: Ahh, much better, I have become corporeal again. That was odd. These are damn fine noodles.
Ness: OK, gais, let’s go to a hotel
*they all stay in a hotel*
Jeff: dudes, despite the fact that I didn’t get any sleep, my HP is fully restored!
Ness: cool. why’d you not sleep
Jeff: DUH! I was fixing this Broken Spray can, and when I fixed it, it became the DEFENSE SPRAY!
Ness: That took you all night? It’s a spray can. Why are you carrying around broken stuff anyway?
Paula: Hey guys I think if we battle a few more random enemies I might learn how to freeze enemies using PSI Freeze Omega!
Ness: Wow, cool, and then we can go and defeat the big bad enemy who has no true form and is a lampshade of all “ultimate evil” type enemies in all games.
Poo: OMG I LOST MY SHOES.
Ness: dude, you never had shoes.
Poo: Oh.
This of course happens in nearly all RPGs…. and let’s not forget Final Fantasy’s thing where they always make the bosses like fifty times the size of your characters. (And of course the whole “I will walk forward and slash the air… TAKE THAT! numbers have appeared in front of you!” thing).
Additionally, when you kill enemies (in older games) oftentimes they don’t leave a body behind. In Chrono Trigger and final fantasy, for example, they just sort of dissipate. If that was something that occured in real life funeral homes would go out of business. Thankfully, in the game, they still leave plenty of lootz.
Several Shows on Television suffer this to a hilarious degree. CSI is a prime example, as well as NCIS. Whenever an episode has any sort of involvement of computer hacking or anything remotely similar, you may as well change the channel. It’s basically a stream of made up crap that means nothing at all. Let’s not forget the classic case whereby none of the computer interfaces are even vaguely familar half the time; you’d expect them to use; I don’t know, an OS that exists; however they all use some weird special OS whereby all fonts are at least 72-point and every single piece of text types itself out when you go to show it; showing that, despite the computers being super fast, they haven’t mastered the basic art of text display. Or more likely they made it look fancy for no good reason. Also, when they are comparing fingerprints, rather then the program, I don’t know, just saying a % of the database it’s gone through, it instead displays every single entry as it goes through the database. Apparently none of the people responsible for this realized how stupid and pointless and slow that was.
Another magic feature is the “enhance” option, which appears to be a part of anything that can handle images. Merely displaying an image in Paint, for example, and saying “enhance that” and pointing at a vague location of the screen tells the computer to enhance a 5 by 5 pixel area that represents a suspect/victims face, and then it magically extrapolates, using those 5 pixels, exactly what that person looks like in high definition. Of course this is entirely impossible with even the BEST software because it’s basically constructing data out of nowhere. It’s like having a picture of yourself from that only includes your face and telling the computer to give you body and then having it actually create what you looked like that day. The data is gone, or it never existed. no amount of “enhancement” is going to bring it back. Sure, you can apply various filters to highlight trends or patterns in the data that does exist, and so forth; but “enhancing” the image and causing missing data to be “interpolated” out of thin air is nonsense.
Star Trek, naturally, is no exception to this sort of thing; characters can perform about 20 different things on one console, while only tapping a few random buttons. And of course, the interface makes no sense at all; it’s a few colourful rectangles, only some of which have a random number over top of it, and yet everybody seems to know what each one does, even [i] aliens who have never encountered it before [/i] . If these aliens can do it, why can’t us viewers make sense of it?
And now I have totally forgotten what I was talking about. Oh well.
400 total views, no views today
Microsoft.
It’s unheard of to find a person who hasn’t at least used a Microsoft product; it’s even less likely to find somebody who hasn’t been exposed to it. As it stands now, there are essentially three “camps”:
1. People who think MS is successful not by chance or by “copying” anything, but by coming up with good ideas as well as creating good implementations of other ideas;
2. Open Source zealots, who spend much of their time criticizing microsoft for copying Apple and then turn around and copy both MS and apple in creating their desktop environments; Additionally, the Open Source zealots who can’t write a line of code and push the “Open Source” concept because it basically means “free software”
3. Generation 2 Apple Users; the type who think the Mac Classic sucks and apparently don’t realize that OSX is pretty much just a desktop environment for BSD; I cannot think of a single reason to ever buy a mac today, personally. The Original Macintosh Versus the PC-DOS had clear advantages in that it posessed a GUI, wheras DOS was a Command line interface; this beckoned the higher price tag for the product. Today, OSX offers no features that cannot be found easily on either windows, or a free Linux desktop environment; the claim is that you are paying for “quality hardware” that “just works” But truly you’re simply paying a tax to become a member of an exclusive club; It’s not the machine or the functionality Mac users are after anymore, it’s the symbol of success that it essentially provides. “hey, I have lots of disposable income to spend on overpriced toys” is the message it sends.
The common argument is that Microsoft got to it’s dominant market position via “strong-arm” tactics, and by “copying” ideas. First, when you run a company, and an opportunity arises, you don’t think “golly gee, I sure hope this doesn’t hurt my competitors”. The word “competition” especially with regards to software has somehow lost all meaning; people like to think that there is no competition, and there certainly is less of it today. But it’s not Microsoft’s fault that nobody is coming out with products that can compete with theirs; Just as it wouldn’t have been Apple’s fault if MS had not been able to launch windows to compete with the macintosh on the PC; it’s called business.
“Copying” is an interesting word that people like to use to describe Microsoft’s business strategy; however, there are two flaws with this approach:
it implies that they “stole” something, when in fact they saw a good idea, and implemented it themselves. One could posit the question, “if they weren’t supposed to copy, merge, and combine features, what the hell are we working towards?” In fact, the bitter irony here is that this line is often uttered by Linux users, who seem to forget that their OS of choice has lagged behind both Apple and Microsoft and has “copied” features from both; in fact, one could say that the entire concept of building upon each others code is the very concept that Open Source Software pushes; so hearing Linux users say this is sort of ironic in that they are implying that their Open Source philosophy is somehow only a good one when applied to Open Source.
Did windows “copy” a lot of features of Apple’s Macintosh? of course they did. When you are building a car to compete with other cars, you use the same shape for wheels; you don’t redesign the wheel; additionally, when somebody says that Microsoft steals “ideas”, the term is really useless. despite the aura around intellectual property, just thinking about something doesn’t suddenly mean that somebody else creating an implementation of your idea is stealing; an idea takes an armchair and a few minutes, and absolutely no physical effort. Implementing an idea is the hurdle that any technologist, during any era of computing had to get across; an idea is useless without an implementation. If I was to think up some new type of program, but did fuck all to create any prototypes or anything to that degree, I can’t in all fairness say that somebody “copied my idea” when they come up with an implementation; there was nothing to copy. ideas are physical objects. Some may say “but the Apple was an implementation of an idea” And yes, of course it is. But consider this; Windows runs on the IBM PC; the Mac OS environment runs on the Macintosh; consider for a moment that if apple had won the litigation against Microsoft, the IBM PC’s potential for showing a graphical environment would never have been realized. One could breakdown into a number of alternate history theories about what could have happened that go in all sorts of directions, but the truth is, it’s impossible to truly say what would have happened, simply because it didn’t. And now, the concept of a GUI that uses the same metaphorical approach is essentially the common denominator; what Microsoft naysayers are implying is that this is a bad thing; they are implicitly supporting the older paradigm where every single machine was managed in some completely separate way; That doesn’t help anybody.
Another thing that MS is criticized for is lack of innovation. To be perfectly frank, this is absolute bull shit. First off, if this was the case I don’t see how other companies aren’t equally guilty; and the fact is that it’s not the case.
Take, for example, the Windows 95 start menu; no other GUI implemented anything of this sort; the taskbar was an innovation because it made it possible to manage all the various running tasks in a always visible location; this was done through observation of their customer base, who would complain that their programs would “go away” because you no longer had a visual indication of them running (another window covered them, and they are essentially gone). Take the Windows Vista Start menu; the search bar is not something I had seen established in any major competing Graphical User interface before that. It addresses the previous criticisms of the Start menu whereby the various folders and icons would often fill the screen as you install/uninstall applications. However, nobody saw it like that; instead they decided to focus on the negatives, such as the higher system requirements. Err, HELLO, each version of windows has higher system requirements then the last. This is hardly surprising, and the fact that Vista implemented a new Desktop composition system (“Stolen” from apple, despite the fact that this was sort of a natural extension to the desktop given the ubiquitous availability of 3-D hardware on even the most value-oriented computers), as well as the larger gap between the XP and Vista release pretty well explain that.
Another example: take the Office Ribbon. Despite it’s detractors, it has become hugely successful and people have in fact found themselves more productive with it; this is because rather then thinking about the problem for a few seconds and then dismissing the current solution as “we shouldn’t change it because I don’t like change”, they actually looked at what they had, and realized, “holy shit, we have too many menus/toolbars and crap here” And they came up with a solution. The thing is, the ribbon made users and developers alike rethink the sort of common user-interface paradigms that we have become accustomed to, such as menus, buttons, and so forth.The heirarchal Pull down menu system was an extension on the “basic” pull down menu, where each menu title only had a single set of options; there was no concept of submenus within those menus (known as heirarchal menus). However, at some point, that model stopped working; the menus hd way too many options. The natural method was of course to group those options heiarchally; here are the options for Inserting an object, here are the options for how to format cells, and so on. The ribbon is a testament to the fact that there is no magic bullet method that works well in all situations; a program with three options can work well with just three buttons in a window; however if you have 10 options, you better use a menu, and with 50 or so options, you’ll need to arrange that heirarchally.
It’s important to realize that Microsoft is not pulling the industry on it’s coat-tails by mistake; the fact is that even their competitors are playing catch-up with their technologies, and before they can release a product that even attempts to compete with them, MS has already released another version. It’s not a lack of innovation on Microsoft’s part that is causing this, it’s a lack of innovation on the competitions part.
Much of this is different when you look away from desktop applications and operating systems and instead look to the world-wide web. Instead, we find Google has essentially cornered almost every facet of the internet; however, they carefully crafted their approach so despite them essentially doing the exact same thing to the web as Microsoft did to the OS and desktop applications markets, they are still regarded as “good guys” which is a particularly intriguing revelation.
This brings me to another point: Internet Explorer.
Web Developers – including myself- hate trying to work with Internet Explorer- it doesn’t work like the other browsers. People like to blame MS for this. But it’s actually the W3C.
Take for example some of the early draft specs for HTML4 and CSS and the DOM. W3C said “alright, we might make it like this, but no promises.
And all the browsers ran out and implemented it. Then the w3c went to ratify the specification and decided “hey, you know what? All the stuff we have in that spec that only IE has implemented so far… let’s rip those out. And they did. So now IE suddenly had “non-standard” features that were in fact originally in the spec and simply not implemented by Netscape or whatever the other browsers were at the time, because only IE bothered to implement those particular portions according to the specification. Which brings me to another point- the specifications are about as vague as possible. If your specifications are open to any sort of interpretation, they aren’t specifications, they’re handwavey suggestions. IE was the first browser to implement the CSS Box Model according to the specification. Then W3C ripped out that entire page of the spec. Now, they pretty much said that, but what is most interesting was that almost every single thing they took out of the spec was only implemented by IE and every single thing they added to the spec that wasn’t before were non-spec stuff that was added by other browsers. Seems a bit unfair.
Now, it’s gotten better in recent years, but it’s also gotten worse. MS refuses to implement any feature that is non-standard or not in the spec- because they know the w3c is some sort of demon spawn that purposely messes around the spec as much as possible just to fuck with IE’s implementation. meanwhile, the w3c is all friendly with Firefox and Opera and all the other implementations. It’s like a god damned love circle.
And then you have that Anti-trust nonsense. I’ve never really understood that. I mean, ok… we’ve got Netscape (with err… Netscape) and Microsoft with Internet Explorer. When IE was being charged for it was all cool.
But then they started giving it away free with the operating system! HORRORS OF HORRORS! Obviously they are TRYING to suffocate Netscape! I mean, that might have been a secondary reason, but for fuck’s sake, why the hell was Netscape their only god damned product to begin with? I mean, how many years were they in business with a single product? And many people say “well, golly, why would they spend money to make IE and then release it for free?” I don’t know. why the hell did they spend money to redesign paint in Windows 7? The way I see it, Microsoft looked at the internet, saw- hmm, this is becoming as ubiquitous as simple text editing, word processing, basic bitmap editing and recording short sound clips, we should distribute a way to do this with the OS. And that’s what they did. But suddenly it’s a big no-no because the slow company that had a single product that did the same thing that they charged for were all “hey, no fair, we don’t know how to sell more then one product so that’s Anti-trust!” It would be like a company that sold a basic text editor claiming anti-trust when Microsoft *GASP* included a text editor with MS-DOS 5! the NERVE of the company! How dare they include basic tools that increase the usability of the Operating system! DAMN THEM!
I mean, Anti-trust stuff is supposed to protect the [i] public [/i] from a monopoly. Not slow to change companies that don’t know how to create more then one product from other companies that happen to be able to create that same relatively simple to create (browsers were hardly that complex) applet and include it with the OS.
And nowadays the hubbub is all “OMG! they should let you choose your browser when you install windows!”
What the FUCK is that? should they let you choose from a set of other free text editors you can use instead of notepad? No, because if you want another editor you download another editor. should they offer other free alternatives to Paint Or Wordpad or Sound recorder (which actually transformed into useless with the latest ver. in win Vista/7)? No. that would be stupid. But apparently they are supposed to quite literally present a choice amongst their competitors in the browser market. Why only browsers though?
448 total views, no views today
Alright, so, I had finally gotten sound to work. it was wonderful. Sure, things ran a bit slow.
And then poof, out of nowhere- Quite literally, I made NO code change whatsoever, the program is now crashing with an OutOfMemory error. From- where else? the god damned GDI-Plus/Cairo. Who the fuck wrote that thing? Every single problem I’ve had has been related to that Piece of shit. If you’re going to write a compatible library, do it properly.
Another tidbit: I love how everybody who uses Linux says “Linux is more stable” perhaps the OS is, but when it comes to Mono you may as well leave any stability, mental or otherwise, at the door.
“MonoDevelop, please show me the contents of this variable in the locals window”
“naw, I’ll crash instead”
“MonoDevelop, please show me the locals window”
“sorry my window has gone dark again.”
&()*#%&*(#(
It’s DRIVING ME INSANE. I finally get the thing working and then out of nowhere (again, I made absolutely no change to the code) it decides, “hey, you know what, I’m broken again, just for shits and giggles”.
What makes even less sense is it only crashes in certain locations. It still draws the sidebar just fine. the background is drawn. and so forth. Why the hell does it refuse to properly draw some items? I finally, after struggling for far too long to get the bloody IDE to allow me to set a bloody breakpoint (you know, those things that worked perfectly fine in Turbo Pascal 25 years ago?) I threw in a few try catches because the error was not being handled in the right place (of course it would have been easier to discover this if I had been able to set breakpoints or had a clue where the Trace.WriteLine output was going), so I discover the problem was in cBall, when it tries to draw. Somehow drawing a god damned Solid Ellipse is just so taxing that it runs out of memory. Because that makes sense.
And then I made a few changes, and the error was now a NullReferenceException in DrawSideBar, so I thought, good! Maybe I’m finding out where the problem is.
So, silly me, I believed that MonoDevelop wasn’t being a huge steaming pile and tried to use the debugging features, you know, the ones that programmers might use, like say, placing a breakpoint in said routine in a crazy attempt to determine what was null.
OH! but that is not going to fly! I try to run the program in Debug, as one might, and the poor thing refuses to start! Mono Essentially crashes! Oh the JOY of this IDE, it simply screams “please, don’t use me the way you might expect, most of my features are written by illegitimate children of famous actors, and are therefore unusable except from a distance using bad glasses”.
So I try again, and this time mono really does crash. This is bordering on psychotic folks.
So, I’ve decided that if somebody wants a Linux version of, at least, this program they can either figure it out themselves or look elsewhere.
I tried to make a small java test version but I couldn’t figure out how to use swing. By which I mean I couldn’t import the library. But that’s another story.
EDIT: cleaned up my swearing here
it was a lot even for me. Also, in the meantime I was able to create a small working application but couldn’t find the motivation to bother trying to figure out where swing paints. (having to look up in the documentation for exactly what routines to override, as opposed to being able simply type “override” in C# and see what I can override? No thanks. (also, I am probably clouded by my past attempts to work with java back in the “golden days” of the standard Java.AWT classes, which had the magical ability to provide sub-standard, barely OS-oriented controls for each Operating System.
258 total views, no views today
No, Not the kissing disease, Infectious mononucleosis, the open-source .NET CLR interpreter and class library.
.NET; I might have ranted about this before, if not on my blog, elsewhere. most of my arguments were against it, being a VB6 using ignorant buffoon. In any case, I’ve found C# to be an awesome language. One of the obvious downsides is that for the most part programs written in C# using Windows forms cannot be run on other systems.
The concept of Mono is to change that; remember, C# isn’t a Microsoft standard, it’s an ECMA specification, and Microsoft holds no copyright over it or anything like that. Mono is a relatively huge undertaking; the creation of something on the scale of a Virtual machine as well as a class library is gargantuan, and of course there is very little hope for 100% success.
On the whole, Mono performs it’s primary goals admirably; there is a GTK# framework that can be used to develop windowed applications… of course then the installation on a windows PC would require the install of the Mono GTK# framework, but I digress. In any case, applications can be developed and the C# code interpreter (for on the fly syntax highlighting) as well as the compiler are top-notch and seem to work well.
My only beefs can of course be in the class library. Of course, re-implementing the class library provided by MS on non-windows systems is not something that can be done in a single afternoon; this stuff takes time. My attempts to create a Mono-compatible project have been stifled, however, by seemingly innocuous issues. AlLlow me to explain.
As many reader may be aware, I have been working on a “upgrade” of sorts to my now ancient “Poing” game, which can be found on my downloads page; the original game was written in Visual Basic 6, and, in it’s earlier incantations didn’t have a single Class; it was all based on User-Defined Types (structures for those privvy to C parlance) and functions; (short explanation: it was made before I understood classes). Later, after I had learned about classes, I refactored everything into classes. This is all rather redundant; in any case, I have since created a new project in C#, in an attempt to learn about GDI+ as well as what appeared to be a different (in some ways) painting model. As one can see by the youtube videos I have posted on it, development has gone well.
The idea occured to me, after Tux2 (of http://www.jrtechsupport.com/) managed to create a Mono-workable, if soundless, version of my earlier C# game, BCDodger that worked in Linux. Sound was unavailable as a result of my choice of sound library, the IRRKLANG library, while truly usable in Linux, doesn’t have a wrapper that works in Linux (or something, I don’t know… it uses DSound or something, I forget). In any case, I have since added the ability for various sound engines to be used, and have added working implementations for Open-Source and Linux-available Sound systems, such as NBass (as well as a broken fmod implementation, let’s ignore that though).
Much obliged, I had decided to try to get it working via Mono as well; this was facilitated by my recent reformatting of my laptop to run a dual boot Windows 7 and Mint 10 system. Installing MonoDevelop and all that, etc.
So, I of course open the project in Monodevelop, quite ready for errors relating to porting.
The version I am using is MonoDevelop (and I assume also Mono) version 2.4, for those following along.
My first hurdle was getting my Appdata files for the program in the right location; on windows systems they are placed in the application data folder; so too they would need to be on a Linux system. Thankfully, a quick C# program run on the Linux machine cured this issue:
using System;
namespace specialfolders
{
class MainClass
{
public static void Main(String [] args)
{
foreach(Environment.SpecialFolder sfolder in
Enum.GetValues(typeof(Environment.SpecialFolder)))
Console.WriteLine(sfolder.ToString() + "=" +
Environment.GetFolderPath(sfolder));
}
}
}
Which gave me, on a Windows system:
Desktop=C:\Users\BC_Programming\Desktop Programs=C:\Users\BC_Programming\AppData\Roaming\Microsoft\Windows\Start Menu\Programs Personal=C:\Users\BC_Programming\Documents Personal=C:\Users\BC_Programming\Documents Favorites=C:\Users\BC_Programming\Favorites Startup=C:\Users\BC_Programming\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup Recent=C:\Users\BC_Programming\AppData\Roaming\Microsoft\Windows\Recent SendTo=C:\Users\BC_Programming\AppData\Roaming\Microsoft\Windows\SendTo StartMenu=C:\Users\BC_Programming\AppData\Roaming\Microsoft\Windows\Start Menu MyMusic=C:\Users\BC_Programming\Music DesktopDirectory=C:\Users\BC_Programming\Desktop MyComputer= Templates=C:\Users\BC_Programming\AppData\Roaming\Microsoft\Windows\Templates ApplicationData=C:\Users\BC_Programming\AppData\Roaming LocalApplicationData=C:\Users\BC_Programming\AppData\Local InternetCache=C:\Users\BC_Programming\AppData\Local\Microsoft\Windows\Temporary Internet Files Cookies=C:\Users\BC_Programming\AppData\Roaming\Microsoft\Windows\Cookies History=C:\Users\BC_Programming\AppData\Local\Microsoft\Windows\History CommonApplicationData=C:\ProgramData System=C:\Windows\system32 ProgramFiles=C:\Program Files MyPictures=C:\Users\BC_Programming\Pictures CommonProgramFiles=C:\Program Files\Common Files
Nothing particularly out of the ordinary there. So, running the program on a Linux machine:
Programs= Personal=/home/bc_programming Personal=/home/bc_programming Favorites= Startup= Recent= SendTo= StartMenu= MyMusic=/home/bc_programming/Music DesktopDirectory=/home/bc_programming/Desktop MyComputer= Templates= ApplicationData=/home/bc_programming/.config LocalApplicationData=/home/bc_programming/.local/share InternetCache= Cookies= History= CommonApplicationData=/usr/share System= ProgramFiles= MyPictures=/home/bc_programming/Pictures CommonProgramFiles=
which gave me what I needed: the appdata folder “BASeBlocks” needed to be copied to /home/bc_programming/.config.
Doing so was easy enough; the file manager on Mint 10 (dolphin) is different from windows explorer but hardly paradigm-breaking.
That copied, I simply threw the source folder as it was on the Visual Studio 2008 projects folder into the MonoDevelop projects folder (well, not really, it was /home/bc_programming/projects/ which I suppose means that any program that uses a projects folder will use it, oh well.)
psyched as I was I ripped into it with MonoDevelop, ready for anything! well, nearly anything.
My first error occured on line 107 of “Block.cs”:
mPowerupChanceSum = Powerupchance.Sum();
Java programmers may be thinking “ew uppercase characters” to them I say be quiet you. Anyways, the problem here was that there was no “Sum()” Extension method defined. Which I found odd. Oh well, though, I simply created my own:
#if MONO
public static class monoextensions
{
public static float Sum(this float [] floats)
{
float accumulator=0;
foreach(float loopfloat in floats)
accumulator+=loopfloat;
return accumulator;
}
}
#endif
this solved the immediate issue of the “Sum()” extension method. (For more info on C# extension methods, see here )
My next hurdle was on line 540 of cBall.cs:
if (wholeref.Blocks.Count((q)=>q.MustDestroy()) == 0)
The error was something to the effect of not being able to pass a delegate or method group to a lambda expression.
oddly enough, the fix was the change the “q” to an x… and after it successfully built I was able to comment out the “new” line (with the x rather then a q) and uncomment the original. very odd.
In either case, now I was confronted with what I knew to be the biggest issue; the fact that I had to now discover how to set it up so that I was able to use the same nBASS library, but so that the nBASS library was “silently” made to use the BASS.so linux library, rather then bass.dll which wouldn’t load either way.
The first step in this process was in finding bass.so. Hoping for the best, I pulled up good ol’ synaptic package manager.
No luck there
so, I went into the depths of the internet….
the BASS for Linux (note the lack of the n prefix; it’s the core BASS library that the nBASS dll is wrapping) can be found here
this topic; or, the original post, to be precise, gives the download location for the Linux source files for BASS 2.4, which can be found at http://www.un4seen.com/stuff/bass24-linux.zip
So, I downloaded the zip file, extracted it to a folder, and am about to attempt to compile it. (there is a libbass.so that I could probably try, but I think I’ll compile it myself instead).
Before I continue, however, I would like to mention something that has most impressed me about Mint 10; the multiple desktops. Now, this is hardly a new feature; programs can be downloaded that do this on windows, and windows itself has built in API support for multiple desktops; however, what impresses me most is that when you activate a window on another screen, it switches to it; what I mean is, for example, in this instance my FF download window was on another desktop (no idea why) and when I went to open the downloads window via Tools->Downloads, it did the fancy compiz box animation (as I have selected in preferences) and switched to it. very cool. But enough if my gushing over the unexpected presense of sanity in the UI design of a Linux desktop environment! back to my attempts to get BaseBlock working on Linux.
my attempts to make the bass project, however, failed:
bc_programming@Satellite ~/Projects/bass $ sudo make make -C 3dtest make [1] : Entering directory `/home/bc_programming/Projects/bass/3dtest' cc -Os -I/home/bc_programming/Projects/bass -L/home/bc_programming/Projects/bass -lbass -Wl,-rpath,/home/bc_programming/Projects/bass `pkg-config gtk+-2.0 --cflags --libs` `pkg-config libglade-2.0 --cflags --libs` -export-dynamic -D'GLADE_PATH="/home/bc_programming/Projects/bass/3dtest/"' 3dtest.c -o 3dtest Package libglade-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `libglade-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'libglade-2.0' found 3dtest.c:7: fatal error: glade/glade.h: No such file or directory compilation terminated. make [1] : *** [3dtest] Error 1 make [1] : Leaving directory `/home/bc_programming/Projects/bass/3dtest' make: *** [3dtest] Error 2 bc_programming@Satellite ~/Projects/bass $
Oh the humanity! now I had to learn about this package nonsense. I first suspected perhaps, as evidence by the fact that it wasn’t found, said package wasn’t installed; so I did a quick sudo apt-get install libglade-2.0 … it reported it was installed already.
after a bit of effort, and installing a few dev packages, I gave up. I was able to resolve the missing dependencies but then it complained about a missing .h file (which was indeed missing and clearly should have been present) so I gave up on that, and am at the time currently trying to simply use the .so file included. An additionally problem that arises here is the obvious fact that I am using a x64 Linux system, working with C# code written on a x64 windows system but targeted towards a x86 system, problem being that to my understanding Linux is not as lenient when it comes to architecture differences; but I suppose I’ll figure that out for myself if it’s the case.
In any case, I am now attempting to get the nBASS library to wrapp around libbass.so rather then bass.dll; from my research if the imports are the same I should have no problem creating a dllmap entry in the appropriate config file. From the documentation it would seem that discovering where that config file goes is left as an exercise for the reader.
Actions:
pasted libbass.so in the “Debug” folder (alongside the dll).
Copied the BASeBlock.config file from the project root to the debug folder; renamed to Bass.Net.config.
opened preceding file in gedit; it now looks like this:
< ?xml version="1.0" encoding="utf-8" ?>
And now, I attempt to run BASeBlock… recall that it now compiles on Linux, so it’s just a matter of making it work. I could, in a worst case scenario, construct a “nullsound” driver that simply stubs out the sound playing interfaces. But that seems like a bit of a cop-out. IN any case, attempts to run it resulted in the same error; clearly either the documentation I was reading was incorrect or I was not interpreting it properly.
I did a few more googles and came upon this page, which, despite being about something completely different addressed the same problem; that is, translating the dllimport(whatever.dll) into imports of functions from Linux .so libraries. namely, it told me where the Mono parameter file was- /etc/mono/config. I quickly opened the feller using gedit:
I tossed in the line:
and crossed my fingers…
It still didn’t work. I guessed maybe mono only loaded that stuff up when it was started? So I restarted monodevelop.
excellent! a little progress. Now I was still getting the error, but it was complaining about libbass.so missing. At least we’re getting somewhere.
It still should have found the file; however, I decided that instead of just throwing it in the app directory (because god knows where Mono is truly looking for it; even putting ./libbass.so in the dllmap failed, so Mono clearly thinks something else is the “current” directory. Instead, I decided to simply cp it somewhere globally accessible;
It still didn’t work.
Anyway, I messed around with the config file and the dllmap attribute and no matter what I put it it refused to find the file; clearly I’m missing something obvious (maybe capitalization? a missing slash? who knows). In either case I decided to defer that work to later on; I’m sure there was more to be fixed afterwards.
So, I created the aforementioned “Null Sound” driver; it worked fine. compiled alright. Encountered a bunch of issues during startup relating to my use of the \ as a path separator, whereas Linux uses /, fixed this with a simple Replace to change all slashes to the slashes of the OS (Environment.PathSeparatorChar).
It still refuses to start; Some gdi plus error. I have no idea how to workaround this, since it seems to be related to the windows forms, and has nothing to do with my own code, but rather with some configuration option. I recall Tux2 working around a similar error in BCDodger but I wasn’t paying very close attention and forget what the fix was, or even if he mentioned it. Either way, at least now BASeBlock compiles on a linux system, and most of the code-related oversights have been resolved.
EDIT:
I’ve managed to solve both issues; not at once of course.
First, the loading issue was fixed; pretty troublesome. In my attempts to resolve the problem I created a number of projects that used the same Image.FromFile() method to load pictures, and they worked fine.
Clearly, the problem then was not in what was not visible; the difference between the two. I realized that the difference was pretty clear: in my test projects, I was loading the images from within the form’s Load event; in BASeBlock, they were being loaded in a static constructor. So I decided to try to load the images elsewhere; I converted the static constructor to a static function, and called that function in the form load; there were a few other changes that I needed to make, mostly in the form of initializers attempting to use values that wouldn’t have been initialized.
The game started and ran fine with the NullSound driver.
Now, to fix the Sound; I opted to try to get nBASS working.
the solution was actually quite simple; merely a dllmap for bass.dll to libbass.so, and placing the x64 libbass.so in usr/lib was enough, and sound worked fine.
Unfortunately, it’s still slow as hell but at least I think that’s Mono’s fault.
612 total views, no views today
And now, for something completely different- a post that actually is about programming. A short overview of anagrams and a breakdown of a common algorithm that is used for discovering them.
An anagram is one word that is another word when you rearrange the letters; for example, “deposit” and “posited” are anagrams of one another; as are “dare” and “dear”. The idea behind the algorithm is that, given a list of words, to find out which words are anagrams of one another. This sounds fairly simple- one could conceivably create a function That determines if two words are anagrams of one another (by looping through the characters, comparing length, etc) and then use that function on every single possible pairing of the words in a dictionary.
This approach is simple-minded, and will take an intractably long time based on the number of words. For example, Linux systems generally have a word dictionary located at /user/share/dict/words not unlike the one you can download here ; in this case, the dictionary contains over 235,923 different words. Simply iterating through every word and comparing it to every other word will take 235,923 squared calls to the aforementioned “isAnagram” function; that’s over 55,659,661,929 separate comparisons! Even if the IsAnagram Function only took a millisecond to execute, that’s still over 55,656,661 seconds, or over two years . Clearly this is not a good solution.
One method that problems like these can be solved is to realize that the best way of going about it is to change the problem into something that will “sort itself out” so to speak. For example, rather then searching through every word and comparing it to every other word to find a match, one would be better off finding out what the words that are anagrams have in common, and how we can use that to our advantage. In the case of anagrams, what they have in common is rather simple; they have the same letters. The question is, how can we leverage this in a way that makes it easier to find groups of words that are anagrams of one another?
If we were able to create a unique value that all anagrams share that can be used to correlate them, we can create a data structure and only iterate through the list of words a single time. This value is the sorted letters of the word.
For example, both posited and deposit, when their letters are sorted create deiopst; in fact, it seems quite logical to conclude that all words that are anagrams of each other will create the same sorted sequence. This makes the entire thing almost crystal clear.
Instead of comparing every word to every other word in a brute-force approach, we can instead use a List indexed by the sorted strings, where each item contains a list of the words found that “sort” to that set of letters. For each word, we sort the letters, and then we look in the dictionary; if there is a existing item for that sorted set, we add it to the list that is already there, otherwise, we add a new one. Rather straightforward.
This is in fact a very old algorithm, conceived as early as the 60′s. The original concept was merely to bring together those words that were anagrams; the list was sorted based on the sorted letter set of each word, meaning that words whose component letters sorted the same would be contiguous in the list.
Here is the implementation of the Program in C#:
Here, I leverage Generics, and also nest Generic Classes within one another; note the Dictionary
840 total views, no views today
Advertisements. We see them everywhere.
Generally, Advertisements are produced by “sponsors”; for example, watch a sports broadcast and you will be presented by advertisements from those companies that sponsor the broadcast. For your standard “commercials” the advertiser pays for a short segment.
Now, we all know this; but there is an interesting set of people who quite literally think that it’s “unethical” to block advertisements. Their reasoning is that the pages content and the ads are a “package” deal- essentially, they are telling us we really have no right to block advertisements. I’ve seen this type of thing come up several times, in a few forums; in a rather interesting twist, though, it always turns out that the person calling everybody “selfish” for blocking ads is in fact in the employ of an advertising agency or the advertising or analytics department of a company; I’ve even had people try to say that people should change browsers or disable cookies because it makes their job harder . Right, and we’re the selfish ones.
I find the entire argument somewhat ridiculous. one such argument revolved around Adblock apparently “not doing” what it is supposed to do; they claimed that it blocks ads “wrong” because it blocks the ad domain (much “loved” atdmt.com, for example) rather then the content provider (which determines what kind of ads are being provided ). Personally, I think such an argument is nonsense. Personally, when I install adblock, I want to block ads. I really don’t give a flying fuck if the ads are for hamburgers, tampons, or weight pills. I don’t want to see the damned things. I find it extremely odd that people will actually subscribe to the thought process that we are “obligated” to view the ads, and the reason essentially boils down to “because they are there”. When somebody, like myself, writes an article, or blog post- nobody is “obligated” to read the post; likewise nobody is expected to read any advertisements I might have on the site. Truth me told most of the money for keeping the site up comesout of my own pocket, and my experience with advertisers as far as being a portal for which ads can be shown as been rather negative. First, in order to get my ads placed on another site; I pay. this makes sense. However, the amount I paid into AdWords was nearly 75 dollars for merely 5 days; in those 5 days I made 4 dollars off of adsense. Somebody, somewhere, is making a huge amount off of this whole thing and I suspect it’s probably google; charging a lot to display ads through adwords, taking off a heftly chunk and giving the Adsense users a mere pittance; essentially, google is being paid to show ads on my site. In the time I started this site, which has been well over a year, I’ve made only a few dollars. I can only fathom how much google made off of the adwords subscribers whose content I displayed.
In any case, the whole concept of being “obligated” to view advertisements seems rather bollocks. When the commercial break comes on the television- it’s called a “break” for a reason. Nobody is obligated to watch it and nobody feels obligated to watch it and personally I don’t watch Television for that very reason- the commercials are damned annoying. People don’t buy HD televisions so they can see the GEICO gecko in high resolution.
Another problem with claiming such “obligations” is that really it’s not our obligation at all. Let’s think back here, to the original concept of spot advertising. Basically, an advertiser pays the station to show their commercials during the break. Somehow, this translates into us being obligated to watch these ads because we are watching the “core content” that those ads are paying for. This doesn’t make any sense. The advertisers and the station know for a fact that a good portion of people aren’t going to view the ads, and they keep track of that in their analytics, and it’s in fact part of the whole calculation of how much the advertiser pays the station to begin with. I just don’t understand the logic here:
We pay for the Television, the cable hookup, and all the accessories, and yet we are still “obligated” to watch the advertisements because somehow they fund the very content we already paid to view? Why the hell would we need to pay for these extra channels to begin with if their revenue came from commercials? it doesn’t make any damned sense whatsoever, because the advertising simply supplements the revenue they are making via other means- I imagine cable companies have to pay television broadcasters in order to show their content.
Moving back to internet advertisements; we are all to familiar with them as I’m sure. You’ll visit a site, and at the top of the page will be a flash advertisement that goes something to the effect of “hit three ducks and win” or “spank 14 prostitutes and win a trip to LA” the thing is, these are simply advertisements; the game difficulty is not even close to what one might expect in order to win a prize that they claim; for example, advertisements that go something like “click the ipod to win a free iPod Nano!”, and then it doesn’t matter where you click on it because it’s a GIF or something, and it goes to some “signup” page where you give your E-Mail address. So it turns out that that isn’t advertising as much as it is phishing for information; they have no intention of giving anybody an iPod, they just want to harvest E-mails, and then they in turn sell those e-mails.
So the phisher paid the content displaying site to show thier “advertisement” the viewer felt “obligated” to play the stupid game and in return they are now on spam maillists the world over, and what did they get out of it? a few paragraphs of text, from a blog post or otherwise, framed by yet more advertisements. Somehow the exchange doesn’t seem exactly fair.
No television station is going to go out of business or off the air because people are purposely not viewing the advertisements they are displaying, television stations go off the air because they have shitty content that nobody wants to watch, and therefore nobody is tuned in to watch whatever even worse commercials come on. The same applies to websites. Websites don’t shut down because of some tear-jerking story where everybody visiting the page was using adblock, websites shut down because they suck.
Most often, I’ve seen sites shut down for somewhat similar reasons, in that more ad revenue would have possibly fixed it- that is, lack of funds. but these were sites started and run by individuals, people who even if they got several thousand hits a day would make barely anything from displaying these advertisements.
The problem with advertising isn’t that it exists or that it’s not “context sensitive” or that it’s trying to be “sensitive” to your likes/dislikes, it’s that regardless of where an ad is it’s out of context. I’ve seen blog posts with negative reviews for a product accompanied by advertisements for said product, and regardless of what an ad is for it’s still a “separate entity” from the rest of the site; the rest of the site has images, icons, frames, tables, navigation menus, and so forth, all fitting together perfectly fine and running together beautifully. An advertisement is essentially a “black box” outside of all this content, regardless of how well it’s colour scheme matches the rest of the site, it still, at it’s core, isn’t part of the site . So, what can be done?
In-context advertising. This was and has been done quite a lot- for example, a television character might have Coca-cola in their fridge, or they might have a certain brand of cereal that they pour in a bowl in a scene; These are essentially “implicit” advertisements in some ways; And if you think about it, they are a lot more effective then the standard “black box” ad. Even “targeted” advertisements are still essentially abstract from the content of the site itself, and that is the problem. With in-context ads, nobody truly “notices” that there is a advertisement; (unless you lay it on very thick or have actual character dialog revolving around the product). Truth be told I’m amazed this method of advertisement hasn’t been attempted. In the context of a website, it might be difficult to apply; whereas television and movies are fictional environments which can be essentially manipulated at will, the content of a website is a lot more difficult to manipulate in a way to create in-context advertisements. Additionally, some sites have a goal that might conflict with that, such as hardware review sites. Video games can be changed to suit this quite easily, and being an interactive environment whereby the viewer is an active participant they may be m ore inclined to notice it. For example, many racing games have advertisements in the form of locations, such as, for example, McDonalds restaurants appearing on the game. Need for Speed Underground 2 does this. However, it’s a mixed bag; the player purchased the game already; they paid for the product, not the the extraneous advertising.
A Free and rather popular game, TrackMania Nations Forever, takes a slightly less subtle approach, but I think it works well. In the game, there are various “billboards”, such as the banner above the start/finish line as well as checkpoints, in addition to various pieces of scenery. These bits and pieces are dynamically updated with advertising content; for example, I’ve seen subway advertisements. What makes this even more interesting is that even though they are being less subtle about the advertisements they are in fact more “in-context”; a real race track is often lined with advertisements and banners for companies often appear in locations where they are sure to get prominent display from a particular angle camera; additionally Nascar and F1 vehicles are often adorned with various advertising and company logos, since they are truly the center of attention such advertisements are more likely to be noticed. The end result is that Trackmania Nations Forever, in using these advertisements in this fashion, has in many ways made the racing experience more “authentic”.
Flip-flopping back to internet ads, and, well, advertising in general; discussions I’ve read on the subject generally have one side saying that it’s “morally wrong” or even “stealing” when you don’t watch TV commercials or if you block ads.
Here’s the thing though. Think about it; Why is it immoral? Because apparently that’s how the content you are watching is paid for.
Seriously, How in the FUCK does that make us obligated to watch the ads? The burden of cost should be on the people who produced the content, not on the people who watch it. Yes, it’s a hard world out there and the only way television networks make money is through ad revenue. Boo hoo. As if they are struggling.
Additionally, Why is it morally wrong or stealing for us to not watch and pay attention to ad content that is “paying for the content” when the creators of the advertisers have absolutely no concern for what we do, what we want, our likes and dislikes, anything. They don’t give a flying fuck about us, they use decades of research, and an entire industry is devoted to the pursuit of influencing peoples decisions.
And you know what? That is morally wrong. They claim that if a content provider needs to “pay” for the content you are watching/viewing by showing you weight-loss pills, that you are “morally obligated” to watch said advertisements, based entirely on the fact that you “have to pay back” the person that you “took” the content from. Fucking nonsense. It’s the fucking equivalent of letting somebody watch a television show, and then afterwards, or in “commercial breaks” saying it’s “compulsory” for them to donate. Fuck them. Their entire purpose is to influence our decisions for their own selfish gains. How is it “moral” to tell people that they can lose hundreds of pounds by using some weight-loss pill and it turns out that that pill is just a sugar pill? When did the fucking advertisers get the god damned moral high ground? When in the FUCK did advertisers get any god damned semblance of credibility? I’m swearing a lot, I know, but this topic just pisses me right off. It’s such a load of fucking nonsense. I don’t fucking want Advertisements to be influencing my purchasing and buying decisions, Even if you try to ignore them completely, and they are “in the background” as you go in the kitchen or whatever during the commercials, or they are flashing in a sidebar, they still influence you in ways you not consciously realize. For example, when people think of Cola; generally they think pf either Pepsi or Coca-Cola. Royal Crown and any number of other products are essentially ignored. I am not immune to this; I prefer Coca Cola. The thing is- why? they are all just fucking sugar-water concoctions. I’ll tell you why- advertisements. I like coca-cola better; is it any coincidence that between Pepsi and Coke advertisements I personally highly prefer the more conservative and less “psuedo-hip” ads by Coke? I doubt it. Despite the fact that I wasn’t actually consciously paying attention to them, I have been influenced by them. Is it any wonder that products such as Royal Crown and generic colas, which aren’t “cheap copies” as much as it costs the same to produce and they sell it at a reasonable price, have very few advertisements anywhere and have a far lower market share?
I’m fucking sick of hearing arguments that essentially boil down to “you are morally obligated to have people attempt to manipulate you” it’s utter tosh I say. This goes double for advertisements, where the content page is a god damned text file, really. Apparently we are “obligated” to have our browsers follow the various URI’s that go to advertisements and show them to us, using up disk space, CPU time, and most of all, being a god damned fucking annoyance. Another “argument” is that we should view ads on the computer because they are “better” then ads on the TV. What a terrible argument. Dog shit Generally smells less bad then Cat shit, but they are both fucking shit, and the same logic applies to advertisements. These same folks say that Internet ads are better because apparently advertisers can see how many people bought products based on the ad. This is utter and complete nonsense. The advertisers place cookies on our computer without permission, you see, because apparently that permission is given automatically without a prompt; you see they say we are “morally obligated” to view these ads based on the premise that we viewed the content. You know what, if the people who produced the content were to fucking piss-poor to finance it going to television, maybe they shouldn’t have made the damned thing in the first place. I don’t fucking care what anybody says. Advertisers aren’t god damned poor. Neither are any people I know that rely on advertisements. They’re all rich fat cat elitist assholes who are really good at messing with peoples minds. People that think they are most immune to manipulation by advertisements are the most susceptible. They put cookies on our PC, track our movements, and “detect” when we buy a product “based” on an ad. the problem is the data is flawed. first off the idea behind advertisements isn’t necessarily to make an instant sale, it’s to fuck with peoples heads, so the next time they need a Screwdriver, they think craftsman, or the next time they want a pop, they think Pepsi. There is no Customer-happiness motivation here, the company just wants to sell you shit and make a profit.
Think about this the next time you buy a brand-name product. Do you truly need to get Coca Cola or pepsi? would not one the 99 cent bottles do? Seriously, it’s not “cheap” soda except in price. Coca Cola probably cost’s no less product wise to produce then the generic sodas, it’s the advertising campaigns designed to convince us that their formula is worth over 1.50 more then the 00% bottles despite the ingredients lists matching nearly exactly.
Whatever the case, as it stands now, advertising is hardly a positive influence on anybody, since the entire purpose is to influence people for the benefit of the company in question; To call the viewers selfish is to take attention away from the fact that the advertiser themselves is in fact selfish; they really don’t care what people actually want, they want to change what they want so that they want what they are selling, and they do this through advertising. Even targeted advertising is no different, they just change who they send the advertisements to so that the person is more likely the agree with the advertisement it’s still basically manipulation.
800 total views, no views today

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Void « Default
Life
Earth
Wind
Water
Fire
Light 