Monday, April 09, 2012

iPhone 3GS successfully unlocked by authorized AT&T unlock

After reading the anticipated news that AT&T was officially unlocking iPhones starting on April 8th, 2012 I called the customer service number: 800-776-4663 provided my phone number (I am an active customer with AT&T). They confirmed my current iPhone 4 is three months away from becoming eligible for the unlock because it is still within the 2-year contract (even though I have already meet eligibility for an early upgrade), but my old iPhone 3GS which is over 2 years old was eligible. They asked for the phone's IMEI number (available through Settings -> General -> About or by dialing *#06# on your iPhone) then I was asked for an e-mail address. They had me wait on the line to receive a confirmation e-mail which took several minutes. All the e-mail contains is a link to this PDF with instructions for restoring your iPhone from iTunes in order to complete the unlock. They offered to stay on the line while I restored it, but I know it can take close to an hour to backup and do a full restore, so I declined the offer. Even though I was already on iOS 5, apparently you must perform a restore through iTunes to complete the upgrade. You can still backup and restore from iCloud, but the restored should be initiated through iTunes, at least that's the official word. At the end of the restore, this is what you want to see:

Monday, March 19, 2012

Finding your inner power song

For many years I've run listening to music. I had running playlists that I used over and over again. I even had certain 'power songs' timed so that they would play halfway and towards the end of my 5K runs. I felt I had to run with my headphones on to get that extra burst of motivation when running out of fuel.
I had noticed in the information booklets for some races that they 'discouraged' the use of headphones and thought that was pointless to ask since so many runners run listening to music.

Then one day something incredible happened that made me stop running with headphones on. It happened while running the 2011 Pittsburgh Half Marathon. At the beginning of the race it was mildly raining, more like a breeze that actually made it very refreshing to run. The combination of sweat and breeze made my headphones malfunction, which were obviously not sweat proof. I was tracking my run with the Nike+ application and this malfunction was causing my phone to constantly pause. After several restarts I got so annoyed that I just took my headphones off and continued running. I am really glad this happened, especially since this was my first time running a half marathon.

Up until that day, I had participated in may local 5Ks and 10Ks: the Race for the Cure, the Great Race, the Father's Day race and the Race for Virginia. Every time I had run in these events I was amazed as to how many runners and people in the sidelines would cheer for you and I felt very motivated when local bands played live music in some of these races, but I had never experienced anything like a Marathon crowd. Even though I was running only half marathon, in the Pittsburgh Marathon like in many others, the half marathon runners start with the full marathon runners, so for the first half you're the same pack and the finish line it's the same for all, so nobody cares if you're running half or full, everyone cheers equally for you. It was truly one of the best experiences in my life. Danny Dreyer could not have described it better on his Chi Marathon book: "Like an art museum or a symphony, a marathon is a great place to go when you want to feel good about the potential of the human race. Whether you cheer a friend on from the sidelines, volunteer at an aid station, or run the event yourself, you get to witness and experience a side of humankind that is both elemental and exalted".

This malfunction could have not happened at a better time. After I took my headphones off, I realized I was missing out on half the fun and the experience. Ever since then, I have run without music and I've enjoyed running much more, especially when running outdoors. It has also allowed me to improved my body awareness which is extremely important to avoid injuries. I'm not opposed to running with music on, for a long time I felt they were complementary and if it helps make your run more enjoyable, by all means continue to do it. But I also urge you to give it a try just once, run without headphones, especially when running a race, you will not regret it and it may help you find your 'inner power song'.

Friday, January 27, 2012

How to get 100% Dragon Total Destruction in Angry Birds Year of the Dragon

The latest release from Angry Birds Seasons 2012 includes the 'Year of the Dragon' levels. The 'Year of the Dragon' introduces a Dragon that works similar to the Mighty Eagle, except that this is free (already included in the purchase price). I have not tried the Mighty Eagle yet, so I can't tell exactly what the differences are.

The dragon appears by clicking the icon next to the pause button on the top left corner of the screen. What you throw looks like a red fish that makes the dragon appear. The dragon will cause massive destruction and it varies based on the location where you drop it. The more destruction, the higher dragon score you get. If you get a 100% score, you get a 'Total Destruction' fish.




I was trying to figure out a way to consistently get 100% dragon score in all levels. I could not find a general rule that will get you a 100%, but in general here are some tips that worked for me:
  1. The more you destroy with the dragon, the higher score you will get. This means in general the best place to drop the fish will be somewhere in the middle, usually in the bottom next to the most artifacts in the level.
  2. You don't have to destroy absolutely everything, but most everything in the level.
  3. It helps to throw a few birds before throwing the fish, but I was also able to achieve 100% score by throwing the fish first without throwing any birds.
What do you get for achieving Dragon Total Destruction in all levels? Nothing, absolutely nothing, other than personal satisfaction, of course.


Monday, January 16, 2012

My training schedule for the Pittsburgh Marathon 2012

There are 16 weeks remaining for the Pittsburgh Marathon. If you haven't started training, now it's a good time to start. I am using a program from 'The Non-Runner's Marathon Trainer', even though I run regularly, this is my first marathon and this training program is very conservative. The program trains you to finish the marathon with no specific pace goal. My goal is exactly that, to finish the marathon without a target time. My only pace goal is to adhere to the mile markers for this marathon which I believe require you finishing the marathon within 6 hours. This training program has you running 4 days per week, with one long run per week.


Since I have already started training at 40 km/week since January, my plan is to exceed the weekly goals for the first 7 weeks and start adhering to the program on week 6.The biggest challenge for me will be the long runs since the farthest I've ever ran is 21.5km. This is my first marathon attempt so it is the first time I'm using this program, I can't vouch for it yet. What do you think of it? Any suggestions?

Wednesday, January 11, 2012

Warning: if you read this book, you will not be able to stop running


For the past few years, I've been a regular '3 mile' runner. Since 2003 I have regularly participated in 2 to 4 local 5k races throughout the year and train in between races by running 3 miles about 3 times a week on average. I'm not a fast runner by any means, my average pace is around 6 min per km (10 mins per mile) and I was not a long distance runner. I ran my first 10k race time in 2004. I tried again in 2005 and even though I was able to finish, I had a pulled muscle injury that took me several weeks to recover. I attributed my injury to being overweight. At 200lb I am more than 30% above my ideal weight. After that injury, I decided to stick to 5k runs until I could lose some weight. In 2010 I had only managed to lose a few pounds, but I decided to try running 10k again and I was able to finish without any injuries again.

Then in 2011 I had a major breakthrough. Early in January I read Born to run by Chris McDougall. Even before midway through the book my running improved significantly. I discovered that even though my weight was a limiting factor, my running form had an even bigger limiting impact.

Before reading this book, I had never paid attention to my running form. I did not even know I was a heel striker. When I was in high school I was on the track and field team and I was taught techniques to run fast, essentially how to do 'power running', but I was never taught techniques to run long distances. After reading 'Born to run', I tried changing my stride to a forefoot strike and slightly bending my knees while running. I was surprised at the results. I was not only able to run longer distances, but also able to run frequently without feeling injured.

I also learned that the high heel on typical running shoes was encouraging me to land more on my heel which was likely the source of most of my injuries. I found a pair of Nike Free 3.0 on sale and gave them a try and absolutely loved them.

Unfortunately Nike hasn't learned their lesson and the latest Nike Free Run+ 2 shoes have a really thick heel. I also tried the Vibram FiveFingers Bikila. Those require more time getting used to. At first, I did not think I would be able to run over 5k, now I can comfortably run distances under 10k and I loved them. I feel it strengthen my foot muscles, but I still prefer the Nike Free for longer distances so I keep alternating between them.
Within 4 months after starting reading the book my improvement was remarkable, I had ran a cumulative of over 500km and my longest distance went from 10km to close to 20km. I was ready to run my first half marathon which I did on May 15, 2011 in Pittsburgh.
I didn't expect to be able to maintain my average pace throughout the run, but I did and I probably pushed myself a bit hard since I did have a injury on my right foot which took a couple weeks to recover from. But despite this I really enjoyed the experience and by the end of 2011 I had ran 1,670km which is twice as much what I ran on 2010. I am currently registered and training to run my first marathon in 2012. Happy running everyone!

Tuesday, December 20, 2011

Turn your camera into a wifi enabled camera with an Eye-Fi X2 card

The Eye-Fi card is nothing more than a SDHC card with an embedded wifi chip. When the Eye-Fi cards were originally released you could only transfer if you were at home and had your network setup, or by using certain hotspots (only the first year is free). The eye-fi X2 series added a very convenient feature: direct mode. This mode, in combination with an iPhone/iPad or Android application make it very convenient to transfer photos taken from your digital camera and transfer them to your phone from anywhere without the need to use a 3G or wifi connection.

The direct mode uses an ad-hoc network mode which to the phone looks as any other wifi network protected by a WEP key. Aside from a one-time setup to register the card, the transfer process is very seamless. At the time I setup my card I had to install the software on my PC. I'm not sure if you can now do all the setup from http://center.eye.fi/

What's even better is that now there is a wide selection of eye-fi connected cameras. I own a Canon PowerShot ELPH 300 HS, which by the way is a really great point-and-shoot camera. The 300 HS is one of the connected cameras. This means you get an extra menu for 'Eye-Fi Settings' when you're using the eye-fi card. This allows you to disable the wifi feature of the SD card when you don't need to use it.


You will need to recharge your camera's battery more frequently when using the Eye-Fi card. Every time the camera is powered (and there are pictures on the card) it will broadcast a wifi signal for 30 seconds (you can configure it to longer time using their software). The wifi broadcast goes off after a configurable period of time of no activity. When using a connected camera an icon will indicate if the wifi is on:



Another feature that you get with connected cameras is that it will display an icon once a picture has been transferred:


To connect your to your Eye-Fi card using the iPhone application simply power up your camera and connect as you would to any other wifi network. A wifi network that begins with 'Eye-Fi Card' will show up in your available networks. It is protected by a password and unfortunately the only way I know of retrieving the key is using the Eye-Fi center software.


Launch the Eye-Fi Application and you will see the pictures being transferred right away. This application can run in the background so as long as the camera is on and connected via wifi, it will continue transferring in the background. The application has improved a lot since the original version, it now provides more feedback as to what it is doing and the transfer is more reliable.


There are more and more wifi enabled cameras in the market and they are becoming more affordable, but they don't provide the breadth of features available through smartphone applications. Cellphone cameras are also slowly becoming better, however they still lack in zoom, focus, motion and low light performance. If you already have a good point-and-shoot or DSLR camera, this is a convenient and affordable way to transfer your photos into your smartphone when you're on the go. The Eye-Fi Connect X2 4GB retails for only $29.99.


Friday, November 18, 2011

Nest Learning Thermostat unboxing, installation and setup

Got my Nest thermostat installed. It is really an amazing product.


Installation-wise, it is pretty straight forward except for getting the anchors into my drywall. There were two problems: the holes from my old thermostat were around the same location which meant I had to reuse them; and there was a piece of metal (presumably the metal box) on the inside which was probably less than an inch deep, so I had to shorten the anchors provided:

Once I got the anchors into the wall, installation was a 5 minute job:

How cool is this?

It is wifi enabled and it has a trackwheel interface (coincidence Tony Fadell?)


It is a pretty cool product. It will definitely pay for itself on energy savings. You can see more pictures here: http://t.co/Xw5AxHcK

Tuesday, August 24, 2010

Enabling Broadcom USH Fingerprint reader on Windows 7 64-bit for DELL Latitude E6500

I recently upgraded my Latitude E6500 from XP to Windows 7 Professional 64-bit. One of the 2 drivers that was not recognized out of the box was the one for the fingerprint sensor.

My first stop was obviously the Dell Latitude E6500 Drivers and Download page from DELL Suport, selecting Windows 7 64-Bit as the Operating System:

I tried with and without my Service Tag. After googling for a while, I found out that the driver is included in the "Dell Security Device Driver Installation Package for 64-Bit Operating Systems". It was hard to find a link to download the latest version of this pack which was compatible with the Latitude E6500 and Windows 7 64-bit, but I finally found it here.

The latest version as of 8/24/2010 was version 1.4.056, A18 released 6/28/2010 and the downloaded file name was: Dell_ControlPoint-Security-D_A18_R269916

You will need to download and install the Dell ControlPoint Security Manager, which includes the EMBASSY Security Center required to use the fingerprint sensor to log into Windows. That too was difficult to find

Latest version as of today was version 1.4.00004, A18 released 7/28/2010 and dowloaded file name: DELL_CONTROLPOINT-SECURITY-M_A18_R276445.exe

You may also want to update the ControlVault firmware (the installer recommends it). I did it just to be safe, though I'm not sure if it was really required. Latest version: 14.x.132.0, A17 released on 5/3/2010

I'm not really sure why these versions and not listed on the Window 7 64-Bit drivers page for E6500, but it sure took me a while to find them on the DELL Support site. I was ready to give up on the fingerprint reader, but I can now confirm that it works prefectly using Windows 7 64-Bit on my Latitude E6500!

Friday, May 07, 2010

Blockbuster and Netflix queue availability comparison

It's been over 3 months when I reactivated my blockbuter.com subscription and kept my 1-DVD netflix subscription to keep the online streaming option. I'm really glad I did this. After the delay of WB movies, Netflix introduced the same 4 week delay for Century Fox and Universal Studios movies. Redbox also agreed to the same delay, so if you wanted to rent Avatar on April 22nd the only option available to rent from was blockbuster.

Thanks to my dual subscription, I'm able to provide you with a side by side comparison of availability for 10 popular releases. Four of these titles (Avatar, Leap Year, It's Complicated and Crazy Heart) are not yet available in Netflix due to the 4-week delay. Netflix CEO claimed that one of the benefits for the delay to customers was to have more copies available on day 29: "The most practical reason is that the savings derived from this deal enable us to be in stock completely on day 29", well Sherlock Holmes was released on 3/30 on Blockbuster and was not available on Netflix on 4/27, ironically it has a long wait on Netflix while it is available on Blockuster, makes you wonder.


Friday, February 05, 2010

Blockbuster vs Netflix DVD subscription comparison

I recently switched from Blockbuster to Netflix DVD subscription because new release DVDs were taking 2-3 days to ship in some cases, but I'm finding out that Netflix is even worse. I have a 2 DVD subscription with Netflix. Netflix received DVD #1 on 1/31 and DVD #2 on 2/2. I have not had any DVDs shipped this week at all. Today (2/5), I called customer service and they said they will not be shipping any of the DVDs on my queue for this weekend because those titles have not been returned by other customers, so in summary I had no DVDs shipped in one full week. Here is what my DVD queue looks like:

  1. Movie 1: Very Long Wait (Released on 1/19/10)
  2. Movie 2: Very Long Wait (Released on 2/3/20)
  3. Movie 3: Short Wait (Released 12/22/09)
  4. Movie 4: Very Long Wait (Released on 2/12/10)

With the exception of "Movie 2" I've had these movies on my DVD queue for at least a week. One of these titles was released over a month ago. Shouldn't Netflix stock more copies of unavailable movies? I know that will erode profits, but if this is a common trend for most customers they are risking losing customers which will also eventually hurt profits. To make matters worse they recently introduced a 4 week delay for Warner Bros movies. Not to mention that they charge ($2-$4/mo) extra to get blu-rays. The only reason why I'm keeping their subscription is because of their streaming option, which is great, I have a Roku player and love it. In terms of DVD subscription I'm reactivating my plan with Blockbuster which seems to be better in terms of availability, not charging extra for blu-rays and no 4-week delay for new Warner Bros releases (so far).

Wednesday, August 19, 2009

Blockbuster shipped "Sunshine Cleaning" DVD a week early!


The DVD does not come out until 8/25, and I got it on the mail today (8/19)... sweet! Is this common? It is a certainly a first for me... off to watch it now!

Saturday, May 10, 2008

Sony outlet store at Grove City outlet closing

Everything is 30% off (excepte marked down items which are just a few). They're closing on May 16th. All the HDTV are sold out, no PS3s are left either. Some items worth left are: digital cameras, camcorders and laptops. They have mostly refurbished items, but several factory new items as well.

Monday, April 07, 2008

If you have an iPod nano and enjoy jogging...

I strongly recommend getting the Nike+ add-on. You don't even need to buy a Nike+ shoe, you can get a pouch bag and use it in your favorite running shoes!

Friday, February 29, 2008

Upcoming talk on Spring .NET

March 11th, 2008 at the PGH .NET User's group meeting:
http://www.pghdotnet.org/Events/448.aspx

...and in case you miss it we'll do it again on the Pittsburgh .NET Code Camp on April 12nd, 2008:
http://www.pghdotnet.org/CodeCamp/

Wednesday, December 12, 2007

How to fix iPhone speaker problem

BEGIN UPDATE (5/14/08). This solution worked for me for at least 2 months, since then I've had at least 4 reocurrences, all of which were fixed just by reinserting the earphone repeatedly, except for the last instance, I had to clean the earjack and seems back to normal
END UPDATE

One day I got a call on my iPhone and I was not able to hear any audio. After a while I figured out I could still hear audio if I put it in speakerphone mode. Next I realized that the play icon was showing up with no audio. I tried pausing/playing music and I could no hear any audio at all. After doing some research on Google I found out this was a very common problem on the iPhone, and unfortunately it appears to be a problem on the hardware and not on the software.

The iPhone has a mechanism to detect when you unplug the headset, apparently this mechanism can fail sometimes due if debris gets in the headset jack. This is why you can't hear any audio, because it thinks you have a headset plugged in and continues to route all audio to the headset output. There are several workarounds published out there, some very creative that suggest using a damped q-tip. But the one solution that worked for me was plugging and unplugging the headset several times until it gets back into the correct state. However this solution was only temporary for me, eventually the iPhone would get into that same state. Because I connect the iPhone on the aux port of my car stereo I had to check every time I left my car to make sure I would be able to use my phone throughout the day!

This became very annoying, so I called Apple Support (1-800-MY-IPHONE) and the workaround they had me try was to plug and unplug my headphones 5 consecutive times as fast as I could. The problem was fixed immediately, but I was very skeptical this would be a long term solution. So I continued verifying that the phone was in the correct state everytime I unplugged the headset. To my surprise this problem hasn't reocurred since then and it's been over 4 weeks and I plug/unplug it at least twice a day, so it seems in my case this problem was indeed caused by a debris and not a permanent hardware problem, which is a relief. So there you have it: the official recommendation from Apple support if you want to give it a shot.

Thursday, December 06, 2007

iPhone update 1.1.2: the fastest and most stable version to date!


Apple has been very vague as to what is included in the iPhone updates, in particular with regards to the 1.1.2 update: "...new features and bug fixes..." leaving many users -primarily jailbroken/unlocked iphone users- wondering if it is worth updating just for the sake of updating. Although it is not officially stated, apparently the iPhone CPU clock speed was boosted with this update. As soon as I installed the update, I noticed that applications loaded faster and in particular web pages loaded much faster in Safari. Using sysinfo several users have been able to confirm this. The CPU frequency was 400 MHz while the bus frequency was 100 MHz in the iPhone 1.1.1 firmware. The iPhone 1.1.2 now shows a CPU frequency of 412 MHz and a bus frequency of 103 MHz. If that is not enough to convince you to upgrade I also noticed that this update makes the iPhone, in particular Safari more stable. Safari would crash for me about once a day in the earlier version, it hasn't crashed so far for me.


Sunday, March 26, 2006

DragDropList changes in the ATLAS March CTP release

As many of you know the ATLAS March CTP release is out as of last week. I recently downloaded it and found out that some of my samples broke. Specifically the customization of the DragDropList I had made to add support for a dragged and dropped events.

I have posted an updated version of my CustomDragDropList class that works with the March CTP release. I primarily took the source code from this release and added my customizations. The only additional change I had to make was to rename any references to the Web.UI namespace to Sys.UI instead.

Additionally I had to remove the "templateLayout" XML-Script element from the "dropCueTemplate" element, apparently that is no longer necessary and leaving it breaks the code. A sample usage of my CustomDragDropList should looks like this:

<control id="queueList">
 <behaviors>
  <customDragDropList dataType="HTML" acceptedDataTypes="'HTML'" dragMode="Move" removed="itemAdded" added="itemRemoved" >
   <dropCueTemplate />
  </customDragDropList>
 </behaviors>
</control>

Monday, February 20, 2006

Creating a custom server control for ATLAS

When working with drag and drop lists in Atlas one task that you'll find yourself doing over and over again is adding the draggableListItem behavior to the controls that you wish to make "draggable" in your page's XML-Script. In many cases you may want to dynamically generate these controls with server side code based on results from a database query, for instance. For this reason, I thought it would make sense to build a custom web control to achieve this goal.

Rather than starting from scratch, I chose to start my control inheriting from the Panel control. This allows you to add any arbitrary content to the "draggable" item control, as it is translated to a span tag in HTML. In order to make the control "ATLAS-enabled" you need to implement the IScriptControl interface. The control's class declaration should be something similar to this:

public class DraggablePanel : System.Web.UI.WebControls.Panel, IScriptControl

Next you need to make sure to get a reference of the page's ScriptManager and register the control, and optionally you may want to add a reference to the AtlasUIDragDrop library to save you from doing that in the main page:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!DesignMode)
{
ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
if (scriptManager != null)
{
scriptManager.RegisterControl(this);
scriptManager.RegisterScriptReference(
FrameworkScript.AtlasUIDragDrop);
}
}
}


Next, the only method from the IScriptControl interface that must be implemented is the RenderScript method. The goal of the custom control is to output the following XML-Script:
<control id="webPart1">
<behaviors>
<draggablelistitem handle="webPart1Title">
</behaviors>
</control>

The RenderScript implementation will output the XML-Script above, using the control's id and the panel control's id as the handle:

public void RenderScript(ScriptTextWriter writer)
{
//Outputs control tag
GenericScriptComponent gsc = new GenericScriptComponent(
new ScriptTypeDescriptor("control",
ScriptNamespace.Default));
//Outputs behaviors tag
gsc.ID = this.ClientID;
GenericScriptComponent draggableBehavior =
new GenericScriptComponent(
new ScriptTypeDescriptor("draggableListItem",
ScriptNamespace.Default));
draggableBehavior.AddValueProperty("handle", this.ClientID);
gsc.AddCollectionItem("behaviors", draggableBehavior);
((IScriptObject)gsc).RenderScript(writer);
}

Tuesday, February 14, 2006

Upcoming talk on AJAX/ATLAS

I will be showcasing some ATLAS demos at the next Pittsburgh's .NET User Group meeting on Wednesday, Feb 22nd:
http://www.pghdotnet.org/Events/258.aspx

Monday, January 30, 2006

How to create drag and drop lists using ATLAS

One of the biggest reasons why ATLAS is so great is because of the set of rich client-side controls it includes, such as draggable lists. Before ATLAS, I had to rely on libraries such as script.aculo.us and tool-man.org, both of these great libraries, but they require additional effort to integrate them into you ASP .NET web application. With ATLAS that is no longer the case.

To give you an idea of the great drag and drop capabilities built-in to ATLAS, I recommend taking a look at samples from Wilco Bauwer. The generic steps required to build your own draggable list are as follows:

Choose a HTML control that will contain your "draggable" items and add and as many "dragabble" items to it. In this example I'm using a div element with id "draggablePanel":


<div id="draggableContainer">
<div id="draggableItem1">My draggable item 1</div>
<div id="draggableItem2">My draggable item 2</div>
</div>

Next you need to add the dragDropList behavior to each draggable item and to the "draggable container" inside the XML script element of the page, without forgetting to add a reference to the AtlasUIDragDrop library:


<page 
xmlns:script="http://schemas.microsoft.com/xml-script/2005">
<references>
<add
src="ScriptLibrary/Atlas/Debug/AtlasUIDragDrop.js" />
</references>
<components>
<control id="draggableContainer">
<behaviors>
<dragDropList dataType="HTML"
acceptedDataTypes="'HTML'" dragMode="Move">
<dropCueTemplate>
<template layoutElement="dropCueTemplate" />
</dropCueTemplate>
</dragDropList>
</behaviors>
</control>
<control id="draggableItem1">
<behaviors>
<draggableListItem handle="draggableItem1" />
</behaviors>
</control>
<control id="draggableItem2">
<behaviors>
<draggableListItem handle="draggableItem2" />
</behaviors>
</control>



That's it! Can't get any easier than this, right?