All posts by Daniel Shumway

About Daniel Shumway

Lead designer and publisher for Eyes Open

Forgiveness as a Secular and Religious Topic

This is a little off topic, but it is the Personal section I suppose, and I haven’t written anything else in a while, so beggars can’t be choosers.

I read a fairly interesting post by Leah Lebrasco recently talking about a conversation she had with an athiest about coming up with good secular definitions of forgiveness that jived well with religious definitions or practices:  http://www.patheos.com/blogs/unequallyyoked/2014/08/whats-the-difference-between-forgiveness-and-self-deception.html

With the for-knowledge that I’m not really talking or interacting with the post at this point, my best input for OP would be that secular forgiveness could be less about internalizing incorrect information and more about willingly eating the consequences of an action even though you don’t have an obligation to.

So even though I understand that I’m taking a disproportionate risk in the future, or suffering in the present, or treating another person better than they deserve, I’m doing so consciously because it sets that person up to be in a better position for the future than they are now.

And if I “forgive” someone but still think negative thoughts about them or let that influence some type of passive aggressive action towards them, I’m not really relieving them of the entire burden of what they’ve done. But I can still relieve someone of that burden and still accurately and honestly acknowledge how this event effects the way I view their probable actions in the future, and the pain it caused/causes me.

If I were following that definition, I don’t think I would look at forgiveness as being a universally ‘good’ or ‘bad’ quality to have, but a tool that needs to be applied in the right situations and in the right ways.

And I like Leah’s justification in that altering your behavior towards other people actually influences the way they act, although I can think of plenty of other reasons you might choose to bias a set of odds or privileges towards another person at your own expense.

All that being said, I think what you would look at as “religious” forgiveness would generally be more complicated than that because it would also take into account an idea of “wrongness” or telos, which would probably be a slightly foreign concept to a purely humanistic worldview, or at least most variants of that worldview that I’ve interacted with.

I know my own views of forgiveness center more around restoring “personhood” I guess (that’s not a very good word for it)? – Acknowledging an idea that wronging other people breaks the wrongdoer (and their telos) in a fundamental way, and forgiveness is more about repairing that thing rather than fixing the effects of that breakage, although restitution/restoration are often important and even crucial after-steps.

My guess is that most Christians I know don’t think of restoration/restitution as being extremely binary good/bad actions either – sometimes wronging others carries consequences to you, sometime’s you’re spared those consequences.

So when a Christian says that everyone should do their best to forgive others all of the time, they’re not necessarily referring to the same type of forgiveness that a secular person would be referring to if they said the same thing – it’s just that I think most Christians would insert a pre-step they’d call real ‘forgiveness’ and refer to the second part as something like ‘restoration’, with its own set of rules.

I realize this is going beyond OP’s original topic, but none of that means that a purely secular individual can’t rationally use or act on forgiveness, even if their mechanics might differ from a more religious person. I don’t think of forgiveness (in general, not going into specifics or implementation) as being an exclusive concept to one particular worldview. And in any case, I’m sure there are plenty of other people, both religious and atheist, who have thought longer and harder about this stuff than I have, so I would always be hesitant to start a conversation like this by saying “No, that’s OUR word, stop using it”.

In any case, closing down that part of the discussion might  prevent me from learning about something really interesting or useful for myself in the future.  A little while back, I got really interested in the concept of restorative justice, enough that I played around with a whole bunch of game mechanics and trying to relate them.  It didn’t result in any actual projects, which is good since there’s plenty of other stuff on my plate, including The Organizer, but it was really rewarding at the time.

I Went to the Woods: Tracy Fullerton

The following article is an adapted summary of a recent talk given by Tracy Fullerton at the Rochester Institute of Technology.  It is intended both to give a small lens into the views of the speaker, and to expand on those views where necessary to provide clarity  and spark discussion.  This article does not necessarily always represent the views of the author, and it does not necessarily provide a perfect or unfiltered reflection of the speaker’s opinions.

Walden is a survival game about doing more than just surviving.

Based on Henry David Thoreau’s famous work of the same name, the game gives players a simple task; survive in the woods for the space of a full year, ranging through 8 levels and 4 seasons.  Players finish constructing a cabin to live in, gather food, and perform other daily chores – everything they need to do to survive.

But over time, basic survival starts to become menial.  Colors in the game start to become grayer, and tasks start to become a grind.  This is where Walden opens up, and encourages its players to occasionally stop and explore – to collect arrowheads, examine plants, and, every once in a while, to simply stand still and admire a sunset or listen to the distant sounds of a civilization.

It’s not just an aesthetic choice – Walden literally tracks how much time you spend observing these phenomenon (self-deemed “wonders”), and makes the world more colorful, lush, and interesting as you encounter them.

Narrative Dissonance

Walden has been in development for nearly 7 years, and it served as a centerpiece to Tracy Fullerton’s musings on what game narrative is evolving towards: the potential of games to communicate ever more complex and nuanced ideas.

“It’s a big rock that people keep on trying to push up an ill-defined hill”

To this extent, a recurring theme throughout Fullerton’s talk was the role of narrative in games.  In modern games, she explained, narrative is misunderstood and misapplied: a component of interaction that we know is important, but aren’t sure of what to do with it or how to best show it to an audience.  ”It’s a big rock that people keep on trying to push up an ill-defined hill.”

“At their core, games are systems of play, ” Tracy remarked, “but for some reason, and I think valid reasons, we also crave for games to be dramatic, narrative, meaningful, and sublime.”

Tracy may have spent a good portion of her early career looking for ways to push narrative forward in games, experimenting with branching storylines, choose-your-own adventure style interactions, and complex, multi-layered stories, but she came away from her explorations with the opinion that, ironically enough, the games’ authors often liked these experiences more than players.

There was an odd disconnect between the academic ideals of the creators and the people actually looking at them, and the narratives being created had an all-too dreamlike quality: they felt engaging in the moment that the player was experiencing them, but fell apart in the light of day, or when re-communicated to other players.

Frustrated, Tracy decided to try tackling the problems of narrative from, as she put it, more “oblique” angles.

When an author tells a story, Tracy explained, the listener may be thinking of different things.  He/she might misinterpret what’s actually happening in the story, what its themes are, or come away feeling a disconnect from what the author actually wanted to communicated, even though the author and listener were each given the same information.

Learning to Dance

To solve these disconnects, we evolve memes and genres, which contain composite bundles of information that we can apply to every story we enter.  Memes, stereotypes, and our expectations of how they play out allow us to minimize the upfront work required to process complex stories and interactions.  For example, all good guys wear white hats, and we instinctively know to root for people wearing white hats.

Games however, haven’t really learned to use these genres effectively.  They’re simultaneously stereotypical and arcane or obscure: filled with mechanics and hooks that non-gamers can’t relate to, but also rooted in the most predictable and over-told stories, often lacking any surprise or subtlety outside of their mechanics.

“At their core, games are systems of play.”

Traditionally, games have attacked their reputations of triviality and cliche by attempting to brute force more narrative, exposition, and plot twists into whatever short stay they have with a player.  These strategies don’t hit at the roots of the problem though, and yield diminishing returns as we increasingly commit more and more of our resources to them.

To hear Tracy talk about narrative, stories have always been less about the dissemination of abstract information, and more about their tone, themes, and the emotional reactions they draw out of the people that experience them.  She describes the relationship between authors and consumers as a literal dance, where “sharing the narrative and interpreting the narrative is in itself a creative act.”

And rather than try to reiterate over the same three dances over and over or to dominate our partner in a vain attempt to control their movements in that dance, we should embrace the collaborative aspects of atypical narrative.

What do you see?

As an example, Tracy  hearkened back to the earliest days of development on Cloud, arguably one of the most critically acclaimed games she’s worked on.  Originally , the team had an extremely complicated backstory for the main character: an alien who was attempting to wash away pollution from their world.

After taking time off from the story to focus on gameplay and tone though, the team started to notice that the story wasn’t adding much, and indeed was actively in contrast to the simplistic and elegant design and feel to the rest of the game.  So they layered the simplest story possible, about a hospital resident imagining themselves floating in the air.

Many of the themes of pollution and nature remained, but they were exposed in more subtle ways, through levels where players washed decay away with rainclouds, and with vast scenic islands.

What the team found was that people started not only empathizing with the character more, but also bringing their own memories into the experience and investing them into the narrative, and they were able to do this because of purposeful gaps and open areas of the game.

Tracy explained that these gaps “promote professional and amateur expansion.” People are able to fill in many details on their own, to flesh out the narrative of the game on their own; and these newly constructed stories are much more personal and empathetic than they otherwise would be.

“If you ask me about my play of Journey, ” Tracy elaborated, “the feeling of that lost civilization and the fact that there was a lost civilization does give me a feeling, but, really, it gives me a tone.”

That freedom, and the concentration on the tone and theme of a story beyond specific details, treats narrative as a framework upon which players build their own experiences.  It’s, in Tracy’s eyes, a more respectful, cooperative way to make games.

Tying a story to a specific piece of information, an extra level of complexity that forces the player to interact with the games themes only from a specific angle and via a very specific methodology, gets in the way of all of that.  You can risk drowning your audience in an attempt to make sure they “get” every piece of your experience and ignoring the potential cultural and personal gaps between author and consumer.

Again, Tracy emphasizes, this is a dance.

Playing with stories

All of that leads back to Walden, and Tracy’s constant struggle towards games that invoke that elusive sense of sublime.  After 7 years of development, Walden still hasn’t been released, but Tracy seems happy with where the game is going.

“Games have the possibility of being lenses that amplify our personal experiences and our narratives.”

“You can trust in your process and your team as long as you stay centered on what attracted you to a difficult idea,” she explains.

Well-trodden stories and arcs like the Hero’s Journey are great, but Tracy’s looking for new ways of approaching narrative in entirely, and she’s convinced that these atypical frameworks will enable creators to steadily get closer and closer to the ‘sublime’ they’re looking to express.

Tracy reflected on a previous experience she had playing Warcraft and visiting a mountain in the game with a friend.  While playing the game, she suddenly recollected a previous hiking trip in China, and was surprised to find that both the similar and contrasting elements served to underscore and enhance her memories.

She clarified, “Games have the possibility of being lenses that amplify our personal experiences and our narratives.”

Tracy is adamant that it’s through games that she wants to explore this idea.  She’s seen the attitude that art experiences and sublime narratives are separated from games and should be pursued separately, but disagrees.

“I love games and I think they’re one of the most beautiful aesthetic forms we’ve ever created…  When a form changes and when it evolves, that doesn’t mean it divorces itself from its really beautiful roots.”

Player Roles: Observers and Participants

Standard disclaimer, take everything I say with a grain of salt, etc etc… views can change and every theory evolves.  I am by no means whatsoever an expert on game design.  Form your own opinions.

Fighting yourself

A little less than a year ago, I wrote a post talking about what I viewed as a dichotomy between obsession and contextualization in ideal media consumption.  I ended up asking:

To summarize, my problem was an observation that some my best experiences with media happened when I obsessed over the content, whether that content be games, book, movies, or anything like that.  I was also observing that trends like escapism and long-term obsession were harmful to my overall health and overall media consumption.

This was really weird, and I didn’t like it.

Traditionally, when we talk about player motivation, we bring up classification systems like, for instance, the Bartle types of players.  These theories, for the most part, work well.  The problem isn’t that they’re wrong, but that they are riddled with problems when we rely on them for generalized design:

  • They’re limited in scope - Bartle types only describe player goals, not how they interact with those goals. They deal with player motivations on a somewhat surface level, but they don’t look at the root causes of those motivations, which causes us to run into bizarre edge cases that don’t fit neatly into categories.
  • They’re not as predictive or as useful as we would like – It’s difficult to design a game with Bartle types in mind. There’s not a lot of depth to implementation of Bartle types into games, and there’s not a lot of room for us to build theories on top of Bartle types.  We’d like a theory that allows us to expand in the future.
  • They’re trying to do different things than designers want - Bartle types (and similar classification systems) are designed to place players into categories – to explain in general terms what a player’s motivation is.  That’s a very good thing, but it doesn’t really help us describe how players play games or what it looks like when players play games.  Essentially, these classification systems are just more information on demographics.  Bartle might be completely correct, but we’re looking for different information than he’s providing.

Again, this isn’t to say that I think Bartle is wrong – just that I don’t think his theory alone is sufficient when talking about player motivations.  I’m looking for a descriptive theory; one that describes what the process of playing a game looks like for the average player, and one that I can use to shape how my game treats the player and what it shows the player at any given moment.  If at all possible, I would want my theory to avoid interfering with Bartle types and to avoid replacing them, but rather attack a different part of player motivation so that both theories could survive in harmony.

Ideally, I’d like to use something similar to a narrative arc, but applied to players.  And because it’s been bothering me a lot over the past year, I want it to address some of the concerns I had in the previous article about the relationship of contextualization and obsession/escapism in games.

Let me steal a name for this:

There’s a data-gathering technique in anthropology called Participant observation – it’s not really all that similar to this, at all.  But there are things that feel the same at first glance, so it’s perhaps not so bad that the names and terms I’m using are similar.  Basically, Participant observation works off the theory that we’re best suited to gather data on a culture if we’re in that culture; but not so far in that culture that we lose our objectivity.  So the people using this method try to maintain a balance between their roles inside a group and their role outside of a group.

In a generalized sense, I would like think of players as a type of Participant observer – a researcher that immerses him/herself in your game to gather information.  It’s a crude, inaccurate and incomplete analogy that will break down steadily as you read through this article, but there are some useful parallels to draw from it.

To be more specific and more accurate, I propose that we’re incorrect  to talk about a player’s experience from a singular perspective, and that it would be more accurate to break the player into multiple sub-characters, who will switch control with each other as needed throughout the entire experience.  The idea is to think of a “player” as someone who consists of two entirely separate yet simultaneously acting individuals who advise each other and trade off control of the individual.

I refer to participants and observers as literally being separate people, working together to form a singular “player unit” – almost as if the player had multiple personalities that manifested themselves as they played a game or watched a movie.  The reality is, of course, probably more complicated, but this distinction allows us as designers to remove a large number of contradictions in our understanding of how players interact with games, because we no longer need to view player’s engagement as a singular static process.

Each “part” of the player fulfills one of two separate roles: the observer and the participant.

I’ll go into these roles in more detail below, but to quickly summarize, observers act as gatekeepers to gauge a game’s quality, the creators intent and execution, and the effect of the game on the player.  To do this the observer takes a realistic, objective approach to the media.

Participants take an approach that a game, its mechanics, and worldview, are real, or at least reflect reality in a completely perfect sense.  This is a more difficult concept to wrap one’s head around, but would be closely related to what we would more commonly refer to as a suspension of disbelief, or immersion, or a sense of empathy for what is happening in a game.

Setting up remote access on the Raspberry Pi.

So it turns out that the documentation of getting remote access set up on the Raspberry Pi is really straightforward.

I’ve  been using a combination of three articles, all through the same site.  Then end result is that this is a ridiculously easy setup, and the only annoying part will be switching between mouse and keyboard.

The second is the more complicated setup, but still fairly easy.  There’s little reason not to set up a graphical login for the Pi, unless you really like the idea of having only the command line and never even the option of using anything else.

I’m using wireless instead of ethernet, and I’ve unfortunately yet to see if that will give me any additional problems with the final step below.

All of this being said, the Raspberry Pi practically begs to be set up remotely, which is good, because setting it up physically with monitors, keyboard, internet, and mouse is kind of a pain in the neck.

One of the things I was worried about going into development on the Pi was that stuff like this would end up being a really annoying timesink that would get in the way of doing actual development.  Thankfully that’s not the case.

What I’m Up To: TimeScrub.js

Because I’m in a college class called Advanced FOSS, I get to periodically pick cool things to work on and pretend it’s work.  This is the most recent 4 week project I’m proposing.  It’s been in the back of my mind for a while now, and I’m fairly excited to get an excuse to finally sit down and do it.

TimeScrub.js

TimeScrub.js is going to be a middleware API that records and saves output from simulations (or any program with regular output) over time.  TimeScrub.js exports these “ticks” into a format that can be re-read into another program, like a visualizer, or the original program, allowing for time-travel within simulations.

The goal with TimeScrub.js is to be extremely tight, well-encapsulated, and non-intrusive. I want to encourage simulations to separate into a model-view-controller design pattern.  A simulation could be run in advance to being displayed, allowing better data and visualizations to be shown to the end user.

I’m also am interested in seeing how it could be implemented in deterministic simulations for time-travel, allowing users to go back in time, change a variable, and then re-run the simulation to see what changed.

What I’m using:  

I plan on using Node.js and pure JavaScript.  My secret goal behind this is to figure out in broad terms how to set up a Node.js server and get everything running smoothly in it.  The actual JavaScript parts don’t scare me much, I’m fairly confident I’ll be able to implement the actual library without much trouble at all.

Where I’ll be bundling the final product:

I’ll obviously have the source code available at GitHub, but I’ll also be targeting NPM, the package manager for Node.js.  Targeting Node.js works into the core ethos of the project – the idea is that you run a simulation on dedicated hardware, and either plug the hardware into a monitor and set yourself up with a c

Target Hardware :

I want everything to run on Raspberry Pi.  Since in the back of my head I’m hoping someone could use this software in something like a virtual aquarium or terrarium

Temporary Milestones : 

I’ll have about 4 weeks to get the project to completion.

  • Week 1 (Next week): Planning, pre-documentation.  In the interest of keeping everything scoped well, I don’t want to start coding until I have my entire featureset planned out.  Along with that, I want to have a general idea of how I’m going to do that – ie, what data structures I’ll use, and what things I should be asking for help with.
  • Week 2: Setting up Node.js – I want to get a better sense of what the platform is capable of, and I want to make sure that I understand the inner workings behind what I use.
  • Week 3: Implementation.  I’ve started thinking about what the core features should be and building some data structures in the back of my head, but all of this will obviously be more fleshed out during week 1.
  • Week 4: Packaging, setting up post-documentation, setting up additional tickets on GitHub.  I’m developing this for a couple of reasons, but one of them is that I know I’ll get use out of it.  In the interest of allowing others to do the same, I want the both setup and documentation to be simple, elegant, and easy to follow.  The less work it is for someone I haven’t met to set this up as middleware in their own projects, the better.

Who I’m working with : 

I plan to leverage some of the students in class to a small degree; one of my roommates is a prolific Node.js user, and I know he’ll be able to help me out occasionally when I run into issues.

I also want to get some feedback/advice from one of the professors at my college by the name of Cody Van De Mark.  He’s an amazing coder, with a great understanding of the backend server stuff that I’ve yet to really explore.

 

JavaScript: Abusing “this”

This post is an adaptation and expansion of a recent lightning talk I gave.  You can find the original slides here.

This

Let’s talk about the way  this works in JavaScript.

The first thing you learn when you’re studying JavaScript is that you can never assume it works the same way as another language.  For example, in a normal language,  this is a variable that is defined at compile-time.  It’s used within code to refer to a property on the current object you’re writing for. In JavaScript,  this means something else entirely.  It’s easy to miss the differences at first, because when used in a very straightforward manner,   this seems to exhibit some of the same behaviors.  It’s only when you start to experiment that everything breaks down.

If you’re like me, you probably once took an introductory web development class and had all of the confusing stuff with  this explained to you in the following manner, using the following code:

This is a fairly inaccurate way of describing what’s actually going on, and it shouldn’t take us long to poke some holes in it.

The first thing that should spring to mind is that myPublicProperty breaks as soon as we access it without the this keyword. Which is slightly weird. Also, we run into scenarios like below:

So we could play around with these edge cases all day, but there’s not much of a point.  If you’re really interested in getting a complete picture of what this actually is, I have a number of articles I’ll recommend at the bottom of the post. Otherwise, I’m just going to give you a quick interpretation that is, at least for our purposes, fairly accurate.

Assume that this is a global variable. When we call a method, this gets set to that method’s current scope. Per example, the below code :

Whenever you use this internally, you’re making a call to the object being stored in this global variable, and all of your data and method calls and so on happen relative to the object in that variable.  Simple enough, right?

Call and Apply

The important thing to remember is that JavaScript sets this at runtime, while the code is still executing. If we could change the definition of this before we called a method, we could do some cool stuff. And it turns out we can.

In fact, this is pretty much how JavaScript makes new objects in the first place.

What methods like  call allow us to do is to invoke a method and pass in an object that we want to use as the new   this for the duration of that method call.  And what that allows us to do is Object Oriented Programming on a very fundamental level.

Context is everything

For example:

JavaScript checks to see that a method exists before it allows you to call it, but it almost never checks to see that the method is being called in a context that makes any sense at all.  It’s not an oversight, it’s a feature.  But it’s a feature with a wild potential for abuse.

Another interesting feature of JavaScript is that it sometimes uses this internally.

We just got JavaScript to push an element onto the number 5, then pop it back off.  And the absolutely amazing, fantastic thing about all of this is that it worked perfectly.  No errors at all.

And yes, it’s a little bit tricky that we made a new number instead of sticking with a primitive, but the point still stands.

 A mild case of legitimacy

So, inheritance.  Here’s a fairly good method of doing it, as stolen from John Resig.

Wait, wait, don’t leave yet!  We can simplify all of this!

Good, you’re back.  So it’s not going to be as production ready, and we won’t get any of the nice typeof behaviors or even proper method overriding, but what if I told you we could get inheritance working in one line of code, without worrying about prototype or anything complicated like that?

In fact, let’s go a step farther and make multiple inheritance:

Easy, right?

All we have to do is take advantage of some of the things we already know about  this  and how objects get created in the first place.  We use our parent classes as constructors, but instead of making new objects, we just run those constructors with our new object as the current context.

Animal.call(this, "meow");

The result is that we’ve basically just chained two constructors together.  And again, half of object creation takes place in the constructor anyway, so we’re not really breaking any of the existing JavaScript tenants.

Again, there are some weaknesses with this method, many of which you can probably come up with on your own.

And there are many good questions you could ask right now that I’m not going to answer:

  • “What happens if I inherit from two parents that have methods or properties that share the same names?”
  • “What if I do want to have method overriding and be able to call base and super without breaking stuff?  How would I do that?”
  • “Isn’t it inefficient to be recreating all these methods every time I make an object?”

But still, if you were working on a tight schedule for a class or side-project, and didn’t really understand how the Prototype works, this would be a perfectly reasonable, if somewhat limited solution you could use in your actual code.

Yay, JavaScript!

Some follow-up links

To be expanded as necessary.

What I’m up to: Viral Functions

I’ve been working on a little side project for the past week that gets functions in Javascript to infect other functions and wrap them in custom snippets of code.   It’s modeled after how viruses in the body attack cells and reprogram them to build more viruses.

It’s largely an exercise in curiosity at the moment, I don’t really know how effective it will be or what I could end up doing with it.  I had a working version that I ended up forgetting to save on jsFiddle, which was a huge bummer because I don’t remember how the heck I made it work.

Recently I recreated the base using (I think) a different method.  Contrary to many other objects, functions in Javascript are passed around by value, not reference, because Javascript.  Normally you’d wrap the function in an Object, but since I won’t be able to do that with the final product, I use a different method to make sure I’m accessing the actual function and not just a copy.

I believe the below fix would only be necessary on functions in the global context, but I haven’t done any testing to confirm this.  I wish I could find my original code.

 

I’ll keep the blog updated if anything interesting happens with it.

Fun With Spam

One of the joys of running a blog or a website is getting spam.  My spam comes and goes in waves, sometimes I’ll get one or two per day, once I got nearly 60. I go through my spam to make sure I don’t ever accidentally filter out comments, and in the process, I’ve found that there are several basic groups that most of my spam falls under.

I’d like to take you on a wild ride through some of them.

“Website traffic doesn’t come easy these days. It’s hard and it usually takes a long time. In many cases, too much time… So much that you might be ready to call it quits. Someone shared a web traffic service with me on my website and I want to share it with you. I was skeptical at first but I tried their free trial period and it turns out they are able to get hundreds of visitors to my website every day. My advertising revenue has increased tenfold. Check them out here: [CENSORED LINK]“

The best analogy I can think of for this is someone walking into a restaurant, receiving a meal, and then standing up and shouting at the top of their lungs, “I know a guy who’s really good at promoting restaurants, so maybe if a manager or waiter is listening, you might want to talk to me!”

I understand this must occasionally work or else they wouldn’t do it, but I can’t filter into a separate context. I guess one of the differences is that when you shouted in the restaurant, the other patrons could gather around you, box you in, and cause you literal physical harm.  And I guess that can’t really happen on a website, unfortunately.

A similar genre…

Hello Web Admin, I noticed that your On-Page SEO is is missing a few factors, for one you do not use all three H tags in your post, also I notice that you are not using bold or italics properly in your SEO optimization. On-Page SEO means more now than ever since the new Google update: Panda. No longer are backlinks and simply pinging or sending out a RSS feed the key to getting Google PageRank or Alexa Rankings, You now NEED On-Page SEO. So what is good On-Page SEO?[CENSORED EXTREMELY LONG, DETAILED, UTTERLY RIDICULOUS DESCRIPTION OF "GOOD ON-PAGE SEO"] ….wait there’s even more Now what if i told you there was a simple WordPress plugin that does all the On-Page SEO, and automatically for you? That’s right AUTOMATICALLY, just watch this 4minute video for more information at [CENSORED]

There’s a guy someplace imagining how I’m going to go over this and say, “Well this kind commentator sure knows what he’s talking about.  My goodness this is scary;  I don’t have time to fiddle around with h1 tags or to make sure my links contain my keyword and I don’t do html, and what the heck am I ever going to do about this awful situat- HOLY CRAP THERE’S A PLUGIN AND A 4 MINUTE VIDEO I CAN WATCH AND FIX EVERYTHING?  TELL ME MORE GOOD SIR!  TELL ME MORE RIGHT NOW!”

Moving on from straight up advertisements…

“Many thanks for this article. I’d personally also like to convey that it can become hard when you are in school and starting out to establish a long credit standing. There are many learners who are simply just trying to endure and have a protracted or beneficial credit history can be a difficult element to have.”

Thanks for your comment! I was just complaining that magic systems in first person games have started to develop an unfortunate tendency to devolve into a secondary gun slot that uses manna instead of bullets, but I can see how that would make you think about credit standings.

“Travelled on the internet and got here. What a wonderful invention of mankind . Through a network communicate , study , read … So you met .”

Sometimes spam teeters between making sense and making you double take. For instance, this person is very excited about this newfangled world-wide-web.  Good for him.

Greetings, super job, basically wasnt so busy with my searching I just read your full blog. I should say i have to express gratitude!

I shouldn’t make fun of this one, maybe it was just written in a foreign language and translated poorly? I seem to recall reading an article at one point that described a fair number of spam operations as being sweatshops in foreign countries. Unnamed worker, I already feel bad that you’re being forced to work a morally dubious job in probably fairly terrible conditions so that you can provide for your family on a doubtless insufficient income. Insulting your English feels like I’m crossing a line. I probably should have let that one go through on the off-chance a worker somewhere would get a pay-raise from it.

This post concerning SEO gives remove picture for new SEO users that how to do SEO,whereupon reserve it up. Good work

Not sure about this one though. Ignoring the grammar entirely, I’ve already shown a very detailed comment above that was telling me I needed a lot of help with SEO.  So at the very least, I already know you have lower standards than most of my other readers, and I’m inclined to ignore your advice.

“#uname, maybe you ‘re right. But do not overlook the back of this issue. Here can see the Old by your question [CENSORED LINK] Christmas tree coupon Oh and do not forget the main issue raised in the topic.Source Code – Pong Clone | Latinforimagination”

And this is just insulting. Your stinking code is all broken. I even know exactly what your problem is – you’re not handling edge cases.  Your comment generation stuff doesn’t know what to do when it’s not replying to something with a readily available username, so it just throws the default field in. But look, this is easy to fix.

There.  It’s not elegant, but it will work, and you won’t even need to edit any of your ‘fill up textBlock’ code to integrate it in. I have to ask though, if this whole system is automated, is there a specific reason you couldn’t come up with a more readable comment to copy and paste to articles?  You’re smart enough to set up a bot to do your spam for you, but can’t proofread your comment to try and get it to make sense?

“whoah this weblog is wonderful i like reading your articles. Keep up the good work! You know, many individuals are looking around for this information, you can aid them greatly.”

Back to the spammers that actually care enough to type in coherent sentences.  It’s the small details that I’m really grateful for, like the comma in the compound sentence. They did miss a period and some capitalization, but heck if I’ve never had erors on this blog, so I suppose it’s not my place to throw stones.

Spam length varies as well.  Some spam, like what you see above, is long and flowery, assuring me of my place in a world of uninformed masses, wildly searching for my tomes of knowledge. And some is more succinct.

“Nice man”

This is then followed by somewhere around, and I am not even remotely exaggerating here, 46  links to different profiles on a personal branding site. But I’m guessing I’m meant to think the top line was the main point and the rest of it just an afterthought.

Hey, at least they’re better than the posts titled only with word like :

“Deniskrav”

I’ll be honest, I don’t know what this means.  I’d like to assume it’s just in another language, but it’s quite possible this isn’t even a word.