Console Game Saving — Beyond the Box

November 9th, 2010 No comments

Something that has confused me for a while is why there is no easy way, when you save your place in a game on a console that is on the web, to save to a “cloud server” with your credentials. Example: When you are playing a game on a PS3, it is possible to play online for free. When you are playing online with/against others, why can’t you record or progress/save your game online so you can play from any console with that game in the future?

Yes, presently there are memory cards for being able to pull your save files off a console and take them to another one, but I have never actually seen one of these memory cards. Back in the days of the N64 and Gamecube, PS and PS2, and others of the recent consoles before the PS3, Wii, and Xbox 360, the use of memory cards was exclusive because there was no other way to save a game. Now, I don’t know a single person who owns one.

Basically, why isn’t this service available! Is it possible that Sony, Nintendo, and Microsoft are intentionally confining people to using the same console? I don’t really know the answer to that question, but this has been bugging me for some time now, and will likely bother me even more when I finally get a console post-college for myself and want to get all those old save files from other people’s consoles (like my Demon Souls save files from this summer!!).

Fable 2

November 2nd, 2010 No comments

Fable 2 has a HUGE amount of content in it, but a lacking for how much of that is required for the storyline. When I say “lacking,” I mean you could commit hours and hours and hours to this game, but never get more than half-way through the storyline because you simply don’t feel like triggering the next instance. What happens when you don’t continue the story? NOTHING! There is zero encouragement to continue the story at the half-way point in the game.

But what about the game itself? It is pretty close to the first in the series, with the exception of changing both the spell engine and the introduction of firearms. That’s right, they added firearms and modified the ranged targeting system so that you aren’t just standing back and trying to snipe off the enemies’ heads with a bow and arrow. I think that the bow and arrow removal did nothing for the gameplay itself though. It does allow you to build your ranged attacks the way you want to (more DPS with a pistol, big damage with rifles, or somewhere in between with crossbows), but to me that didn’t really change the feel of things, especially with the ability to get a level in one of the skill abilities that allows you to tap “Y” at the right time after firing to immediately fire again. Suddenly the rifle turned into a DPS’ing cannon!

What about the spell changes? They honestly didn’t do a whole lot. Yes, you can now charge-up to the higher levels of a skill, but there is no reason to charge up the majority of the skills in the game because there is no mana bar. Yup, they removed the mana bar and in return made it so you would likely have to sacrifice HP to charge up to a higher level of a skill. Since I like to spam the “time control” skill so that I can fly past enemies and then strike them from behind, there was no reason to ever charge up a skill other than to either slow down time with the “time control”s AOE version or to farm gold in one of the later quests with the “raise dead” spell level 5.

So then what did you actually like about the game? The volume of content outside of the storyline itself. There really aren’t that many quests outside of the main storyline, but it is essentially a free-world. You can buy ANY property in the game essentially and either move-in or rent it out. You can marry (though I didn’t try to find out if polygamy was possible in the game) and eventually have kids in the game (grow a family, nurture them, etc.). I spent most of my game time (about a month and a half ago now) becoming a real estate mogul in the game (owned a blacksmith, couple bars, a bunch of houses, and I don’t even remember what else now).

There was a large change that made a big difference in gameplay from the first one, and that was the introduction of a companion. Think Navi from Zelda, but your dog can actually fight if trained enough, and helps you find those hidden dig spots and treasures in the game. It went from a game of guessing where to dig or find treasure to running around and waiting for your dog to let you know where to get the next bit of treasure or quest item.

But what of the storyline itself? Was it at least intriguing? Not really. They seemed to take the story from the first one and recast it for a different time in the same world. I did like how they continually tried to connect the first game and the second, but found the story incredibly short (as stated before). If I had actively tried, I likely could have beaten the main story in about 3 hours of playing. That’s right, a single sitting if I had followed all the in game cues to go through the story. The final boss fight was even disappointing. The hardest fights in the game are against the “trolls,” and they just require standing back and dodging their attacks while you shoot the targets on it as they appear and then take your final shot when the health bar of the troll is low enough. Pretty disappointing from a challenge perspective, of course, that’s not why I played the game through in the first place.

Then why did I play it through? Because of the side-story content. Buying up all the property in the game was a fun goal for a while, but I eventually did get bored. The dog was a fun addition, and its existence greatly affected my end-game “big decision.” But it simply bugged me to no end that the majority of the unique weapons in the game were all in the downloadable content. I’m sorry Microsoft, I’m not going to pay for Xbox Live just so that I can download an extra island of content in the game. Overall, the game was pretty disappointing, but entertained me for a brief period of time.

Isn’t There Something Wrong Here?

October 22nd, 2010 No comments

As a prelude, I was originally going to write a post about how my Google Interviews went, but I decided that would be bad form considering that I am being considered for a position there, so will sum up the experience as having gone well.

I came across 2 news articles just now that both bother me for slightly different reasons. One of them is about the US’s new financial aid to Pakistan’s military (the size of which shocks me!) and the other is about the data Google’s mapping cars captured.

The main part of the whole “giving aid to Pakistan” that bothered me is not that we are giving it to Pakistan, but that the US is talking about putting aside $2 billion for Pakistan’s MILITARY! I totally understand disaster relief (the flooding in Pakistan), and can even understand giving money for civilian infrastructure in Pakistan, but specifically to their military? When was the last time we publicly funded another country’s military with US money that wasn’t South Korea or Israel? Yes, yes, we must bolster their military so that they can help us fight terrorist organizations like the Taliban in the Middle East, but doesn’t $2 billion just sound like a bit much? We apparently gave them $7.5 billion over the last 5 years. WOW! Hey government, I think I found a way to balance your books a bit to reduce debt, STOP GIVING ALL OF IT TO OTHER COUNTRIES!!!

Ok, let’s assume you have sold me on Pakistan being our greatest ally in that area of the world with their proximity to Afghanistan and such (and cooperation with the US for tracking the Taliban and such down). Wait, they helped? Aren’t there still numerous reports of terrorists being TRAINED in parts of Pakistan? So we are going to help their military beef up so that they can take on these terrorist training camps and knock them out… like that’s going to be the main area that they will put this military sanctioned money…

As for the Google story. I’m sorry, if you don’t at least secure your wireless network, that’s like leaving your front door to your house open with a sign that says “Not here right now.” Driving by and seeing wireless traffic and data that is unsecured is not invasion of privacy. It is not taking the necessary precautions to secure your own privacy. Let me use an example that is easier to relate. If you put a lot of personal information on Twitter or Facebook, and then don’t lock down the privacy settings, and then don’t EXPECT spammers and scammers to use that private data, you are naive for lack of a kinder word.

With that being said, it is a bit sketchy that Google went and recorded the data that was seen while driving around in their Google mapping cars. I mean, they didn’t HAVE to collect the data, could have just seen it and moved on with their lives. But the VOLUME that Google was able to see and record says a lot about how people treat their personal, supposedly private, networks. Twitter calls the volume of information that they give access to a “fire hose” of data. I don’t really see unsecured wireless networks as anything else really. Talk about easy pickings! I just wish people weren’t pegging this problem on Google and were instead blaming the people truly responsible, the Joe Schmo who doesn’t know how to setup their private network to be actually private (even though it requires as much effort as logging into your router and clicking the enable “WPA” or “WEP” encryption button and logging the passphrase on your computer and maybe a sticky note if you need it). This isn’t rocket science people!!!

Senior Design Project

October 16th, 2010 No comments

Let me start somewhere close to the beginning of the semester for this story. Our group picked the “Patient Database Administrator” project, thinking that we would be building a full tool for docs to access all their patient records. Yes, in retrospect that sounds too HUGE to be able to do in a single semester, but that’s what we were thinking. We then, before meeting with our client, found code that a previous group had built for this same project, and assumed they were related. At this point, it is 2-3 weeks into the semester, and we still haven’t had an opportunity to meet with our customer!! Once we finally did (for 3 HOURS on a Friday night!!), we managed to make clear the purpose, goals, and scope of this project: create a custom form generating engine that our customer can plug into their overall tool to take all patient records and forms online (including managing the hospital as well).

This project description is of smaller scope than even by the end of that meeting, but we managed to make it more concise over the following weeks, which was nice. Let me describe our customer for a moment though. He is a big-thinking Neurosurgery doc who is finishing up his residency (in the final 2 years I believe) at Emory University Hospital. When I say big-thinking, I mean he sees the big picture very clearly, but doesn’t see all the little steps to get there at the same level as the people he has gotten to accomplish them. This lack of seeing eye-to-eye on many of the technical matters means that we senior design groups receive emails that regularly change, or attempt to alter, the direction we are headed with this project. Some examples include the frameworks we are using have been changed multiple times, typically with more added rather than our overall structure being simplified, and our technology choices were limited to some proprietary software (Flex, which is Flash) that we have to use FREE TRIALS to be able to code in for 60 days. Don’t get me wrong, Flex will likely make coding the front end a lot easier, but that doesn’t mean that it will make our lives easier as a whole since we have to use a framework called Mate with the Flex UI… it’s basically a wreck right now with us trying to put together enough pieces that we can get things rolling so that we can meet deadlines. A minor detail to add, being asked for working prototypes when we haven’t been able to get any real coding done yet, and being asked for the same documentation that has already been sent out, is really annoying from a team managing perspective. Really doc? I sent you those docs about 3 weeks ago!!!

Anyway, we have a lot of work ahead of us. Here is a quick breakdown of the technology limitations and our deadlines for production:

  • Java back-end
  • Hibernate to communicate with the DB
  • Flex UI
  • MySQL DB (ended up being the better choice out of the options, we got lucky here)

Milestones:

  • Start of semester: 8/23
  • Picked project: 8/29
  • Met with customer: 9/10
  • Met with DB professor on campus to discuss our design (and he loved it by the way): 9/24
  • Documentation due date and group presentation to class (end of Sprint 1): 9/27 — we were supposed to have started coding at this point, but didn’t have the time because we met so late with the customer and had so much documentation to do in the limited amount of remaining time for Sprint 1.
  • Upcoming, end of Sprint 2: 11/1 — we plan to have a prototype in place by then, but feel woefully behind because we had so much trouble setting up our local development environments. Really cost us on time!

So we have time to get things done, but are going to have to really push it the next 2 weeks to meet our planned deadline for a working prototype.

The Job Hunt

October 11th, 2010 No comments

Since I am a graduating senior from college this year (as opposed to just a senior, which I was last year), I have been going strong with the job hunt. Thanks to a career fair on campus in mid-September, I have actually had a pretty large number of leads and a decent number of interviews. I really wasn’t expecting the career fair to produce much going in, but was pleasantly surprised by it. My approach came down to:

  1. Ask the recruiter to tell you more about their company beyond what you already know about them (in the case of some companies, I actually knew who they were, so would mention that and then ask for more information).
  2. Follow that up with “how can my [insert professional interest here] fit into your company” or “what kind of [insert professional interest here] opportunities do you have?”
  3. From here, it became a case-by-case situation dependent upon what I was interested in that they mentioned, and any questions I might have had. To stand out from other candidates, I told some about projects that I have worked on over the summer and also told a few of the recruiters about the senior design project I am working on (to be discussed a bit in a later post).

You really cannot beat a strong resume though. Because of my large amount of professional experience at 3 different companies during my college career, I had an easy time finding additional material to discuss with those companies of actual interest (there were some that I talked to who just had absolutely NO opportunities to offer me, or were simply not situated to even need my talents and interests).

So, to give a small list of some of the companies I have applied to already, partially but not all due to discussions at the career fair, are (career fair contacts, and then the rest):

  • Wipro – applied.
  • Booz Allen Hamilton – on-campus interview scheduled for 10/14.
  • NSA – applied.
  • Cardlytics – haven’t gotten back to me via email yet, will follow up soon.
  • Endgame Systems – no online application, awaiting a call from them, but haven’t heard yet.
  • Barracuda Networks – applied.
  • Capital IQ – have gone through an on-campus interview with them.
  • — non-career fair opportunities —
  • Google – ON SITE INTERVIEW AT THEIR MOUNTAIN VIEW, CALIFORNIA OFFICE ON 10/18, ALL EXPENSES PAID!! Excited, obviously.
  • Manhattan Associates – applied and was personally told I would hear from them, but haven’t yet.
  • Factset – interviewed with them on 9/16, haven’t heard back though.
  • Cisco – applied.
  • Neustar – was my summer job, an am part-timing with them still. Will likely discuss this opportunity with them further in November.

The Google one is obviously VERY exciting, and we’ll see how the on-site interview goes on 10/18. Considering that they are flying me out there, and putting me up for 2 nights, I am SUPER stoked about it!!

Behind Again

October 8th, 2010 No comments

So it would seem that I can’t keep up with my desired blogging output (of at least one post a week). It’s been… a while since my last post to say the least! My focuses lately have been with applying to jobs, working for my part-time job (continuation of my summer job), keeping up with academia, and a bit of recreation in the form of beating Fable 2 last night. So, that brings me to what I am going to post about over the next week or so (and actually post about, not just “want” to post about).

  • A review of Fable 2: I believe I did a review of Fable 1 way back when I played that, so might as well do a follow-up.
  • The jobs I am applying for and what opportunities I am presently interviewing for (this is likely to be my next post actually).
  • My senior design project: we are actually working on a pretty cool concept, but I really don’t like the restrictions to what technologies we have to work with. Expect a rant on this subject…
  • Other subjects that come to mind, maybe my entrepreneurship class project…? Depends if I want to release this idea into the wild since it is a bit more unique.

The plan is to do the job offer applying one this weekend, and have it post on Monday. Then knock out the next one by the end of Monday and have it post late next week, etc. Basically the time-table I WAS working with before I started getting lazy about it.

Things I’ve Meant to Post About

September 12th, 2010 No comments

So there are a bunch of different things that I’ve intended to blog about for some time now, but never got around to them. As a result, most of it is either old news, or just not as important to me. Fortunately for me, but likely unfortunately for everyone else, is the fact that I sent each of these to myself so that I wouldn’t forget them (and then promptly forgot to post about them).

The first of importance is a guide that LifeHacker posted a while back about how to use GoogleCL (Google Command Line). Many of us use Google’s services these days. Google took that a step further and released their GoogleCL product for 2 reasons:

  1. To allow those computer nerds out there to geek out about being able to use Gmail and the like in their command line.
  2. To allow users to do some things with Google products that aren’t traditionally allowed through the front end like backing up your contacts from Gmail.

The second one is definitely the most important, because now you can use the command line to make it auto-backup your contacts! There are other handy things that you can do with GoogleCL, but allowing for auto-backups I think is the most important. You can already export your contacts as a CSV (they added this feature, I believe, around when they separated out the Mail and Contacts functionality in Gmail), but you can’t setup automatic backups because Google likes the idea that they don’t ever lose data. The part they are forgetting is that while they may not lose it, people have the potential of accidentally deleting it! Anyways, here is the article on LifeHacker about it: 5 Handy Google Command Line Tricks.

I have also been meaning to post about the Google set-top box. If I had to guess, when they announce it officially this fall, it will be running some form of ChromeOS. I am of course not 100% sure, but it is the only thing that makes sense. It also won’t have to deal with the “file system” issue that the computers running ChromeOS will have to handle for things like attachments to emails. Regardless, I just rewatched the video on google.com/tv and they have definitely updated it since I last saw the video! Anyway, it looks like it is going to be a serious contender to Apple TV, other standard DVR boxes, and pretty much everyone else in the field, simply because it is going to meld the web with DVR and satellite content.

That was it for things on other websites that I wanted to post about. I’ll focus on something much more theoretical next.

… looks like this ended up being my Google post …

[Image from techdigest.tv]

Linksys WMP54G 64-bit drivers

September 6th, 2010 No comments

Let me describe my apartment’s setup a little bit first. My desktop computer is in my bedroom, which will require about a 50+ foot ethernet cable to reach the router. My solution to this? Try out my room mates PCI Linksys wireless card (the WMP54G). Unfortunately, Linksys (technically Cisco) has not bothered to make 64-bit drivers for these wireless cards. This resulted in a HUGE headache for about 3 hours, till I finally found a solution. Here’s what I did from start to finish, but if you want the quick solution, skip to the end:

  1. Tried to install the 32-bit drivers from Linksys’ website, only to have them get stuck when you try to search for wireless networks with it.
  2. Started Googling for a better solution, and ended up on this page (I don’t know if that link will always work, so it’s just a forum post about how to get the wireless card working on a 64-bit machine).
  3. Found out through that tutorial that the chip set in the wireless card is made by Ralink Corp. So I ended up on their site here and downloaded the latest copy of the RT2500 chipset drivers.
  4. After trying to hacking these to work appropriately (according to the forum posts that I had found), I managed to get it to install the drivers appropriately (albeit hacked), but it the wireless utility didn’t work. In fact, I couldn’t get ANY wireless utility to work, and I tried quite a few!
  5. Finally, I did some more Googling for answers, and this is about 2.5 hours in, and found this forum post that had a link to justinho.com.
  6. Within Justin Ho’s blog, here is the appropriate post (as of now) to the article with the working drivers!!! To install them was quick and easy. I simply found the wireless card in the device manager, selected properties, selected upgrade drivers, found the .inf file from the download on Justin’s site, and it installed in one shot. Then just power-cycled my computer and was up and running!

Thank you so much Justin!!! You are the sole reason that I now have wireless in my desktop, granted it took 3 hours to find your blog… you would think that Justin’s site would pop up sooner on Google searches since he is an employee there.

Installing cx_Oracle on Windows

July 28th, 2010 9 comments

Almost 2 months ago, I started on a project that required the use of Python and access to an Oracle database. It took me multiple days in a row to finally get it up and running so that I could actually make progress on the project, but once I did, I thought nothing of finally getting it to work. However, I was recently approached by another person at work who had to use the cx_Oracle package to access an Oracle DB through Python, and realized the value of actually putting together a post about the steps required.

First off, it is really easy to get it running on Linux. I mean super easy to get Python and cx_Oracle up and running. Secondly, I have an XP machine at work, so no guarantees that this will work with all other Windows Operating Systems until I get to test it on one (not possible till about September at the earliest, I’ll put a todo item in my calendar to try to remember to do it).

Alright, down to the nitty-gritty of it. You first need to install a recent, if not the latest, version of Python, if you don’t already have it of course. When I was installing it on my work computer, that was Python 2.6.5. Now that would be Python 2.7, but since Python is intentionally backwards compatible, it SHOULDN’T matter. For installing Python, be sure to follow one of the many Python install guides available on the web, but the quick run-down of the install process is:

  1. Install Python.
  2. Edit your environment variables to add the Python directory to your PATH variable and create a PYTHON variable. I will cover editing/creating Environment Variables with the later part of this guide because you will have to do it again for cx_Oracle.
  3. Code in Python (you can use an IDE like Eclipse, or a regular text editor like Notepad++).

Next, run the cx_Oracle .msi installer for your particular Windows install. Now that was the easy part.

Next up is the part that most people seem to miss, having an Oracle client on your local machine. Oracle suggests the use of the Oracle Instant Client (updated link thanks to Tim in the comments), and that’s what I used this time. Oracle’s instructions seem to have improved since I first installed the Oracle Instant Client, but that doesn’t mean they are easy to follow.

  1. Go download, and unzip, the Oracle Instant Client from here.
  2. Put it in a place on the C:\ drive that is easy to find/access later (it’s a drag and drop procedure for getting the files there, no installer). My suggestion is to create a directory called Oracle, and place the instantclient directory in there. This way, my path to the Instant Client directory reads “C:\Oracle\instantclient”.
  3. Add this guy to your PATH Environment Variable. You can get to the Environment Variables by right clicking My Computer, select Properties, go to the Advanced tab, click the button that says “Environment Variables”, and now we’re here. From the Python install, your PATH variable (in the user variables section, not the system variables) should already exist from you creating it as “C:\Pythonxx”. Now, add that directory location from step 2 so that the PATH variable reads similarly to mine, which is “C:\Oracle\instantclient;C:\Python26″.
  4. Now you are going to need a tnsnames.ora file. For those of you that don’t know what that is, read here. The company I work for fortunately provided me with one, so I didn’t have to make it from scratch, but basically they contain your connection strings to the different databases you are going to be accessing. I saved mine to “C:\Oracle\network\admin” just for easy memory (and because that’s where someone else’s was when I asked). I hope you didn’t close the Environment Variables screen, you’re going to need it again.
  5. Lastly, you need to add the TNS_ADMIN variable with step 4’s path in it.

You have now installed cx_Oracle successfully. To really test it, you can open up a Python command prompt and run the following lines of code to test it (case sensitive).

  • import cx_Oracle
  • db_conn = cx_Oracle.connect(“user/pass@tnsname.world”)

If either of those steps went wrong, double check the steps. If you still don’t know, comment on the post, or email me (my email is lying around somewhere on this site), and I’ll do my best to help you. There are also many forums and forum threads scattered around that have tried to explain these points as well, but I found them to be inadequate.

Lastly, Google is your friend for finding out about the different functions available in cx_Oracle, and the documentation isn’t terrible for this either.

Windows Shortcuts = Dangerous

July 20th, 2010 No comments

Well, I wanted to have my first blog post of the week be about a different topic, but since this is breaking news, I’m going to post about it.

There has been a new vulnerability discovered, and reported by Microsoft as of July 16th with security advisory number 2286198. It affects all Windows operating systems (XP, Vista, 7, and correlating service packs), and the source code is already publicly available. The worry is that this will start to experience wide-spread usage within the next few weeks by malware writers.

What It Does

When we browse the file system in Windows, it shows icons for each file/shortcut/directory, and these can be customized. This malicious code is hiding in the simple viewing (not even running the shortcut) of the shortcut’s icon containing the malicious code. The malware utilizing this exploit can spread via infected USB thumb drives and the usual unintentional downloading of trojan horses and the like.

How to Protect Against It

Follow Microsoft’s instructions for not displaying shortcut icons. Microsoft’s temporary fix can be found with their security advisory number 2286198 (see the Workarounds and Mitigating Factors sections).

My Original Source

I found out about this issue through Trend Micro’s CounterMeasures blog post about the situation.

Parting Advice

Follow the workarounds described by Microsoft in their security advisory and hope that they can push out their fix by Patch Tuesday in August (closest planned patch date).