Nov 29, 2010

Call of Duty: Black Ops (PS3) - QA

Bugs from Split Screen Zombies.

Game Breaking:

-While screen reads "Please reconnect controller(s): 1, 2", do the following:
Connect a controller. Use XMB to alter controller from player 1 to player 2.
Game will ask players to reconnect player 1, but will unpause the action.
In some cases, this will cause "Please reconnect controller(s):" to appear while both are connected, and action to be paused, while disconnecting a controller causes "Please reconnect controller(s): 2" and action resumes. The active controller may still play, though blind.
-The RNG is using the same seed for each game in the session. On Split Screen Zombies, the round two power-up will always be the same. There appears to be an x% chance of a second power-up which doesn't always show. The random box appears in the same room for the session. The same weapons consistently come out of the random box (3 out of 4 got the same pistol, and 2 of 2 got China Lake as second random).

Aim Assist woes:

-Aim Assist is backwards in split screen zombies after altering the setting. On initial load, the setting is read correctly. e.g. Player Bob can repeatedly flip "Aim Assist" setting, and if on/off, assist will be off/on respectively. This option is Target Assist in Multiplayer -> Local and doesn't suffer from this bug.
-While Aim Assist is working, aiming is altered based on enemy position to self, regardless of self or enemy being the moving entity (this is contrary to Target Assist in Multiplayer where only self movement triggers Target Assist).
-In some cases, pausing the game without entering a menu will cause the Aim Assist flag to flip in split screen Zombies (have caused twice, but steps to reproduce unknown).

Annoying:

-When returning to the main menu from Zombies or Multiplayer, the Welcome setup wizard dialog incorrectly triggers.
-In split screen zombies, player two enters the option menu, his brightness setting is used (assumably defaulted to middle) instead of player ones. Player one can enter the option menu to undo this.

Requested Feature:

-Shared income option: All players evenly split income of points from all sources. This option shouldn't be alterable in level.
-Headshots be equal to remaining points to be milked from a kill (four bullets to chest, and knifing is worth 170 in stage 1, whereas a headshot is worth ~100)

Nov 16, 2010

Mapping Network Drives on a Stick

Summary

This short tutorial will get network drives to map quickly.

The Tutorial

Start by copying this base script into TextPad (or your text editor of choice):
@echo off

cls
echo == Initiating system instance variables...
echo. -- Setting the variables...
set Drives=0
set UserName=
set /P UserName=Username: %=%

echo.
echo. -- Running

:: Here you will need to set each of the drives you want to get setup by this script
:: Edit each SUBDOMAIN, DOMAIN, FOLDER, and the drive letter to your needs.
:: /USER:%UserName% should remain as it is

Set /A Drives+=1
echo. Adding drive %Drives%
net use s: \\SUBDOMAIN1.DOMAIN1.com\FOLDER2 /USER:%UserName%

Set /A Drives+=1
echo. Adding drive %Drives%
net use t: \\SUBDOMAIN2.DOMAIN2.com\FOLDER2 /USER:%UserName%

:: Repeat the above three lines for as many map drives as needed.

echo. -- Cleaning up...
set UserName=
set Drives=
echo. ++ Done.
echo.
pause
Edit the "net use" lines to the folder that needs to be mapped. The drive letter, domain, and folder needs set. "/USER %UserName%" doesn't need edited.

The set of three lines "Set, echo, net" may be repeated for as many files as you need.

Credit Where Credit is Due

Mapping drive letters by garethcummings, getting input from a user by Secret_Doom, and counter incrementing by zrm0008 were all sources used to get this script working.

Oct 20, 2010

Mouse

I purchased my mouse quite some time ago, and the scroll wheel is beginning to fail on me. It was the last mouse that the store had, and was the demo mouse, but that didn't bother me.

The salesman went over twice that I wouldn't be able to return the mouse if it failed because it was a demo mouse, but I got to use it before purchased and believed it to be adequate.

The mouse has long outlasted the company that I purchased it from, CompUSA.

Sep 16, 2010

Why Android 1.6 is better then Android 2.1

I recently learned that my phone, Samsung Moment via Sprint, had an update that allowed the phone to use Android 2.1 from 1.6. Like reinstalling windows, it feels like a brand new phone again.

The alarm clock gained the ability to hide the clock, which provides more room to see what alarms one has. The phone's basic lock gained a slider to open, making unlocking while in a pocket much less likely then power -> menu click was. A basic widget for one touch toggling of wireless, bluetooth, gps, app syncing, and brightness was added. Convenience of magnitudes.

Alas, the OS update came with a glaring mistake that strongly shows me the developers for the software live in large cities. The signal strength meter is optimistic instead of pessimistic. If the phone doesn't know the current signal strength is, it defaults to full bars. This gives false information, and is annoying.

As I've only seen Android 2.1 on a Sprint phone with their brew, it may be Sprint trying to make themselves look better. If you have another service, I'd like to know if you are witnessing the same or not, and which version your using.

Sep 5, 2010

Import mismatched table C#

In the scenario that you have two tables of data, in which the columns from these two tables may not completely match (perhaps the source has extra unwanted information, or the destination's purpose is larger in scope) and you want to merge them, the below code can help. It gets each value that matches on both tables, then adds that row to the destination table.
txt download

/// <summary>
/// Adding all the rows of an incoming table to an existing table, where the columns may be mismatched, and dropping source values that don't match the destination is ok.
/// </summary>
///
///    09.19.10    LW: Altered the Row add line from import to Rows.Add. Method works now >.>
///    09.05.10    LW: Created. Posted online http://blog.leviwatts.com/2010/09/import-mismatched-table.html
///

/// <param name="dtSource">Table to be added to destination table</param>
/// <param name="dtDestination">Table to be receive to source table</param>
public DataTable AddTableToTable(DataTable dtSource, DataTable dtDestination)
{
    DataRow drInsert;
    foreach (DataRow drSource in dtSource.Rows)
    { //For each row in the source table, add any values that match in the destination table
        drInsert = dtDestination.NewRow();
        foreach (DataColumn dc in dtDestination.Columns)
        {
            if (dtSource.Columns.Contains(dc.ColumnName))
            {
                drInsert[dc.ColumnName] = drSource[dc.ColumnName];
            }
        }
        dtDestination.Rows.Add(drInsert);
    }

    return dtDestination;
}

Jun 1, 2010

PPP: The Sum of Digits

A Programing Practice Problem where the user provides a positive integer to receive back the total of the digits in the given number.

Sum of Digits

Provide me with an application that takes an input int and returns an int that is the total of each digit of that number. In the case of 1024, it should return 7, as 1 + 0 + 2 + 4 = 7. Be sure that anything from a single digit number to an 8 digit or higher number still runs correctly.

Single Digit Sum of Digits

Taken to the next step, repeat the process over and over until the return value is a single digit number.

Extra Credit: Crazy Mode

Allow the user to change the app away from base 10, such as base 2 or base 16. This is called crazy for a reason.

Mar 26, 2010

.NET Gridview with jQuery quicksearch

Several key features are needed to get .NET's GridView control to work with jQuery's quicksearch allowing for client side filtering of rows of data. The jQuery will expect to know the id of your target gridview, which .NET will make difficult for you. What was in your code an id of gridview1 becomes something like ctl00_MainContent_Conrol1_gvUserRoles.

If you look at the source of your page after the gridview is added, search for your control name and grab the entire ID. This is the part that goes as a parameter of the quicksearch function, like so:
<script type="text/javascript">
    $(function () {
        $('input#id_search').quicksearch('table#ctl00_MainContent_UserRoles_gvUserRoles tbody .UserRolesRow');
    });
</script>
Note that I change the "table#tableName tbody tr" that most jQuery quicksearch examples use into "table#tableName tbody .tableRow", which is a css class I plan to add to each of my rows. If I didn't do this, I would be loosing my header row when the filter fired. To choose the CSS class of the rows in the gridview, use this line within the gridview:
<RowStyle CssClass="UserRolesRow" />
Check out a full file example here, and good luck in your endeavors.

Feb 12, 2010

QA - Daunte's Inferno

Location: Checkpoint just after talking to Virgil for the second time. (Virgil's Dialog: Into the Blind World)
Difficulty: Hellish (likely doesn't matter)
Health on respawn: last 1/6 (like doesn't matter)

The player is to pull a lever to extend a time limited bridge (there is a purple mana restore just left of the lever). After dieing to the wave of skeletons and flying beast, respawn and return to Virgil, and jump up onto the platform below the soul wall. Move screen right until you touch the invisible wall, then return to the switch. The R1 click event is not available.

It appears the only option for the user is to jump off the bridge to cause a respawn.

I have not checked to see if this can happen on the first walk up without being at the checkpoint. There is also the possibility that there is a specific scenario just before the checkpoint required for this bug to occur.

Feb 10, 2010

Remember, Remember the Event You Need to Remember

Summary

Gmail and Google Calendar together can help you remember important events without resulting in tons of unread emails spamming your inbox. How? That is what this post is for.

You Will Need

I must first assume you:
1) Have a Gmail account: www.gmail.com (bottom right "Create an Account >>")
2) Have Google Calendar: calendar.google.com (you should already have an account from step one)

Step One

Within Google Calendar, create a calendar specifically for reminder events. Once the calendar is created, add relevant email reminder events to that calendar. I use 1 hour, 1 day and 1 week reminders. The email address displayed on the top right of the calendar screen is the address that will be receiving these reminders.

Okay, the more commonly know side of remembering key events is started. You will still need to create events, and set them to repeat as often as they do.

Step Two

The second step is from within Gmail. Setup a filter for the reminder emails to be added to a label when they are received. Use "calendar-notification@google.com" as the "from" of the filter, and apply the label "Reminder" on the second step of creating a filter.

With the filter and label created, change the reminder label's color to something that stands out, like red.

Step Three

Finally the last step that makes this method really shine. If your not a micro manager of your emails like me, you won't want to delete this massive number of reminders one at a time. When you view the messages of a label, you can select all of the messages (just above the messages is the line "Select: All, None, Read, Unread, Starred, Unstarred") and deselect the few still relevant reminders. Hit delete with the unwanted remainders selected, and you have successfully reclaimed your inbox (at least from your own reminders).

Buzz link

Feb 7, 2010

PPP: Alpha Counter

A Programing Practice Problem where the user provides a string and receives a single number back based on what each letter of the string is.

1) Alpha Counter

Provide me with a program that will satisfy the following curiosity. If each letter of the alphabet is represented by it's slot number, where A is 1, B is 2, and so on, what is the sum of the letters for your first name.

The program should take the name "Levi" and output 48. Any unrecognized chars shouldn't add anything to the total (such as the apostrophe in "O’Reilly" or the flem sound in Achmed").

2) Key'ed Alpha Counter

I recall going to lunch in second grade, and as a class being put in alphabetical order. With a last name of Watts, this was only enjoyed when we were in reverse order. To this end, this gives me another idea.

Add a means to our program to change the alphabet order with a key. Any letter not specified is added to the end in alphabetical order. For example, if we say "cat" then the three letters c, a and t are moved to the front, leaving the rest of the alphabet behind it. eg catbdefghijklmnopqrsuvwxyz

There is at least one sticky ambiguous decisions to be made. You are free to deal with it as you see fit, but document those choices. (If you are unsure what I speak of, I will be using my last name as a key to test your app.)

To see my implementation of this PPP, as well as a means to check your code's output, see my alpha counter. Use it as a means of checking your output, and point out any errors you find in my output. I'd hate for my errors to end up on prod.

Feb 6, 2010

Sallie Mae

I pay money to three different companies for my college loans. Of the three websites I access to pay these loans, I dread using SallieMae the most. The payment process for SallieMae is often at least eleven pages. (Salliemae.com, Make payment, Not goverment loan link, Login page, contact info conformation, offer page, offer page 2, summary page, make payment (several pages)).
Of these pages, I find the login, summary and payment pages acceptable. I also find the contact conformation page acceptable once yearly. I find it discerning that SallieMae uses people's impatience to thrust upon them legally binding actions each month. It is both annoying and uncalled for. Unfortunately for myself, I know not how to get my loan moved to another company so that I no longer have to deal with SallieMae. I imagine this is a banked on assumption of SallieMae (no pun intended). Carry on.