Total Pageviews

Friday, September 20, 2013

How to Kill an App in iOS 7

It's almost the same as before,  just a tad faster:
  1. Double click the home button
  2. Swipe to the troublesome app
  3. Swipe it up an out of there!
And that's that!

Hopefully this saves you some frustration when switching to iOS 7 and you're wondering, "What the heck? I can't kill a troublesome app anymore!?"

Yes, yes you can.

Wednesday, September 04, 2013

Updating Python Scientific Computing Environment on Mac OS 10.8

Upgrading an OS is simultaneously awesome and terrifying. Awesome because you are about to get your hands on what, hopefully, will be some fantastic new features! Terrifying because the upgrade will likely break a lot of software on your system, especially development tools.

Ooo, I'm intrigued! But is it safe?
(image from here)

In my case, I had a pretty good feeling the upgrade from Snow Leopard to Mountain Lion would break many parts of the python scientific computing development environment running on my system. Fortunately, I was going take a hiatus from that kind of development for a while. When I finally picked it back up, everything was working fine, surprisingly! But then I needed to update Pandas and iPython...

My development environment was built using Homebrew and pip. It's got python, zeromq, numpy, scipy, matplotlib, cython, pandas, ipython, and qtconsole. If you are looking to create an the environment from scratch, check out this article. It's pretty good. At some point I'll write up what I did. This article focuses on updating your installation.

Happy Path to Updating


My particular installation has a few more packages installed. So, there are more updates that need to occur. Note that when doing some of the upgrades via pip, other upgrades may get automatically triggered. For instance, upgrading matplotlib will likely upgrade tornado; therefore, you would not need to do so explicitly.
  01  brew update                             # update brew itself
  02  brew upgrade                           # update all installed packages
  03  pip list                                     # list installed pip packages
  04  pip install --upgrade numpy
  05  pip install --upgrade scipy
  06  pip install --upgrade matplotlib   # will likely update tornado for you
  07  pip install --upgrade cython
  08  pip install --upgrade pandas
  09  pip install --upgrade pyzmq
  10  pip install --upgrade pygments
  11  pip install --upgrade ipython      # repeat 'til latest version is installed
  12  pip list
  13  ipython qtconsole                    # test ipython in the GUI
  14  ipython                                   # test ipython in the terminal

Errors Updating Homebrew


Now, it is very likely that the happy path did not work so smoothly (ah, gotta love updates). Firstly, you may have encountered issues with updating homebrew. Oh I don't know, maybe you saw something that said error: unable to unlink old '.gitignore' (Permission denied), and several more like it. It kinda looks like this:


Or maybe you got some error stating that Your local changes to the following files would be overwritten by merge. See my post on Updating Homebrew Woes for tips on dealing with various issues. I am going to be brief here. The following commands should solve your Homebrew issues, and you can start on the happy path again.
  01  brew doctor
  02  sudo chown -R $(whoami) $(brew --prefix)
  03  cd $(brew --prefix)
  04  git fetch origin
  05  git reset --hard origin/master
The brew doctor command will tell you nearly everything that is wrong. Listen to the doctor and do what she says. The chown command will make sure you, the local user, owns the directory in which brew lives. The last three will reset your brew installation to the master branch (so, if you did actually make local changes, you may want to commit them).

Errors Updating PIP Installed Packages


You may have, or will, encounter numerous issues here. Some of them will result from not having updated Xcode and/or Command Line Tools for Xcode (see Updating Homebrew Woes for details). Here are a few errors you may encounter and solutions:

       error: /usr/include/zlib.h: No such file or directory

          ➜   install/update Xcode and/or Command Line Tools for Xcode

       src/_png.cpp:23:13: fatal error: 'png.h' file not found

          ➜   brew install libpng

       various errors installing matplotlib

          ➜   brew install freetype
          ➜   brew install libpng


Nifty Tools


The brew outdated command will list all installed packages that have available updates. So, you can use this command to estimate how much updating you will be doing, and how much time you might have to devote to this endeavor.

Unfortunately, pip does not have a similar command. However, Artur Siekielski wrote a script that can tell you what pip packages are up-to-date or have available updates. I have not used the script, but it could be handy.

References + Links

Installing Scientific Python on Mac OS X
Updating Homebrew Woes
Homebrew Troubleshooting
Homebrew FAQ
Script to Check for Package Updates on PyPi

http://pandas.pydata.org/
http://ipython.org/
http://brew.sh/
http://www.pip-installer.org

Tuesday, September 03, 2013

Tips for the Updating Homebrew Woes

Sometimes you run into something that requires you to update your installed packages. And then... you groan. Why? Because you know that once you attempt to update something, a gigantic can of worms will BURST open. Aaaand you know you are about to sink 3-5 hours updating packages, fixing dependencies, the whole nine.


To update brew and installed packages, you usually should only have to do the following commands (1):
1  brew update    # updates brew itself
2  brew upgrade  # upgrades all brew installed packages to latest versions
If you are lucky that day, it will work without a hitch! If not, here are some tips:

0.  The doctor is your best friend


Issue the "brew doctor" command. The doc will tell you what's wrong. Heed the doctor's orders and it will go a long way to reduce frustration.

1.  Make sure your brew --prefix directory is owned by you


At some point, something will mess with the ownership and permissions on this directory (typically /usr/local) and brew will be unable to write to it. The following command will usually remedy the problem (2):
1  sudo chown -R $(whoami) /usr/local
This command will run as super user and recursively change ownership of that directory and its contents to you, the local user.

2.  A hosed brew installation should be reset


Your brew installation may just be completely screwed from the onset. For instance, when you attempt a brew update you may get an error stating (among other things) that "The following untracked working tree files would be overwritten by merge." In this case, reset your brew installation to the master (3):
1  cd $(brew --prefix)
2  git fetch origin
3  git reset --hard origin/master

3.  Update your Xcode installation and/or Command Line Tools for Xcode (CLT)


Homebrew depends on stuff Xcode/CLT installs. Other packages Homebrew installs depend on stuff Xcode/CLT installs. Updating it is usually a good idea. If you do this by installing Xcode, you still have to do a few more things:
  1. Install Xcode from the App Store
  2. Launch Xcode
  3. Accept the License Agreement (most important step, otherwise Xcode is a dud)
  4. Go to Preferences > Downloads
  5. Install/Update Command Line Tools
If you see a message like "error: /usr/include/zlib.h: No such file or directory" when brewing, that usually means you didn't do steps 2-5 listed above. Get at it.

I hope these tips save some of you a bit of time and hours of your life back!

Sources / References

1. Homebrew FAQ
2. Homebrew Troubleshooting
3. Reverting to Master Branch

Good Links

Homebrew Troubleshooting
Homebrew and Python
Homebrew Homepage

Saturday, July 13, 2013

Programming Comcast XFINITY Remote to Logitech Z-5500 Sound System

Straight up BOSS sound system
Let's paint the scenario. You have a sound system that is straight up BOSS. It even boasts an optical cable for even more crisp sound. Your TV is this pristine flat screen that can play high definition media like nobody's business. Not to mention, this TV of yours also has plenty of HDMI ports so you can hook up just about anything: XBOX, PlayStation, ROKU, and more! And you just got Comcast XFINITY and all of its HD offerings. Sweet.

Exhibit "A"
But... you now have a plethora of controllers with which to contend. And if you have housemates... fahgettaboudit. They will be so confused and frustrated, you will have no hope of survival. There will be no end to the grief they give you. And who wants house drama? So, you opt to consolidate all functions into a single controller. However, you are too cheap to buy an awesome universal remote... because the Comcast XFINITY remote IS a universal remote (see Exhibit "A").

Great. Now you get to the business of setting up the controller. TV gets programmed easy; no issues there. Then you get to your Logitech Z-5500 Sound System. Aaaaaand that Comcast remote can't recognize it. Not only is there no manufacturer code printed on the controller's user guide, but using the controller to search for your code comes to no avail. Now what?

Enter secret codes. You'll have to manually program XFINITY remote and map the buttons to the functions you want. Here is the play by play:

Eligibility
  1. Do you have patience?
  2. Does your controller look somewhat like exhibit "A"?
If you answered yes to those questions, you might just be in luck.

Test Case: Program the Power button

We are going to try to program the power button. If we can do that, then you have carte blanche.

Set the controller's AUX mode to accept programming
  1. Press and release AUX
  2. Press and hold SETUP until the AUX button blinks twice
  3. Enter code 11523
  4. The AUX button should blink twice in confirmation
  5. Repeat if step 4 did not happen
Program the Power button to toggle the Logitech Z-5500 system's power

Make sure the logitech system is powered on prior to completing these steps. Also make sure that you point the Comcast controller at the Logitech infrared receiver when entering commands.
  1. Press and release the AUX button
  2. Press and hold SETUP until the AUX button blinks twice
  3. Enter code 9 9 4
  4. Press and release SETUP
  5. Enter code 44485
  6. Press and release the POWER button
  7. The AUX button should blink twice in confirmation
Now, attempt to toggle power on the Logitech sound system. If you can't manipulate power with the controller, attempt to program it again with the above steps. If after a few tries there is no dice, sorry to say but you are SOL. But if it DOES work, read on friend!

Heavy Lifting: Program the rest of the functions

Assign controller buttons to desired functions for the Logitech system

To map functions to buttons, you have to repeat the steps written in the previous section for each function you want to map (this is where the patience part kicks in). Step 5 is where you will substitute the code for the function you want. And step 6 is where you will press the button to which you want that function mapped. Below is a table of all the codes, associated functions, and the mapping that I decided to utilize. Feel free to use my mapping or devise your own.

Logitech functions mapped to XFINITY Remote
CodeFunctionMapping
44485
12229    
28357
61381
61125
60869
60613
62405
61893
44741
28613
29637
27845
12485
12997
61637
Power
Vol +
Vol -
Center +
Center -
Surround +  
Surround -
Sub +
Sub -
Mute
Direct
Optical
Coax
Effect
Settings
Test
Power
Vol +
Vol -
Up Arrow
Down Arrow
Left Arrow
Right Arrow
Ch +
Ch -
Mute
HD ZOOM
TV/VCR
Last
FAV
Menu
Info




Final Tweaks

To limit further confusion with the main volume button... you wan to program the controller so that no matter what mode it is in (CABLE, TV, or AUX), the main volume button will raise or lower volume on the Logitech system, not the TV itself. Trust me, this goes a LONG way to mitigate against confusion from users.

Lock volume control to AUX mode
  1. Press and hold SETUP until a red light flashes twice
  2. Enter code 9 9 3 (red light will flash twice)
  3. Press and release AUX (red light for selected device will flash twice)
Now, if you wanted to lock volume control to the TV, you would substitute TV for AUX in the above steps.

FANFARE!

And that's that! If you made it through, tap yourself on the back. While you're at it, get yourself a Klondike bar. You deserve it. Your housemates and family will be happy too! To some degree, heh heh. And bookmark this page! You never know when your cable box will go kaput, Comcast will come replace it, and give you a whole new controller... be ready!!!

Sources

Original post
Codes that almost worked
Setting the 11523 code

Thursday, December 27, 2012

Curious Case of a Stuck Price Quote

The number of gotchas you can come across while trading in the financial markets are innumerate. The latest I've come across on my merry journey: the almighty stuck price quote!


BAM! See it? I met this happy traveler back on Thursday, December 6th. There I was, minding my own business and watching the quotes meander as they oft do. Suddenly, I see the bid far surpass the ask! And what do you think my first thought was? Well, it definitely wasn't, "That can't be right... let's find out what's going on." No, my first thought was more, "Whoa! Quick, adjust my offer price in the off chance it might be real!"

In the trading world, there are times when you shoot first and ask questions later. Remember the AAPL flash crash in 2010? I do! My long puts got pretty fat with a quickness, and I sold them just as fast. Now with profits safely taken off the table, I had plenty of time to ask questions. This scenario, however, wasn't the same case. No one gobbled up my puts.

My net liquidating value looked AWESOME. But that was all fake. Now it was important to find out what the deal was so that I could know where the market was actually trading. A quick call to the broker and it was all clear, "Looks like the quote is stuck. I'll report it to the exchange." Did he just say, "stuck?" Better believe it. In fact, that bid price remained at $30.30 for a good long while.

Moral of this story, watch out for stuck quotes! It is bad news, especially if you wrote a program to handle your trading for you. A stuck quote means could mean your program has a false idea about the state of the world. Add this quirk to the list of errant conditions for which you are checking!

Sunday, October 09, 2011

How To Obtain The Day of Week Given a Date in Google Spreadsheets

UPDATE 2017-10-12:
As noted in the comments, there is an even much easier way to do this now!

=TEXT(A1,"ddd")

At some point Google updated the text function to take formatting parameters which makes this a cinch.

The old post from 2011-10-09 follows below and is a great introduction to the CHOOSE function. But don't use it for getting the day of week anymore!



Google Spreadsheets has a nifty function named CHOOSE which exhibits behavior like the switch statement programmers all know and love. Basically, it allows one to select an action/value based on some input. This is GREAT!

I needed to fill cells with the day of the week given a date. There isn't any built-in function that performs this task in Google Spreadsheets right now. But, we can solve this very easily using the CHOOSE function.
=CHOOSE( weekday(H1), "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")
This formula is very simple:

  1. The contents of cell H1 holds the date
  2. The function weekday converts that date to a number from 1 through 7 representing the day of the week (Sunday=1)
  3. This value, in turn, is then used by CHOOSE to select which value in the subsequent list to use in the current cell
  4. Voila
E... to the Z.

In this case, we are converting dates to days of the week in the format I wanted. Now we can start getting all fancy. Imagine, instead of days of the week, the list of possible values were different formulas to compute some result. The formula to use depends on the value inserted in the first input to CHOOSE.  However, remember that nothing is stopping even this first input from being yet another formula computing a specific result based on the data in particular cells. 

With this function, the possibilities are endless!

Reference: See the second comment on this blogpost

Thursday, September 29, 2011

How to Sign Off of Netflix on PS3

The answer will shock you.... it's basically the Konami code:
  1. Start up the Netflix App on your PS3
  2. Go to the instant queue (just scroll to it at the bottom)
  3. Input the following code sequence using your controller:
    1. Up Up
    2. Down Down
    3. Left Right
    4. Left Right
    5. Up Up Up Up  (this is the departure from the Konami code)
After doing this, a popup will emerge describing the account currently activated on the PS3 with an option to deactivate it.  And Voila.

Crazy......  and no joke, this does work.

Reference: comment by dayanna on this ps3 community thread

Wednesday, June 22, 2011

Google Spreadsheets Tips: Not Equals, Newlines, And More!

If you are like me, sometimes you just want to add a newline within a cell. And other times, you want to check whether item A is NOT EQUAL to item B within a formula. But dangit... how do you do it!? This entry will cover such tips and tricks as I learn more of them (filtering is pretty sweet too). Without further adieu:
  1. Google Spreadsheets Formula Documentation
  2. Not Equals
  3. Newline
  4. Filtering
  5. Give me the value or give me ZERO... no errors PLEASE!!!

That's the link to all the formulas available in google spreadsheets (hint: click on the title of this very section). It is a pain to find just going to google help (strange....). This first tip is golden! Now you know where the formula list is.
    Not Equals

    There are two ways to do not equals:
    1. Use the symbol: <>
    2. Use the function: NE()
    The first one can be used in calls like the following:
    • =IF(A2<>"SKIP","Fanfare!","--")
    • =SUMIF(B4:B8,"<>2")
    That first one will print "Fanfare!" in its cell if the contents of A2 is not equal to "SKIP". That second one will will sum the contents of the cells in the range B4 to B8 that are not equal to 2.

    Pretty sweet huh?

    Newline

    Found this one searching google help. Check out this answer.

    There are two ways to create a newline within a cell:
    1. Use: &CHAR(10)&
    2. Use shortcut: Ctrl+Enter
      (i.e., press and hold the ctrl key and then press the enter key)
    I typically use the second one.

    Filtering

    Filtering is pretty dang sweet. It allows you to select specific cells of one column, based on criteria against another column. And if you want to get even more crazy, you can add more column/criteria pairs. In fact, you can even do rows, or both columns AND rows (but your brain might explode... just sayin'.)

    Example:

          =2*sum( filter( C2:C40, C2:C40<>"#N/A") )

    This formula will sum all of the values in the column C from rows 2 through 40 where the value within that cell is not equal to #N/A... and then multiply the result by 2.  So if we had the following:

      C  
    2  4  
    3  2  
    4  #N/A  
    5  3  

    The answer would be 2*(4+2+3) = 2*9 = 18.

    What filter basically does is return the values for all cells in the first range where the corresponding cell in the criteria range meets the criteria.

    Let's look at another example:

          =2*sum( filter( C2:C40, C2:C40<>"#N/A", D2:D40<>3) )

    This formula will sum all of the values in the column C from rows 2 through 40 where the value within that cell is not equal to #N/A and the corresponding cells of column D from 2 through 40 is not equal to 3. The result is then multiplied by 2. So if we had the following:

      C    D  
    2  4    3  
    3  2    0  
    4  #N/A    2  
    5  3    9  


    The answer would be 2*(2+3) = 2*5 = 10. 

    Mull that one over a bit.  But yes, filter is bad @$$.

    Give me the value or give me ZERO... no errors PLEASE!!!

    Answer: N( IFERROR( value ) )

    This combination of functions is magical.  It will return 0 if whatever you are trying to do for value bombs big time. But, if it doesn't bomb, this combo will return value.

    Why would we want to do this? Check out the following data set:

      C    D    E  
    2  a    inc    3  
    3  b    inc    1  
    4  a    dec    -2  
    5  b    add    9  

    Okay, so we've got something identified by the letter "a" and something identified by the letter "b". We also have indicators that suggest incrementing (inc), decrementing (dec), and adding (add). In this data set, inc and add mean the same thing. So to get the total amount of a particular item in column C, we need to some the values in column E where the corresponding cells in column D equal inc or add.

    Whew..... got that?

    Let's take the item designated as "b". If we wanted to find the total amount of it, we need two sums:

    • sum of all rows in E corresponding to item "b" designated as inc
    • sum of all rows in E corresponding to item "b" designated as add

    So, we filter on column E where column C="b" and where column D="inc".  Then we filter again except change "inc" to "add".

          = sum( filter(!E:E,!C:C="b",!D:D="inc") )  + sum( filter(!E:E,!C:C="b",!D:D="add") )

    This will gives us the answer 9. Great! Now, if we do the same thing for "a", the answer will be #N/A. Why? Because there are no rows in the data set for item "a" designated as add. So the filter won't return anything, and sum will throw an error.  We don't actually care that there were no rows designated as add. In fact, we would just be happy if it returned 0.

    BAM! That's where N( IFERROR( value ) ) swoops in like Superman and saves the day (or like Deadpool with guns blasting). If we wrap each sum method in N( IFERROR( ) ), we will get the result of 3 for "a". WIN!

    There may be a simpler way. If you know it, holla at me.

    Tuesday, June 07, 2011

    When do Options Expire?

    This is a long time coming. I think I've had my reference articles opened in Chrome tabs for a year now (yeah, you read that correctly... one year). So, when do the financial instruments known as options expire? The answer isn't a simple one. It depends on what type of option we're talking about, and potentially on what underlying to which this instrument derives its value. This article aims to distill the answers in as concise a way as possible. Here goes:

    Option TypeOption FrequencyExpiration Last Trading OpportunitySettlement Reconciled Proviso
    Equity Weekly Friday Fri @ 16:00H Fri @ 16:00HFri @ 17:00H
    Equity Monthly Saturday following the third Friday of the monthFri @ 16:00H Fri @ 16:00HSat @ 17:00H
    Index (PM) Weekly FridayThu @ 16:00H Fri @ 16:00HFri @ 17:00H
    Index (PM) Monthly Saturday following the third Friday of the monthThu @ 16:00H Fri @ 16:00HSat @ 17:00H
    Index (AM) Weekly FridayThu @ 16:00H Fri @ AM Fri @ 17:00HSettlement computed once all opening prices of all underlyings that represent this index are recorded
    Index (AM) Monthly Saturday following the third Friday of the monthThu @ 16:00H Fri @ AM Sat @ 17:00HSettlement computed once all opening prices of all underlyings that represent this index are recorded
    *All times above are Eastern Standard Time (EST)

    Allowing the option to expire "worthless" is a bad idea if the price is anywhere near the strike. Due to settlement and reconciliation processes, the option you thought was out-of-the-money may actually end up being in-the-money (and vice-versa). This is particularly bad if you are unhedged in a short position or don't have the funds in an account where a long position is automatically exercised.

    Other Facts

    American Style Exercise: Options can be exercised anytime before expiration
    European Style Exercise: Options can only be exercised at expiration

    • When holidays occur, last trading dates and index settlements get pushed earlier one day (as expected)
    • Equity Options have American Style Exercise
    • Index Options have European Style Exercise -- some are American

    Sources

    Options Expiration and Exercise
    Options Expiration FAQ
    CBOE Glossary
    Options Don't Expire on Fridays
    What are the terms of Short-Term Options?

    Sunday, June 05, 2011

    How to Permanently Delete Images in iPhoto

    Did you know... iPhoto has it's own trash can!? Yup! Like you, I did not realize this fact. iPhoto does so many things under the hood, it's hard to know what exactly is going on. Did you know that if you do red-eye removal on a photo, a new copy of that photo is made? iPhoto wants to make sure the original photo stays intact so that we, the users, may always have access to it. Okay, let's get on with the purpose of this post.

    Album:
    • Is a "view" on the photos in your library
    • Think of albums as "Labels" in GMail
      • many labels (albums) can point to the same e-mail (photo)
      • you can create as many labels (albums) as you want
      • deleting a photo from an album is akin to removing a GMail label from an e-mail -- that e-mail (photo) is simply removed from that view (label/album), but the e-mail still exists in your library
      • deleting a label (album) does not delete your e-mails (photos); it only removes the association
    Library:
    • all of your photos
    • deleting a photo in your library moves it to iPhoto's trash -- i.e., it still exists

    So far, I hope the distinctions have been clear between deleting a photo in an album versus deleting a photo in your library. Once you have deleted a photo in your library (and it has been moved to the trash), you must EMPTY THE TRASH to permanently remove the photo from your computer. There are three ways to do this:

    1. Use the main menu bar


    a) click on "iPhoto" in the main menu
    b) click on "Empty Trash"
    c) FANFARE!!!

















    2. Use the trash icon


    a) look under "Recent"
    b) right click on "Trash"
    c) select "Empty Trash"
    d) FANFARE!!!




    (Note: the icon will appear under "Recent" if you've recently viewed/emptied trash)




    3. Use a shortcut


    a) make sure you haven't selected any images anywhere
    b) press shift-command-delete


    Saturday, May 07, 2011

    My Country Music Experiment

    Country music gets a gigantic load of hate, primarily from us city dwellers. And I can't count myself outside of that hating crowd! At least... up until I finally made good on my word to give country a chance. It must have been six or so years ago when I realized, "Man, you've been broadening your music tastes across the board... and you STILL haven't given country a fair shot!" And there that thought lingered -- in the distant recesses of my mind.

    Then, maybe about two months ago, I got a tip that the NCAA Wrestling Championships were on ESPN2. Jumping out of my seat I rushed to that sweet HDTV and frantically flipped through hunting for the channel. Soon it dawned on me... we don't have that channel (dag...NAMIT!). The channel I landed on was some country music channel. I thought, "Meh, might as well leave it on in the background. I have been planning to give country a shot for who knows how long now." So began my experiment...

    The majority of the music I heard, I did not like (no shocker there). But surprisingly, there were quite a few I did like! I mean, I expected there to be close to zero; instead there were more like ten! So, on to the next phase. PANDORA TIME!  I seeded a new station with three tracks:
    1. My Kinda Party by Jason Aldean
    2. Save A Horse [Ride A Cowboy] by Big & Rich
    3. This by Darius Rucker
    Here is a YouTube video for My Kinda Party:


    Two months and numerous thumbed down tracks later, I'm still digging this station! The seeds worked great, and cutthroat curating is keeping it on point. What I've gleaned is that country nowadays is not like the country of before (and that country music fans are EXTREMELY stoked about bringing new people into the fold). Technically, I hear that the stuff I seem to have fallen for is country "pop" music. And, it is HARD to stay seated when the good stuff comes on!

    Now if Pandora didn't exist, there's no way I would have really followed through on giving country music a chance. But Pandora makes it way easy. All I had to do was seed and thumb up or down the tracks it began playing. All the while, the algorithm powering Pandora gets smarter, converging on the type of country striking my fancy and playing more and more aligned picks. It's great! And if you haven't started using Pandora yet... get on it!

    My experiment has revealed so far that country music pretty much revolves around the following:
    1. Keepin' it real
    2. Embracing your humanness
    3. Complimenting a woman every chance you get
    4. Standing tall for what you believe in (don't back down)
    You can't go wrong with that! All four are realized in various styles of play. I'm a fan of the faster, more upbeat styles with some serious drum beats. The style makes it hard for a brother to remain seated. The music is MAD enjoyable. The storytelling is so genuine and somewhat innocent you can't help but get sucked in, and not to mention unintentionally HILARIOUS in quite a few songs. The music definitely about living life to the max and being real while pursuing that endeavor... ALL IN PEOPLE. You gotta have a great time and make the most of life, and you gotta do it with those whom you are close. In addition, let's not forget moments of pure chillin'.

    And maaaaan, the women must feel like they're on cloud 9 all the time. For real! In nearly every genre of music women are talked up. But in the country songs I dig, women are pretty much (all in a good way) the most precious, beautiful, wild, dangerous, independent, exotic, amazing entities to ever exist. In addition, the lady is complimented with such clever use of words it reminded me of the days of good  R&B where you knew the artists were singing about some intimate details but done in such a dressed up way it was straight beautiful and beyond smooth.

    So, country music gets my thumbs up. I'm all about music that is great fun, gets you moving, and tells a great story or hits on real topics. Music lately has been moving away from that, so this was a refreshing breath of air and vitality. Give country a try! And use Pandora to do it -- makes finding your niche a cinch.

    In addition to My Kinda Party mentioned earlier, here's a list of some of my current favorites with a bulleted shortlist below the widget. Click on the widget to see the longer list and play samples.

    Friday, April 01, 2011

    Integrating Eclipse, Subversion, and JIRA Studio on a Mac

    Another one for my fellow fully integrated development environment junkies. Continuing on with the mantra, "My tools should work for me, not the other way around," this post will discuss how to integrate Subversion and JIRA Studio into Eclipse 3.6 Helios in order to facilitate development and streamline workflow. This was done on a Mac running OS X version 10.6.7.

    Some background, JIRA Studio is the hosted version of the JIRA issue tracking and project management suite. Of all the issue tracking tools I've used (Bugzilla, Trac, Redmine, and others), JIRA handily surpasses them all. The Studio instance also integrates many of Atlassian's other products into one integrated suite that is beyond sweet (no pun intended).

    Alright, let's get on to it!

    Installing/Updating Eclipse

    Download the latest eclipse installation per your requirements.  I installed the OS X 64-Bit Java EE version which can be found here:
    Save the file and move to wherever you want to extract it (/Applications/eclipse/ is not a bad idea).
    • gunzip <eclipse-version.tar.gz>
    • tar -xvf <eclipse-version.tar>
    These commands will extract the contents into a folder likely named eclipse. I suggest renaming that folder to be representative of the installation.
    • mv eclipse eclipse-jee-helios-64
    Launch Eclipse and select a workspace.

    If you were using an older version of Eclipse, most of your workspace configurations are contained within the workspace and will be carried over. You will, however, need to re-download any plugins. Most plugins would need to be updated anyway due to the new version of Eclipse. Do this by going to "Help" on the main Eclipse menu bar and selecting "Eclipse Marketplace" or "Install New Software". With the latter, you will need to add update sites manually.

    Installing JavaHL 
    (Required for Subclipse)

    In order for Subclipse to work, it requires JavaHL (Java bindings to Subversion) to be installed. Visit http://subclipse.tigris.org/wiki/JavaHL for more background. I've come across two ways to realize this step:
    1. Via MacPorts
    2. Via CollabNet
    The former avoids the off putting user registration/verification step required by the latter. But if the target system does not already have MacPorts installed, then a rather involved process will follow if using option 1.  Otherwise, if MacPorts is already installed, option 1 is likely the better alternative with regards to keeping the target system updated and current.

    Via Option 1:
    However, the JavaHL Subclipse Wiki Entry does indicate that using MacPorts may result in a loading error from Subclipse if the target system is utilizing the native 64-bit JVM provided on Snow Leopard. The wiki claims this is due to MacPorts compiling the JavaHL packages as 32-bit binaries.  Option 2 includes binaries for both 32-bit and 64-bit architectures and thus circumvents this issue.

    Via Option 2:

    Note that after installation, we will augment the path such that this new Subversion installation is the one first found by any callers.  In other words, the native Subversion binaries of OS X will still remain, just frog jumped.
    1. Go to http://www.open.collab.net/downloads/community/
    2. If don't already have an account, you will have to create one (it's free).
    3. Download the Universal Subversion binaries for your version of OS X.
    4. Double-click on the .dmg file.
    5. Double-click on the package that appears and follow instructions to complete installation (not different from typical installation procedures of .dmg distributions).
    6. Issue the following command in a terminal window to frog jump these binaries in front of the native OS X Subversion installation:
      • export PATH=/opt/subversion/bin:$PATH
    Both of the following items can be installed via the Eclipse Marketplace.  However, you have less control over the version you want to install.  So, the following the descriptions utilize the non-marketplace method.  This involves adding a plugin's "update site" to your Eclipse installation.

    Installing Subclipse

    It is TREMENDOUSLY important that you install the version of Subclipse matching your version of Subversion.  In addition, if you plan on utilizing multiple Subversion tools to interact with your local copy of the repository, all should be using the same version.

    The Subclipse update sites can be found on the Tigris site.  I've listed a couple here for your convenience:
    • http://subclipse.tigris.org/update_1.6.x   Subversion 1.6.x
    • http://subclipse.tigris.org/update_1.4.x   Subversion 1.5.x

    Add the update site to Eclipse:
    1. Click on "Help" on the main Eclipse menu bar
    2. Select "Install New Software"
    3. Click on the "Add" button on the top right of the dialogue window
    4. Enter an optional name like "Subclipse 1.6.x" and enter the 1.6.x update site (listed above) in the "location" text field
    5. Click "Ok"
    6. Now select the update site from the menu and click on next.
    You will see several items appear with check boxes to select software.

    You can select everything, or just the items you need.  Make sure that anything labeled "required" is checked.  Items having a dimmed connector icon are already installed and need not be checked.
    1. Click next and keep on following the instructions and accepting the license agreements
    2. After installation completes, opt to restart Eclipse
    Check that Subclipse operates with JavaHL: 
    1. Go to "Eclipse > Preferences..."
    2. Expand "Team"
    3. Click on "SVN"
    If there is no error from clicking on "SVN", then aside from your personal preferences the installation and configuration should be complete.

    Installing the Atlassian Eclipse Connector

    The following are the connector's update sites:
    • http://update.atlassian.com/atlassian-eclipse-plugin/e3.6
    • http://update.atlassian.com/atlassian-eclipse-plugin/e3.5
    Use the link below if you want the connector that still includes Crucible and Fisheye support (works for both Eclipse 3.5 and 3.6):
    • http://update.atlassian.com/atlassian-eclipse-plugin/2.3.0/e3.5
    Follow the same procedure as outlined in "Installing Subclipse" to get the Atlassian Eclipse Connector plugin installed. Again, opt to restart Eclipse after installation.

    Connect Atlassian Eclipse Connector to JIRA
    1. Launch Eclipse
    2. If you have the default workbench layout in Eclipse, then a "Task" panel should appear in the upper left
    3. Clicking on the new task icon on this panel will bring up the following menu:
    4. Click on add repository; the following dialogue should appear:
    5. Select JIRA
    6. Augment options if desired
    7. Verify the configuration
    Once the repository is all set, you'll need to add queries to get your tasks to appear in the task window. Using the same steps we walked through to reach the "Add Repository" selection, we can reach the "New Query" selection. The rest should be self-explanatory.

    Hope this helps!

    Monday, March 28, 2011

    VMware Fusion + Ubuntu + Shared Folders

    For you crazies out there trying to circumvent lockouts... you may have endeavored to create a development environment utilizing multiple technologies to facilitate your need. Case in point:


    This setup allows me to run various programs on my local system when I'm not on campus. However, the tiny gotchas in setting up the environment have serious bite! The setup involves VMware Fusion on a Mac running an Ubuntu installation in a virtual machine and sharing folders between the host operating system (OS X) and the guest (Ubuntu).  My Ubuntu installation is actually augmented as a Debathena station.

    This post will only cover getting around the problems encountered when sharing folders between the Mac and the Ubuntu Virtual Machine running concurrently.  More specifically, making sure that it can be seen from the guest and streamlining to mitigate against the risk of system updates breaking the shared folders functionality. Creating the whole environment from scratch might be the topic of another post. Anyway, I found a mechanism so that shared folders work, but it does require a manual operation whenever the virtual machine is launched.

    The problem revolves around VMware Tools. VMware tools provides extra features that allow for a more seamless operation between the host and guest operating systems such that the line splitting the two is blurred. This includes copy/paste functionality, shared folders, and more. However, installing VMware tools is quite a process.  There are a few ways to do it:
    1. using the open-vm-tools package provided by Ubuntu
    2. using packages.vmware.com from VMware itself
    3. manually via the VMware host you are running
    Of these three, method 2 will allow you to utilize the standard package manager operations provided by the Ubuntu operating system to manage updates. And that... is priceless. When I first created this development environment, I went with option 3. Everything worked beautifully, although I had to use the 32-bit 10.04 Lucid version of Ubuntu instead of the 64-bit 10.10 version after hitting several road bumps. Then at some future date, I had to install a slew of updates...  this is when vmware tools got broken and, more specifically, shared folders.

    Go with option 2....

    Installation via Option 2


    The following sites provide pretty good instruction on how to get vmware tools installed:
    Unfortunately, it will take some back and forth between the two guides to fully complete the installation as the former is missing some steps mentioned in the latter. Here is my abridged version (actual command line commands will be in bold italics):
    1. (optional) if vmware tools is already installed via option 3, it must be uninstalled:
      1. sudo vmware-uninstall-tools.pl 
    2. create a directory to store some keys (doesn't matter where)
    3. navigate to that directory
    4. wget http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-DSA-KEY.pub
    5. wget http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
    6. wget http://packages.vmware.com/tools/VMWARE-PACKAGING-GPG-KEY.pub
    7. sudo apt-key add *KEY.pub
    8. cd /etc/apt/sources.list.d
    9. sudo emacs -nw vmware-tools.list
    10. add the following line to that file followed by a newline:
      1. deb http://packages.vmware.com/tools/esx/4.1latest/ubuntu lucid main restricted
    11. ctrl+x ctrl+s (saves the file)
    12. ctrl+x ctrl+c (exits emacs)
    13. sudo apt-get update
    14. sudo apt-get install vmware-open-vm-tools-kmod-source
    15. sudo module-assistant prepare
    16. sudo module-assistant build vmware-open-vm-tools-kmod-source
    17. sudo module-assistant install vmware-open-vm-tools-kmod
    18. sudo apt-get install vmware-open-vm-tools
    There is a chance that step 14 will generate an error in the vain of, "I don't know what file you are talking about...."  If this happens, something likely went wrong in steps 9-12.  Make sure there is a new line at the end of the file.

    At some point during those steps, a reboot or two will likely be required. 

    Installation Verification


    After all these steps, it is wise to verify the installation.  According to the VMware documentation, this can be done by running the following command:
    • /etc/init.d/vmware-tools status
    In this status, you want to verify that "vmware-guestd" is running (for ESX releases prior to 4.1) or "vmtoolsd" is running (for ESX releases 4.1 and later).  The documentation also says to check that certain kernel modules are running using the /sbin/lsmod command. See page 29 under "Verify VMware Tools installation" in the documentation for more details.

    Verifying Shared Folders


    If you desire to share folders on your OS X side with the Ubuntu guest, a few extra steps will be required.  
    1. On the VMware Fusion menu bar, select "Virtual Machine"
    2. Click on "Shared Folders"
    3. If a shared folder hasn't yet been created, select "Add a Shared Folder"
      1. When completed return to the "Virtual Machine > Shared Folders" menu option 
    4. Select "Open Shared Folders Settings..." and verify your desired settings
    Now that a shared folder is verified to exist on the VMware Fusion software, check that it can be seen within the Ubuntu guest (it likely won't):
    1. Open a terminal window
    2. ls /mnt/hgfs/
    If your shared folder does not get listed, it means Ubuntu cannot see it.  Return to the VMware Fusion menu bar and do the following:
    1. Select "Virtual Machine > Shared Folders > Turn Shared Folders Off"
    2. Select "Virtual Machine > Shared Folders > Turn Shared Folders On"
    That's right, simply toggle shared folders off and on. Return to the terminal window on the Ubuntu guest and run the same command again:  
    • ls /mnt/hgfs/
    This time, your shared folder should get listed.  And off you go.  

    You should now be able to ensure vmware tools is always updated via Ubuntu's package manager. However, every time the Ubuntu guest is relaunched, the shared folders toggling trick will need to be executed to ensure the guest can see the shared folders.

    Run along now, hope this helps!

    Friday, December 04, 2009

    Rappers Hit Up Tech Conferences Too

    It should come as no surprise that tech is a part of the game too.  I'm sure you've heard, as have I, that CD album sales are down and that the giant music labels are trying to fight against a roaring tide that seeks to upend the old business models. The web has and continues to level the playing field.  And rappers are discovering this.  In this guest lecture at Stanford (part of Standford's Entrepreneurial Thought Leaders Seminar), artists Quincy Jones III and Chamillionaire lay it down for us.  The web is changing how we communicate, how new fans are reached, and how street cred for products is measured.  It's all about community.  The current rage of social networks fuels this type of economy. Those who are on top of the game stand to make greater strides into reaching fans than those shunning the tech.  In this talk, Chamillionaire mentions how he was clowned for using the internet back in the day for promoting his indy songs.  But his early adoption kicked back some serious ROI. Both Quincy and Chamillionaire are staying on top of the game by embracing tech, hitting up tech conferences, and incorporating the cutting edge into their respective strategies.  Check it out here:



    NOTE: If the above doesn't play (seems like there might not be a video feed), click through to the site here, and click on "Download" to get the MP3 file.  You can also find it on iTunes and subscribe to Stanford's podcast.

    Tuesday, November 24, 2009

    New GChat Mobile Icon?


    I was logged into GMail and noticed on my GChat side bar the appearance of a new icon... a mobile phone!  I've pointed it out in the image on the left.  It hadn't appeared before today and I turned on the "robots" icon lab feature a few days ago.  So this is probably new!  And pretty kool.  I wonder if it is drawing from GMail's contact management, or from Google Voice.  If you hover over this contact, an option to SMS appears.  Pretty neat.

    Sunday, March 08, 2009

    Gmail and Safari 4 beta issue

    Just a quick post. Some of you out there may be using the brand spanking new Safari 4 beta. It is SWEEEEEEEEET by the way. And by sweet, I mean fast. Anyway, if you are using Google Gears with Gmail for offline access, you may experience problems with Safari 4 (on a Mac at least). What you will see when you attempt to log in is a beautiful blank page. Yes, blank and staring at you. If you run the Web Inspector, you will see that an error is occurring on load. The error is:

    TypeError: Result of expression 'mc().create' [undefined] is not a function.

    I've had numerous problems with offline Gmail on Safari (on a Mac) even before the beta. So I thought it might have something to do with it.

    The (Workaround) Fix : Disable Gmail from Google Gears
    1. Click on the "Safari" menu item on the menu bar
    2. Select "Google Gears Settings..."
    3. Click on the "Denied" radio button for everything Gmail related
    4. Voila
    All done! Now if you need offline access to Gmail, this solution will not work for you. Apple (or Google) needs to actually resolve the issue so that offline Gmail is functional.

    How to Launch Web Inspector
    1. If you see the "Develop" menu item, skip to step 6
    2. Click on the "Safari" menu item on the menu bar
    3. Select "Preferences..."
    4. Click on the "Advanced" tab
    5. Make sure the checkbox next to "Show Develop menu in menu bar" is activated
    6. Click on the "Develop" menu item on the menu bar
    7. Select "Show Web Inspector"

    Tuesday, April 15, 2008

    The Dreaded Wash Sale Rule

    It's tax time and you are a fledgling investor. You've been dabbling in the markets trading various securities, even options! During all this activity you might have heard about something called a wash sale. But did you really pay attention? Nope! You thought, "Meh, I'll worry about that later. I've got a general handle on what it means. Back to trading!" And then tax time hit.......

    This post might be too late for some of you, seeing how it is the 11th hour. But just in case, I thought I'd provide a little insight. A wash sale is defined by the IRS Publication 550 as follows:

    A wash sale occurs when you sell or trade stock or securities at a loss and within 30 days before or after the sale you:
    • Buy substantially identical stock or securities,
    • Acquire substantially identical stock or securities in a fully taxable trade, or
    • Acquire a contract or option to buy substantially identical stock or securities
    What is meant by substantially identical? Typically it means buying the same security. And yes, that includes options on that security! Doesn't that suck? Yeah... tell me about it.

    Why is this rule in effect? It is there to dissuade people from selling and buying a stock just to get the the loss write off. See, if you take a loss on an investment, the IRS has a provision that allows investors to deduct the loss come tax time. BUT... if you try to game the system, the IRS sticks it to you. When a wash sale occurs, you cannot deduct the loss.

    What can you do? You add the loss into the cost basis of the shares of stock you bought back within that window. Oh, and you have to add them proportionately. Say for instance you sold 100 shares of XYZ at a loss and bought 150 shares of XYZ within a 30 day window prior to or after selling those first 100 shares. The loss you just incurred is considered a wash. That's right, you can't deduct that loss! BUT, you can apply that loss to the cost basis of 100 of the 150 shares of XYZ that you bought.

    So what does this mean? It means you haven't lost the chance to deduct the loss; you only have to be a little more patient. By allowing you to add the loss to the cost basis of the new shares, the IRS gives you the opportunity to take the loss later -- that is if the new shares are also sold at a loss.

    Okay, so you have a problem. You need to determine whether or not you have a wash sale. You now know that a wash sale occurs when there is buying and selling of the same security, whether it be purely stock, options, or any combination, within a certain 30 day window. What happens if I buy a stock and options on that stock on the same day and both are sold within 30 days of the buying and the selling...... Specific ain't it? Yes, that's what I did. And I thought I was in a Catch 22. Why? Because if you take the wash sale terminology word for word, it may seem like you are screwed and cannot take any loss. It would sound like this:

    • Bought 100 shares of stock XYZ and 2 Call option contracts on stock XYZ on Day 1
    • Sold 100 shares of stock XYZ on Day 10 at a loss
    • Did I buy substantially identical stock within a 30 day window? Yes, the options.
    • Loss in sale of stock XYZ on Day 10 is a wash
    • Add cost basis of shares of XYZ to equivalent number of shares in the options contract ( so to one of the two contracts since each contract holds 100 shares )
    • Both XYZ call options expire at a loss on Day 25
    • Did I buy substantially identical stock within a 30 day window? Yes, the stock.
    • ....WHAT!? Is my loss on the options a wash too!?
    No! You are safe. You've already taken into account the stock. The number of shares in that stock you sold at a loss no longer exist and the loss has been added to the cost basis of the options. So when you ask the 30-day window question about the options, the stock that you sold earlier is no longer in the picture as it has already been accounted for.

    Okay, now there are several rules for wash sales. It gets pretty hairy, believe you me. And if you have a lot of complex situations like the one above (combinations of options, stock, and maybe other stuff), or a high frequency of trades, then doing this by hand is NOT an option. You want to use a program. I've done this research so you don't have to anymore. Check it out:

    Where can I get software to do these calculations and generate Schedule D's?

    GainsKeeper: Handles the simple stuff. Does NOT support wash sale determination when it involves the combination of stock and options: "GainsKeeper does not adjust for wash sales across long and short holdings. Nor will GainsKeeper generate a wash sale if you sell an equity at a loss, and then open a call option for the same equity within the wash sale window." GainsKeeper is a web application with an online interface that can electronically aggregate your data from any number of brokerages you may have. It has a 30-day free trial.

    TradeLog: Handles the complex stuff. DOES support wash sale determination when it involves the combination of stock and options. It also handles rules regarding puts, shorts, etc. It is said that TradeLog applies the most stringent rules so as to catch any possible condition of a wash sale. So if you want to be safe, use TradeLog. This is a downloadable application and also supports download of data from any number of brokerages you may have. It has a free trial as well (see the right most bar on the that page).

    Offwall.com: This is a FREE online calculator. It seems very sophisticated and boasts 6 configurations for calculations. These configurations depend on the complexity of your situation. Configuration 6 is the catch all and, some say, is the configuration that TradeLog uses. To use the calculator you must register. Once registered, you can upload your information.

    All of these solutions generate Schedule D's. However, Offwall.com is the only one that will do it for free. So what kind of pinch are you in?

    By the way, does Turbo Tax Premiere adequately determine wash sales? I can't say for certain, but it DOES use GainsKeeper. And we know from the GainsKeeper website that GainsKeeper does NOT handle the more complex wash sale triggers.....

    I hope this helps! Ganbare!

    Other links:

    Tuesday, March 18, 2008

    Bear Stearns for $2 may not hold?

    In my previous post I asked the question, how is Bear Stearns trading above $2 when the deal on the table is for $2 a share. SmartMoney has an article that brings some light to the situation. Obviously this offer is just cold to the bone! There is much more behind the scenes concerning why, especially regarding the repercussions of the alternative - bankruptcy. Anyway, the shareholders who are getting the major screw are not happy and it sounds like they will fight this price. Since the process of closing the deal could drag on for 12 months, the likelihood of forcing the offer to increase may be pretty good, especially since JP Morgan is guaranteeing all of Bear's trading activity within the firm for the entire period the deal is being negotiated. What does this mean? Well, it means that Bear Stearns can still do business! That is if other investment houses trust JP Morgan's guarantee and continue to trade with Bear (note that it was the pulling out action of counterparties last week that also hurt Bear, further deterioting confidence in the firm). So, if Bear can still operate, there is a possibility it can fix its financial situation, get back to stability, and maybe even start tearing a new path on the street. In that event, Bear would be worth more. It's now trading at $6.80. Those who bought yesterday have doubled!

    Monday, March 17, 2008

    Talk about a swing!

    Early this morning I noticed, on my Google Sidebar, that premarket trading indicated stocks were about to get hit... BIG time. I wondered, "Whoa! What could be going on to elicit such a reaction!?" So I whipped open Google Finance and behold the word was in, JPMorgan Chase is buying Bear Stearns for $2 a share. WHAT!? Yes people, JPMorgan somehow put together a deal to buy one of the top tier Investment Banks in the country for ONLY $2 a share! Needless to say, the stock price of Bear plummeted to $3 and change for an 80-90% drop in price after Friday's close. If that wasn't bad enough, note that this stock was trading in the $60 - $70 range last Monday... exactly one week ago. It dropped to the upper $20s and low $30s last Friday. And again, I tell you, it's now at $3 and change.

    JPMorgan Chase pretty much scored the deal of the year, that is if it can weather the financial difficulties Bear is fighting off to make it worthwhile. Much of the plunge in the stock during last week seemed to be due to rumors that lead people to head for the hills, at least according to Bear CEO Alan D. Schwartz. Check out this BBC article for more detail. Nevertheless, the price dove and the Fed was not having it. Both the Fed and JPM stepped to the plate.

    Here are some questions. If JPMorgan Chase is buying Bear Stearns for $2 a share, how is Bear's stock trading above $2? Is this a short arbitrage opportunity? And what about the larger more looming question of, how in the WORLD does a top tier company like Bear go from a 52-week high of $158.36 to $3 and change? And especially since about half of that happened in 7 days! But wait, check this... what's even scarier is that apparently the way in which the Fed stepped in to help Bear is reminiscent of the ways in which the Fed stepped in to help organizations during the Great Depression.... that is according to this article from Reuters. Resorting to measures that haven't been used since the Great Depression..... WHOA!

    There are tons of articles on the web about this incident. Do a Google search; there will be no lack of its abundance. Just watch out for the people trying to spin this out of control crying doom and gloom. Yes, it's alarming. What should you do? Be careful out there. More importantly, stomp out the Greed bug. The market is tremendously volatile right now. If you are trading, get in and get out. Be happy with any profit you make. Those of you trusting your 401K retirement funds to some mutual fund manager.... you better pay attention to what's going on. There is no such thing as a free lunch and there is no genie out there. Bear is 77% institution owned according to Google Finance. That means a lot of the big boys hold this stock, including without question SEVERAL mutual funds. And nearly all 401Ks invest in mutual funds. I mean come on, who would expect a top tier Investment Bank to suddenly plunge.... Be careful out there.

    Oh, and for you conspiracy theorists.... this article from the Street.com should prove mighty interesting. Somebody made a lot of money....

    Monday, October 08, 2007

    Can We Get Back to Basics?

    There comes a point when people take things way to seriously, introducing wave after wave of complexity where simplicity should be the focus. Moreover, individuals and organizations begin to take the teachings, writings, or advice of someone or some entity and add upon it all KINDS of rules and regulations. Who are they to do such a thing? Especially when these kinds of additions begin to deviate from the core idea, that which is basic, and transform the focus to something altogether antithetical. Let us take, for instance, the current gripe the Church of England has with Insomniac Games/Sony.

    Matt Peckham reports in his blog entry for Game On that the Church of England is calling for the removal of Insomniac's game, Resistance: Fall of Man, from the British Academy of Film and Television Arts' (BAFTA) video game award shortlist. Read Peckham's piece to get a back story, and also checkout this Wikipedia entry for even more background about the game itself and the ensuing real world battle royale between Sony and the Church. In summary though, the controversy is over a major gun battle taking place between human soldiers and the alien invaders inside of a virtual representation of the Manchester Cathedral within the game. The Church is irate about the bloodbath depicted and the desecration that results. I am concerned less with legal and more with something deeper.

    So what does all this have to do with getting back to the basics? Simple, is the Church more concerned with the building itself or the potential destructive power that such a depiction might have on the relationship of a person and his/her God? If it is the former, then the Church itself has a much bigger problem to contend with - has the building become its idol? If it is the latter, then the Church still has a major problem to contend with, just not as big. That problem? Members whose strength of faith rests on a physical inanimate building rather than the level and depth of relationship he or she has with God.

    The question here is motive, plain and simple.

    Jesus Christ laid the smack down on the Pharisees of old who put the law, especially the hundreds of additions to the original Mosaic law, above the only real command of Love. That's right, two laws encompass everything that is everything: Love God with everything you have, and love your neighbor. Where any other law or tradition violates these two, love is the path taken, not the law. Peep Mark 3:1-6 in the Bible to catch a glimpse of this in action.

    Is the Church's motive love or other? Is the building holding a higher place of honor in the Church's minds and hearts than God himself? Has this building become an idol? If the answer to these questions point away from God, then I bet God would rather the building destroyed in reality for this building is causing the people to stumble ( peep Mark 9:42-47 spoken in extreme ). God is concerned more with the relationship people cultivate with Him than with any physical item or organization. Because if that relationship is strong, then that individual will take on the mind and character of God. And when that happens, this individual will have Life in abundance, and will interact with his or her fellow men and women in such ways that will bless all in overflowing capacity. A building cannot teach you that.

    We need to get back to the basics. We need to get back to the core of what Christ taught. If something else takes the place of love, developing a strong relationship with Pops (God), and basing the strength of our faith on that, it must be ousted for it will only lead to our destruction. God is a creator, not a destroyer. So why should we waste our time on things that will only bring us ruin and destruction?

    It is my hope that the Church has already investigated such things and are walking the walk. If the Church's motive is thus pure, and the building is not an idol clouding sound judgment, then I endorse its investigation into the matter at hand. More specifically, I endorse its investigation into the MOTIVE behind Insomniac's inclusion of such a scene.

    If Insomniac's goal was to defame and desecrate the image of the church, and more specifically the being that is God, then I say "bring da ruckus!" That kind of motive is entirely evil, selfish, and destructive and thus deserving of repercussions. It shows no respect. But you know what? If that were the motive, I wouldn't worry much about the come uppins Insomniac/Sony could receive at the hands of men (even though it could be devastating). I'd worry more about the come uppins the decision makers would receive when they face God himself (I would not wish that on anybody!).

    In the end, it is just a building. I mean, the White House was blown up in the movies Independence Day and Transformers, the former in replica reality and the latter with.... I won't say... I don't want to ruin it for those who haven't seen the film. What's important is the motive and the ideas behind these acts, the people they may or may not hurt, and the unforeseen repercussions it, and any reactions, may have on lives going forward.

    No matter what or in whom you believe, spread love people. Spread love.