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.

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

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!!

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

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.

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

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]

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

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.

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

Installing cx_Oracle on Windows

July 28th, 2010 No 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, 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.

  • 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.

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

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).

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

Old Spice Style

July 14th, 2010 No comments

If I ever do my own ad campaign, I will definitely follow the model that Old Spice is using right now. If you are unfamiliar with what they are doing, they have the man in their regular TV commercials (which are quite humorous to say the least) doing personalized YouTube videos for people sending the OldSpice twitter account a message of what they would like said. Suddenly, Old Spice is getting tons of brand awareness, resulting from a little bit of real-time, instant work. Very interesting to say the least.

As more people become aware of this project of Old Spice’s, more people will submit to have videos made. As more videos are made, the larger the presence of Old Spice on YouTube and the internet in general. The larger their brand awareness level is, the greater expected profits for Old Spice and increased purchasing by consumers. To top it off, it is definitely a CHEAP advertising campaign. They are doing everything in probably 1-2 takes, and a little bit of writing ahead of time. The result will likely be a combo of the best use of social media to advertise and one of Old Spice’s cheapest advertising campaigns.

Of course, the novelty of this advertising scheme will likely only be viable for another day or so of straight use, but after that time, and giving the social communities a rest, Old Spice or someone else can likely rinse and repeat the process. Now, the most interesting use of this ad campaign would certainly be if someone ELSE had the guy say something that advertised for a different product all-together. Association would get the word of this other product out there, but would likely ruin the ad campaign for all the bystanders.

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

WordPress Upgrade Issue

July 1st, 2010 No comments

So recently, when BurgerBlog went through the automatic update from WordPress 2.9.x to 3.0, it ran into a slight hiccup that corrupted ALL of the posts that were on there. The issue seemed to be with the format of the single and double quotes throughout all the posts. They were all, without fail, replaced with ‘?’s. Now, what baffles me is how the system saved the wrong double and single quote symbols in the first place.

The quotes were the ones that are seen in word processors, like Microsoft Word, that are directional. So if I “quoted” something, the first quote would be different from the second quote.

Regardless, the reason that the system originally saved them, but no longer saved them is what truly confused me. As a result, I went through the following procedure:

NOTE: SQL knowledge and access to the phpMyAdmin page is required.

  1. Accessed the phpMyAdmin page, found on the control panel for your site. No, not the WordPress control panel, the one that’s on the back-end of the site itself (gives you access to your site’s stats, FTP accounts, email accounts, etc.).
  2. Browsed to the WordPress database and used the following SQL statement to find all posts that now had ‘?’s in them:
  3. To get all the posts with ‘?’s in them and their IDs.
    SELECT ID, post_title FROM wp_blogname_posts WHERE post_content LIKE ‘%?%’

    To get the distinct post titles that contain ‘?’s in them.
    SELECT DISTINCT post_title FROM wp_blogname_posts WHERE post_content LIKE ‘%?%’

  4. From there, I was able to garner the proper ID of the post title (most easily found by finding the present blog post with that title and selecting edit, then looking in the URL bar for the ID), and use SQL back-ups where possible to garner the most recent version with the quotes and single-quotes in them still.
  5. Did a find and replace on my back-ups for all of the incorrect double and single quotes.
  6. Manually pasted in the corrected post content directly into the database to expedite the process (could have done it manually with each edit page, but that requires waiting for all the WordPress functions and AJAX to load).

It took a couple hours to go through the 40 posts on BurgerBlog that were messed up, and that’s not including the extra time required to fix the ones I didn’t have back-ups for (I had been slacking with my consistent back-ups). Now, it is almost entirely fixed, with the exception being the couple of ‘?’s that were missed in the ones that were done manually (those should be fixed by end of 7/2 anyways).

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF

I’m Behind

June 28th, 2010 No comments

At this point, it’s kind of ridiculous how many weeks I am behind on blog posts. It is a recurring todo item on my personal calendar, but I never quite find the time for it in the day. The worst part about that is that I have content for the blog. LifeHacker did a new summary of the MUST have free apps for the Mac, and I am meaning to supplement it with my 2 cents. I have started my internship (been doing it for 3 weeks now) and have already learned plenty of topics ranging from DNS to proper unit testing in a real development environment to learning Python (which is a very fun language). Sprinkled in amongst such activities and learning experiences, there have been news posts worth my comments (in my opinion), and other developments in my personal life that I have debated discussing and just haven’t for the same reason that there hasn’t been an update before now, I didn’t do it.

So, with that being said, I am working on a post on one of those subjects for later this week and hope to get that trend going again. I’m thinking that the first subject will be all the issues I’ve had during the past couple weeks with WordPress due to upgrading BurgerBlog to WordPress 3.0 without taking a database backup. So frustrating.

See you later this week!

Share:
  • Digg
  • del.icio.us
  • Reddit
  • Google Bookmarks
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • Print
  • email
  • PDF