My Personal Advertising Experiment in All Points Bulletin

I’ve been playing All Points Bulletin as of late, and have had a good time doing so. Despite numerous flaws, it has by far the best customization tools I have ever seen. The company that created the game is called Realtime Worlds, which was founded by David Jones, who is most commonly known for creating the Grand Theft Auto franchise. Below is a video on the GameSpot YouTube channel, in which Jones describes some of the customization tools available in the game.

The video does a decent job at giving you a quick overview, but you really have to use the tools to fully understand. You can make stuff that looks like it was made in Photoshop, that’s how advanced the customization options are. Layers, transparency, gradients, masks, custom symbols, all of these modifications/effects are possible in the APB editors.

So, given the flexibility, I decided to make use of the customization tools to design a sleeveless shirt for my character. My goal was to make something close to the Awesome smiley. Here’s what I came up with:

In-game character featuring an Awesome smiley shirt, which I made.

My character is an Enforcer, essentially a cop. Imagine seeing that happy smiley running towards you. While definitely not perfect, I found it was a decent homage to the smiley, seen below:

Awesome Smiley

I got the image from this Wikipedia page.

I’ll likely work on a better version in the next couple days; however, after making such customizations – I realized something else. I could very easily use my in-game shirt to advertise for my website. APB already contains in-game advertisements, both visual and audio. I never had anything against this, given that they are trying to depict a modern urban environment, which does feature advertisements in real life. The idea of adding my own advertising intrigued me. As a quick test, I tried just stamping my domain on the back of my newly created shirt:

MattRefghi.com shown on the back of a shirt in APB

Pretty simple to make, and fairly easy to read – even when the player is running with low texture quality. Still, it brings up some interesting questions. First of all, did Realtime Worlds cover this possibility in the APB license agreement? Second, if my full name is visible in the game, should my behavior change?

To answer the first question, I checked the APB End User License Agreement, and I found what I was looking for. (UPDATE: As of May 29th, 2016, I link to their updated EULA, which may no longer feature the text I’m quoting.) See the bold text below:

Rules of Conduct
9.4 You shall not (and you agree to not) generate any User Generated Content, or use the Game in a way, that:
9.4.1 infringes the rights of any other person or entity (including, without limitation, their Intellectual Property Rights) (and references to “any other person or entity” shall include RTW);
9.4.2 breaches any Applicable Laws;
9.4.3 in RTW’s absolute discretion, RTW considers:
(a) is defamatory, vulgar, obscene, libellous, harmful, abusive, harassing, hateful, invasive of another’s privacy, sexually explicit, or offensive (whether in relation to race, sex, religion or otherwise) or denigrating to anyone’s reputation or general standing (whether or not actionable);
(b) is seeking to promote or encourage illegal activity;
(c) is false or misleading to others;
(d) is seeking to access another person’s personal information or information relating to another APB Account;
(e) is seeking to interrupt, destroy or limit the functionality of the Game or any servers or networks connected to the Game or another’s computer; or
(f) amounts to unwanted or unauthorised advertising or solicitation.
(g) is stalking or harassing of another person.

The wording there offers a lot of flexibility for Realtime Worlds. Is my advertising unauthorized, or unwanted? I’m not advertising for a commercial company here, just a personal domain, with a blog. Sure, one day, there may be a commercial component associated to my domain, but that’s not currently the case. Either way, they specifically say it is at their absolute discretion… so it could very well be seen as both unauthorized and unwanted, since it is entirely up to them.

The argument gets more complicated when you consider that APB creations can be manufactured. Once you come up with a design, for example, my Awesome homage shirt, you can sell copies of the shirt for in-game credit, or even credit towards APB playtime. To play APB, you have to buy hours of play, or subscribe to a monthly pay-to-play plan. Selling customizations for playtime credit is therefore an attractive option for people that want to play the game long-term. Now, if you sell something you create, it is forever related to your in-game character name – the person who owns it will always be able to see who manufactured it. This makes it possible for people to behave as fashion designers in game. Yet, in real life, what do we typically see on clothes when they’re part of a particular line? Logos. A reference to the line of clothing you are wearing, the manufacturer. So, if you’re manufacturing clothes in APB, is it wrong to put your domain on there? I’m not sure it is, but, of course, I feel it must be respectfully placed, and very small to not grab too much attention. I’m sure some people would do the opposite, though – so the argument still stands… though Realtime Worlds would ultimately decide.

Advertising also comes with a cost on the privacy side; consider this: my character’s name is actually “MattRefghi”, and his shirt, as you’ve now seen, sports my domain in a very visible fashion. When playing, I feel like I have to be careful with what I do or say, because it is pretty obvious who I am in real life. I was never a guy who was negative with other players, but sometimes I did utilize strategies that weren’t particularly pleasant for my targets. I’ll probably visit some of these strategies in a future post.  In APB, like real-life, I must consider my actions before I execute them, because they’re ultimately bound to me. As scary as that might seem to some, I think this is a good thing… people would be forced to behave with a certain amount of class if their online interactions were always bound to their real life identity. In multi-player games, Griefers would likely be greatly reduced, and everyone should have a better time online.

A griefer is a player in a multiplayer video game that purposely irritates and harasses other players.

I may contact Realtime Worlds for more information – I think it would be interesting to see what they have to say on the matter. In the meantime, however, I’ll keep thinking of amusing customization ideas.

Update: A few days after posting this, here’s what Blizzard Entertainment announced:

The first and most significant change is that in the near future, anyone posting or replying to a post on official Blizzard forums will be doing so using their Real ID — that is, their real-life first and last name — with the option to also display the name of their primary in-game character alongside it.

[…]

The official forums have always been a great place to discuss the latest info on our games, offer ideas and suggestions, and share experiences with other players — however, the forums have also earned a reputation as a place where flame wars, trolling, and other unpleasantness run wild. Removing the veil of anonymity typical to online dialogue will contribute to a more positive forum environment, promote constructive conversations, and connect the Blizzard community in ways they haven’t been connected before. With this change, you’ll see blue posters (i.e. Blizzard employees) posting by their real first and last names on our forums as well.

I like it… but we’ll soon see whether the idea can float, or not.

Two Inexplicably Dangerous Characters

Yesterday, as I was writing an e-mail to one of my employer’s clients, I encountered a strange bug with Excel. The e-mail I was writing included instructions that the client should perform, and one of the steps actually involved creating a CSV file, which would then be opened in Excel. Before sending the e-mail, I decided to step through the instructions myself, and make sure everything worked as I expected. When I reached the CSV step, I found that while I could export it fine – I couldn’t open it in Excel. I’ll guide you through what followed using a really simple example CSV:

ID,NAME

1,KARA

2,GAIUS

3,SAUL

As you can see, the above CSV contents are completely valid. However, when I tried to open it in Excel 2000, I received this error message:

SYLK: file format is not valid.

When I tried to press the OK button, Excel just gave up loading the CSV. While I didn’t know what they meant by “SYLK“, I assumed something was wrong with the CSV export. Maybe there was an invalid, invisible character in the file, preventing Excel from parsing it – perhaps making it think it was another format. To test this theory, I used one of my favorite features in Notepad++, one that allows me to see all characters, even those which are normally invisible.

Using Notepad++ to reveal hidden characters

Using the feature, I could tell that there were only carriage returns (CR) and line breaks/feeds (LF), which are perfectly valid for a CSV.

With that possibility ruled out, I decided to try the same CSV in a newer version of Excel – the 2007 edition. When I went to open it, I was unfortunately greeted with the same type of errors:

The file you are trying to open, 'Example.csv', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

Excel has detected that 'Example.csv' is a SYLK file, but cannot load it. Either the file has errors or it is not a SYLK file format. Click OK to try and open the file in a different format.

Despite these errors, through the selection of the appropriate dialog options – I was at least still able to view the CSV within Excel:

At this point, however, I was really intrigued – so I googled the original error message I received in Excel 2000. I found a Microsoft article explaining the behavior, while also offering a workaround. When reading the article, I could barely hold in my laughter:

SYMPTOMS
When you try to open a text file or a comma-separated variable (CSV) file, you may receive the following error message:
SYLK: File format is not valid

CAUSE
This problem occurs when you open a text file or CSV file and the first two characters of the file are the uppercase letters “I” and “D”. For example, the text file may contain the following text:
ID, STATUS
123, open
456, closed
Note This problem does not occur if the first two letters are lowercase “i” and “d”.

WORKAROUND
To open your file in Excel, open the file in a text editor, and then insert an apostrophe at the beginning of the first line of text.

How to Insert an Apostrophe
To add an apostrophe to the beginning of the first line of text in your file, follow these steps:
1.  Open the text file in a text editor, such as Notepad. Click before the first character in the first line of text. Press the APOSTROPHE key on your keyboard (‘).
2. On the File menu, click Save. Quit the text editor. You can now open the file in Excel.

Source: http://support.microsoft.com/kb/323626

I think you need to be a developer to truly appreciate how funny this is. I had to mention this bug to the client, because the likelihood of the ID being the first text in the file was pretty high. Even then, I mentioned they should read the Microsoft article only if they encountered the problem. No way am I going to explain the awkward workaround myself.

So, I confirmed that the bug was still present in Excel 2007. I just hope that Microsoft fired the developer that came up with the SYLK detection logic. Assuming that a file is a particular type based solely on the first two characters (“ID”) is a big risk, especially when those two characters are part of the alphabet, and are also common in IT.  I’m guessing there are complexities I don’t see… or at least, I hope so. Either way, their workaround is really unbelievable… they’re actually telling people to add an apostrophe as the first character of the file. I’m aware that Microsoft is a large complicated beast with many different teams  involved in releasing bug fixes, but this one is just so ridiculous.

Opera’s Quick Download Feature

There’s a particular feature I’ve always liked in Opera. I’ve seen it implemented in slightly different ways within other browsers. Let’s say I wanted to download my blog’s sitemap.xml file, and I wanted to do this strictly from within the browser. When I visit the link:

https://mattrefghi.com/sitemap.xml

My browser doesn’t download the file, it merely displays it. This happens because browsers know how to display XML, and they figure it makes more sense to show you the content – rather than initiate a download. The behavior is different with “.zip” files, for example. Browsers usually initiate a download when they are pointed to a URL that ends in “.zip”. Downloading the physical XML is therefore slightly trickier. In Opera, I can just paste that exact URL into to the Quick Download box at the top of the Downloads page. When I press ENTER, it automatically downloads the physical XML file – rather than trying to display it.

Opera's quick download feature allows me to download files without first viewing them in the browser

I’ve used this countless times over the years. The same is possible in other browsers, but it usually isn’t as quick as Opera’s implementation. For example, in Google Chrome, I’d first have to view the page, click “Control The Current Page” button, and then “Save Page As”. I would then get a” File Save” dialog, which allows me to change the name, or simply press OK to save the file.

In Google Chrome, the Save Page As feature lets you save the physical file

Certainly not as quick as Opera… and what if the XML file was massive? I’d have to wait for the browser to first display it, then I’d be able to download the physical file.

One more reason to keep Opera installed on my computer.

An Endless Wait For IntenseDebate

UPDATE: Soon after I wrote this article, Michael Koenig of IntenseDebate posted a comment with an offer to help me via his personal address. I appreciated the gesture, and made some modifications to the article below to reflect that. I think for the time being I will be keeping the default WordPress comments, but will not completely rule out IntenseDebate for the future.

In the beginning of April, I became aware that my blog was corrupt – no articles were visible, and the visuals weren’t right. I promptly contacted my web host pair Networks, and after an hour of trying different things – their agent (who was extremely helpful), told me it was likely a problem within WordPress. He tried repairing the database, but subsequent browser refreshes just corrupted the WordPress database further. With this knowledge, I thanked the agent for his help and prepared to restore my blog in a fresh copy of WordPress.

By the time April 10th came around, I had mostly everything working – the only problem left was the comments – a good 90% of them were not appearing in the articles. You see, I’ve always used IntenseDebate for my comments. It had a good feature set, and did exactly what I expected it to do. When I installed a fresh copy of WordPress, I naturally installed IntenseDebate very early on – and yet, it didn’t restore my comments properly… the vast majority were simply missing from their respective pages. Concerned, I contacted their support address, providing plenty of detail, and offering URLs to illustrate my point.

The general format of my e-mail to IntenseDebate. Plenty of details, and links to illustrate my point.

I decided to wait for a response before I restored my blog fully – comments were too important to me.

Two weeks passed, and I still hadn’t heard back… so I submitted a support ticket via their website, including the same information I sent via e-mail. Considering that e-mail (as a medium) isn’t flawless, I also asked whether they received my e-mail or not. I realized that it was even possible that Gmail’s spam blocker was eating their message. To cover that possibility, I started regularly checking and deleting my spam. But time passed, and my site remained down – all without the slightest word from IntenseDebate. I started to get annoyed… especially when I noticed that they were happily telling people to contact their support address on their Twitter page. Yet, no help available for me. So, as you can imagine, I logged into Twitter, and posted the following message:

A message I left on Twitter in an attempt to contact IntenseDebate

As I’m writing this, they have not replied to me. They still continue to reply to people on their Twitter page, but they have not acknowledged me in the slightest.

On May 2nd, I decided to drop IntenseDebate. I had to manually make corrections in my WordPress database, but after waiting so long, it was an attractive option.

Could it simply be an isolated incident? Perhaps… but I still consider it difficult to forgive.

UPDATE: Soon after this was posted, they replied to me. See the update at the top of this post for details.

Turning a Cat Into a Dog: Feeding Behavior

I’ve always preferred cats over dogs for one simple reason: independence. Still, I find myself wanting to enforce certain behaviors that are, well, dog-like.

The student

Whenever I grabbed the bag of food to feed my cat, he would get really excited, sometimes even blocking my ability to pour the food by sticking his head in the bowl. This eventually started to bother me, so I decided to train him how to behave when I’m giving him food. I decided he shouldn’t be sticking his head in the bowl – he should be patiently waiting until I pour the food, and also wait for my command before he begins eating. I felt this would help cover cases where I wanted to add more than one type of food to the bowl. Also, without waiting for my command – he might run to the bowl too early, potentially getting in my way again.

So, here’s the approach I take:

1) Grab the bag of food, and approach the bowl. If your cat is anything like mine, he’ll be running around in a hyperactive frenzy, meowing and sticking his head in the bowl. My cat’s bowl is on the floor, so I stand in front of it, holding the bag of cat food.

2) Lightly push the cat away from the bowl, and after doing that, say “Stay” firmly as if you’re telling him to stop doing something bad. Use a hand gesture also, telling him to stop. If the cat never encountered such a command before, you may have to do this about fifteen times. When the cat stops and sits down, quickly pet him on the head, and say “Good” in a positive tone… but watch out. He might see this as a total green light, and will try to walk towards the bowl. Because of this, I find it useful to tell him to “Stay” multiple times, even after saying “Good”. This makes him realize that he’s not out of the woods yet, he has to behave. Over time, after multiple of these feedings, you can reduce the amount of “Stay” commands, and the cat should still behave. The pushing should be the first thing you get rid of, though. The verbal command and hand gesture should be enough.

The student 

3) Now that the cat is sitting watching you (at least an arms length away), you can start bending down to pour the food in the bowl – but keep an eye out. Don’t allow the cat to come towards the bowl as you are doing this. If you need to, say “Stay” in a negative tone at intervals while you are doing this.  If the cat comes towards the bowl while you are doing this, stand up – don’t give him food. Start again at Step 2. Ideally, you want to pour the food and have the cat patiently waiting while you do so, sitting at a distance.

4) With the food in the bowl, you can now stand up – but again, keep an eye on the cat – he might see this as an opening to approach the bowl. Don’t let him do that. The cat should remain sitting patiently until you give the command to eat. I usually wait at least ten seconds to see that he’s still obeying the rules, and then I say “Come, [Name]!” in an overly positive tone (though I say the French equivalent, for some reason), while backing away from the bowl. The overly positive tone and the physical retreat are clear messages- the cat should run towards the bowl, excited. Make sure to sound excited yourself, that way he will have no doubt that he can approach.

Note: The cat will likely not obey well the first time, so you might want to give him food once you see a sign of improvement. You can just continue the next feeding, trying again to move towards this new behavior.

So, there it is – how I trained my cat to follow a specific set of rules when it is time to be fed. It works well – but if you stop enforcing the rules for a few weeks, the cat will stop obeying them – so this needs to be maintained.

The Road To Nowhere

Due to my choice of profession, I tend to spend a lot of time using computers. Consequently, I work with a lot of applications – that means I see lots of different user interfaces. Some are good, some are bad – but every now and then, I find something in between. Sometimes, it perfectly showcases the developer’s sense of humor.

For example, here’s what the “Go To” dialog looks like in Notepad++. You can access it by pressing CTRL+G.

The Notepad++ "Go To" dialog features a button that says "I'm going nowhere", which you use to close the dialog.

Not sure that’s the best design for the dialog – but I appreciated the humor.  🙂

How to Temporarily Disable System Beeps

Computers have a means of communicating without external speakers – they do so via hardware beeps. These are the main scenarios I’ve seen where a computer beeps:

  • There is a problem when the system tries to boot, so it attempts to communicate what went wrong – via a sequence of beeps.
  • Too many keys were pressed at once on the keyboard.
  • The system is configured to beep whenever an alert dialog appears.

The last one I found particularly annoying when I was developing Visual Basic 6 applications at my day job. For some reason, Visual Studio 6 likes to communicate with you via alert dialogs. Visual Studio .NET corrected this – instead of a typical alert box, they list the errors and warnings in another pane. Despite this, some of our code was still in VB6, so I had to use it. Thankfully, there is an easy way to disable the beeps.

In Windows Server 2003:

  1. Click Start > Run.
  2. When the Run dialog appears, type “cmd” and press ENTER.
  3. When the command prompt appears, type “net stop beep”, and press ENTER.

Typing "net stop beep" in the console will temporarily disable the system beep feature.

If you want to disable the beep permanently, here are some instructions.

A Chrome Extension That Does Nothing

Since it was first introduced, Google Chrome has been my browser of choice. So, when version 4 was released, I was particularly pleased to see the new extensions feature. When I went to view the extensions gallery, a particular entry stood out from the rest:

The Chrome Extensions gallery features an extension that does nothing.

Right there among the top rated extensions, I found one that did nothing(Update 2022-11-22: link removed.):

A close-up of the Nothing extension - over 2500 ratings (4.5 star average), and 464 people are "using" it.

When I viewed the details about the extension, it became obvious that many people were fueling the joke by adding supportive comments. Still, you see glimmers of confusion every now and then.

The "Nothing" extension's page - showing comments, and more.

The last comment is my favorite.

Capturing Only the Active Window with Print Screen

Print Screen takes a screenshot of the entire Windows desktop.

Ah, yes… Print Screen. I’ve been using the Prt Scr key for many years now – for a long time, it was my primary method of taking screenshots. However, when I started working as a developer, I quickly discovered the benefits of using specialized screenshot utilities. Presently, I use Snipping Tool and Jing much more than Print Screen. The problem was always that Print Screen would copy the whole desktop, which is particularly frustrating when you have multiple monitors. Soon after starting as a developer, I was told that pressing Alt + Prt Scr would copy only the active window to the clipboard. This proved convenient in the cases where I wanted exactly that – just one window.

See the screenshots in this post to get a better idea of what I mean.

Alt + Print Screen only takes a screenshot of the active window.

Task Manager Has a Tiny Footprint Mode

UPDATE: I made a video explaining this in December 2016. The article can still be read after the video, if you prefer.

If you use Windows, chances are, you know about the Task Manager.

Task Manager window showing performance data.

Windows Task Manager is a task manager application included with Microsoft Windows NT family of operating systems that provides detailed information about computer performance and running applications, processes and CPU usage, commit charge and memory information, network activity and statistics, logged-in users, and system services. The Task Manager can also be used to set process priorities, processor affinity, forcibly terminate processes, and shut down, restart, hibernate or log off from Windows.

Typically accessed via CTRL+ALT+DEL, this handy tool was never intended to be widely used. Watch below for a laugh as engineer David Bradley takes a friendly jab at Bill Gates, regarding the feature:

I use it very often, mainly to kill processes, change priorities, and monitor system performance. That’s why, a few years ago, I was surprised to find a somewhat hidden feature in there. Simply double-click anywhere in the main Task Management window, and it will switch over to Tiny Footprint mode. The menu bar and tab bar disappear, and the contents are maximized.

Task Manager window showing performance data in Tiny Footprint mode.

Apparently, some people were accidentally activating this mode, and didn’t know how to change it back. To help those people, Microsoft added a knowledge base article. All you have to do to is double-click the window contents once more.