Category Archives: You’re Doing It Wrong

Bringing Games or Pins to a Free Play Event (e.g. Free Play Florida)?

We all love our vids and pins.  And for those of us that repair and/or restore older games, most of us are proud in what we have done to return them working again and bring them back to their former glory.  And we might like the idea of sharing them with others at an event like Free Play Florida (FPF) where we can proudly display our games to others and let them enjoy them as much we we do.  But if you are gonna contribute games to a Free Play event, there are some things to keep in mind.

(Note: I am strictly speaking for myself here, and not as anyone that is affiliated with FPF.  These are my own opinions and experiences.)

Continue reading Bringing Games or Pins to a Free Play Event (e.g. Free Play Florida)?

Got Screwed by Suzo-Happ

So a site I work with has had two GamePro monitors go down. One of them was from an odd power issue that ended up smoking one of the Zeners on its control board, and the other was just a loose power connector.  These boards use a lot of smaller SMT components that I am not equipped to repair

I went searching for a replacement board for the monitor and found some on SH’s web site here (be sure to have a good look at the example image they show).  The boards had the same markings, so I bought 3 of them so I could have some spares JIC. Continue reading Got Screwed by Suzo-Happ

I Know This Audience – TikTok Users Accidently Baited

So I able to successfully elicit a predictable response pattern, albeit inadvertently, while responding to a video on TikTok that shows a woman in a pool wearing what appears to be a surgical mask.  I had no idea why she was wearing the mask, nor did anyone else in the thread and it was obvious they did not care to (that was the first sign).   And while there was no proof of her putting the mask into the water or the mask being wet (the astute observer will notice the mask retains its shape without sagging), comments included such gems like “waterbording herself.”  Gotta love it.

So I made a comment: “If she can wear it in that environment, other people can handle it in stores.”  It ended up being the bait that attracted all kinds of people, some with some truly witty comments. Continue reading I Know This Audience – TikTok Users Accidently Baited

COVID-19 and COVID-19 Vaccine Information (With Sources)

There is a LOT of misinformation out there.

The quickest way to spot misinformation is to check the wording used.  The first tip is if they cannot tell the difference between the virus (SARS-CoV-2) and the disease (COVID-19) – if you get that wrong, you likely got everything else wrong, too.  Anyone that cannot spell vaccine correctly and refers to it as the jab or the poke, is likely spreading vaccine misinformation.  Likewise, anyone that cannot spell COVID-19 correctly and calls it the coof, flu or a cold, should have any information they provide be immediately suspect.

So if you came here because you were directed to, you likely were spouting off some nonsense that you either made up or were mindlessly and/or sheepishly repeating from a meme somewhere, and failed to provide actual sources even though you claimed to have done your own “research.”  Here is some information, backed by actual and generally reputable sources.  Facts will be linked, and different words may point to different sources.  Be sure to check them all out – you might learn something.  Now, it is easy for the idiots out there to say something like “the CDC?  You trust the CDC!?“or PubMed or NCBI, or the WHO, or <insert name here>, but before you listen to them, makes sure you know their sources.  Was it from someplace reputable, or a meme from Gab, MeWe, Rumble, etc. or a video from BitChute?

Lastly, another red flag is anyone that touts an incorrect survival/recovery rate of 99.xxxx%.  First, that rate is wrong, and second, survival/recovery is a low bar to reach – ask them about who survives and thrives with no long-term issues as opposed to those that survive but end up having so-called “long covid.”  If they cannot answer that question, they only possess part of the information and thus cannot have an informed opinion.

Shall we get started?

The mRNA vaccines will not change your DNA.   mRNA cannot combine with DNA so it cannot change it.  No, they are not gene therapy, either.  The sky is not falling, Chicken Little.

The so-called vaccine inserts and ingredient lists are not hidden from anyone, and are easily found for Moderna, Pfizer, and Janssen (J&J) if you actually look.   Anyone that says they are being hidden is a fool or is lying to you and using you to promote their agenda – do not be their sheep.  By the way, why are people worried about the ingredients?  Most of you do not know what 2-hydroxypropyl-?-cyclodextrin is and if it is dangerous or not, so stop fooling yourselves into believing that your knowing the ingredient list actually changes anything.

Oh, that so-called “inventor of mRNA vaccines,” who supposedly told everyone not to get the vaccine?  He got vaccinated, but only because he was forced to, right?

The vaccine does not destroy your immune system. In fact, they can help even if you have been previously infected and might work better in some cases.  While on the topic, since it is your same natural immune system producing antibodies from either the vaccine or direct exposure to SARS-CoV-2, both cases actually produce natural immunity.  There is information out there that compares immunity from both vectors, but things are leaning toward getting vaccinated even if you were previously infected.

Long-term effects of vaccines are mostly a made-up thing.  (Try searching yourself and you will find actual studies scarce and usually when someone was trying to link vaccines to autism, and failed to do so.)  Vaccines are not drugslearn the difference.

The vaccine does not contain  heavy metals – or aborted fetal tissue (that is an old one with vaccines) – see the ingredient lists linked above.  There was a paper that linked toxic metal exposure as a risk factor for COVID-19 which might have been skimmed and misunderstood and given rise to this misinformation.

Yes, many other vaccines required multiple doses and/or boosters.  Polio has 4 for exampleSome smallpox vaccines required multiple doses as wellDTaP also has a 4-dose schedule, and Tetanus boosters are not uncommon.  People that think a single shot should cure/prevent everything, including variants, are morons and should not be listened to.

It is not Lag, That is how it Played!

So I was taking with someone about the Arcade1Up units and admitted that I really liked the Capcom fighter ones (upright and cocktail) ones because they included the original Street Fighter. He said they he hated it because of the “lag” in Street Fighter, and how he does not like most multiboards because of the same thing.  But what he is calling lag, is not really lag!

Continue reading It is not Lag, That is how it Played!

Covidiot BINGO!

I have long since observed a predictable and rather consistent set of behaviors with the anti-mask, anti-vax, anti-whateverbullshittheycomeupwith crowd that keeps popping up during the SARS-CoV-2 pandemic.  Lemme know if you spot anything familiar:

  • They misspell vaccine as jab or poke
  • They claim the vaccine is poison
  • They claim there will be long-term effects of it (completely misunderstanding how vaccines are different from drugs, and being ignorant of the history of vaccines)
  • Call everyone that disagrees with them sheep
  • Confusion between masks and muzzles or “face diapers” (which do not actually exist – so they must also believe in fairy tales)
  • Like to talk about my freedoms, my rights, but could not name any of them other than what is provided by the the 1st and 2nd amendments  without doing a Google search
  •  And my personal favorite: I refuse to live in fear! (When the only fear present is their fear of science.)

Continue reading Covidiot BINGO!

Family and Arcade Versions of Pandora’s Boxes

So recently there have been these different versions of PBs becoming available that are very popular with those little self-contained panels that house a two-player setup with a game board and a speaker inside the panel. These used to come with the “real” PBs that used a JAMMA connector:

But now they use these newer “Family” versions:


These Family versions should really be called “Home” versions because they have very little to do with an arcade cabinet:

  • They do not use a game’s existing JAMMA harness – causing you to either buy another adaptor or rewire your cabinet
  • They do not use a game’s existing power supply – so you have to wire another AC power supply into your cabinet
  • They do not output the same audio levels (and usually only mono, not stereo), so you might not get the same audio experience or might have to add an external amplifier
  • They do not output CGA-compatible video, just VGA and/or HDMI, so you may have to replace the monitor in your cabinet or get a downscaler to convert HDMI or VGA to CGA
  • If you run “home edition” and “family edition” into a translator, you get the same output ? (actually, “home” and “family”  sometimes produce the same translation depending on the context)

It seems like these Family versions were practically invented for those little self-contained panels.  Some of them can run without a harness connected, just a TV, power brick, and some USB controllers!  Not exactly “arcade” style, huh? No, these were made for the home market, and should be left as such. Continue reading Family and Arcade Versions of Pandora’s Boxes

Machine Pin Sockets – What Are They REALLY Good For?

So another debate about machine pin sockets vs. standard (dual-wipe) sockets came up on one of the arcade repair-related groups I am a member of.  And it, like just about every other older discussion about them, centered around not knowing our understanding what they are really supposed to be used for, and without fail, someone brings up the old “square peg in a round hole” argument. Continue reading Machine Pin Sockets – What Are They REALLY Good For?

So-called Web “Developers”

So, I have been seeing this more and more.  I see the term “Web Developer” being applied to anybody that can do basic HTML5 and CSS scripting.  Even worse, I see the term being applied to people that do not know enough to understand how the back end works, or cannot even spell LAMP.

If you can do your job just using Notepad and Chrome (i.e. no compiler), with no back end services, you are just a “scripter.” Just make peace with that, and stop trivializing what real developers do.  And no, you are not writing a “web app,” you are scripting web pages (although maybe for someone else’s actual app).  Does PHP executing DB queries count?  Maybe – if you also (properly) designed the database it is working with.

Continue reading So-called Web “Developers”

How to Sell Your Arcade Game

Correctly Manage Your Expectations Before You Try to Sell Your Arcade Game

Something I see far too often are outlandish prices when uninformed people try to sell a game.  I usually see this with someone that originally overpaid (badly) and is trying to make their money back or thinks all games appreciate in value.   For example, “I bought this Street Fighter II 10 years ago for $1500(!) and I am sure it is worth $2500 now!

First: It Is Not Worth What Google Tells You

Occasionally I see someone that has a busted-ass Pac-Man, in a generic converted cabinet with water damage, and a dim monitor, and they Google “Pac-Man Sale Prices” and then think that they can sell it for $1200.  And have the audacity to believe they are getting low-balled when someone offers $250.

No, you are not getting low-balled.  You just did your search (“research”)  incorrectly.  You shoulda Googled something more like “converted damaged Pac-Man prices.” But hey, you did not know any better.  Take the advice of people that know more than you about things like this.

Also, just because someone paid $xxx for that game in the past does not mean that anyone will now.

Second: It Is Not Worth What eBay Tells You

Some people search eBay for prices and use the final sale price.  But before you do that, make sure your game matches up perfectly with the listing you are looking at for your “research.”  Do not try to compare your “home use only” Star Trek pinball with one on eBay that was clean, shopped, with new rubbers and no peeling paint on the backglass or playfield.

And, remember: that price is the price that ONE person was willing to pay.  Look at the bidding history, if you can, to see what most people were willing to pay.

Bigger is Not Better

Continue reading How to Sell Your Arcade Game

Outlook Taking Hours to Download Email

JIC it helps anyone else out there.  For no apparent reason, Outlook 2010 started taking hours to download emails that usually came down in minutes.  And when I say hours, I mean 3-5 hours!  The app would remain responsive for the most part, but would consume 100% of a CPU/core.  It would download a number of messages and then just pause for 45 minutes or more.

Turns out that the problem was my configured %TEMP% directory was filled up with almost 65,000(!) entries.  An automatic update of my Antivirus software failed, and started looping retry attempts.  This filled up the temp directory with little 1KB  files until it crashed.  It also filled up my event log.

Seems that Outlook gets really cranky when it has trouble with its temp directory.

So if you suddenly start having strange issues like this with Outlook, make sure your temp directory is not too full.

CString misuse #2

Here is another one:

/////////////////////
LPCTSTR cpString = _T( "This was some string message..." );
//
// Later On In Code...
//
CString str( cpString );
char cChar = str.GetAt( 0 );
/////////////////////

If you write code like this, stop now and back slowly away from the keyboard – You’re Doing It Wrong!

The developer here is using a string object for a very simple operation. This is the kind of think people talk about when they say something like “using a shotgun to kill a fly”.

Extracting characters from a string (an array!) is a very basic operation – it is something we learn in our first C/C++ class or read about in our first C/C++ book. This is not something that you need a heavyweight class to help you out with.

Extracting the first character from cpString is as easy as doing one of the following:

/////////////////////
char cChar = *cpString;
//
// -Or-
//
char cChar = cpString[ 0 ];
/////////////////////

Remember – constructing and initializing an object always takes longer (i.e. has more overhead) than not constructing and initializing one. Think about wether or not you really need an object before you create one. If you can get along without it, see if doing so improves things.

For reasons mentioned in a previous post, in this case, the code is better without the CString.

CString misuse #1

This is the first of many examples of ways to misuse and/or abuse MFC’s CString class. While this example (and following ones) are specific to MFC, they likely apply to all string classes (mutable or not). Here is the offending code:

/////////////////////
CString str( "First Part Of Message\n" );
str = str + "Second Part Of Message\n";
str = str + "Third Part Of Message";

MessageBox( str );
/////////////////////

If you write code like this, stop now and back slowly away from the keyboard – You’re Doing It Wrong!

First, the developer is adding (concatenating) strings together, but these are static/constant strings! They always add up to the same string, and as such can be made into a single constant string:

/////////////////////
"First Part Of Message\nSecond Part Of Message\nThird Part Of Message"
/////////////////////

So at a minimum, the start of the code should read:

/////////////////////
CString str( "First Part Of Message\nSecond Part Of Message\nThird Part Of Message" );
/////////////////////

Why not add up the strings separately like the original code did? Two reasons – overhead and exception opportunity. Each use of CString::operator+(…) can result in dynamic memory operations (allocation and deallocation). So you are looking at six potential heap operations (three potential allocations and deallocations including destruction, although in release builds of CString, the number of operations is less). Each operation has the potential to raise an exception and in the absence of per-thread heaps, can effectively bottleneck a multi-threaded application to the performance of a single-threaded one because the heap operations have to be serialized.

So by manually putting the strings together we have reduced heap operations from 6 to 2 – one allocation and one deallocation. That is a pretty good improvement, but we can do better!

The MessageBox(…) function does not take CStrings, it takes pointers to constant strings (LPCTSTR). So why is a CString needed here at all?

/////////////////////
MessageBox( "First Part Of Message\nSecond Part Of Message\nThird Part Of Message" );
/////////////////////

This final version of the code is simpler, will execute faster, and is more robust. Sounds like a winner to me!

Note: Some of you may be thinking about the preprocessor’s ability to automatically concatenate static strings. Yes it does, but it cannot automatically coalesce the above strings because they are separate – they are being passed (separately) as parameters to a function. If the + operator was not present in-between the parts of the string, they would be coalesced to a single string, but the unnecessary CString would still be there.

You’re Doing it Wrong!

Having been inspired by the amount of photos on the internet showing various forms of spectacular failures (http://www.doingitwrong.com), ranging from failed bunny-hops to the most graceful faceplants, I thought that a coding-equivlent of it might be worth trying out.

To that end, this section will cover little snippets of “wrong” code found in the wild. Unlike the photos, where the failure is usually fairly obvious, the failures present in the code snippets are not always as obvious, so a small discussion explaining the failure will always be present.

OK – enough of the BS…! Let’s get started!