Back in My Day…

I had to pay one of my contractors in Canada today which he specifically requested as a check. Since I can’t do online Bill-Pay to non-USA addresses and I don’t own a pen, envelope or stamp I had to physically go to my bank during business hours, stand in line for a check then go to my local USPS store to stand in an obscenely long line to get it mailed out. He’ll get it in around a week and another couple business days for the banks to clear it. It’ll be a great story to tell future generations about what it was like in my day.

End of an Era

Today marks the day I am no longer an iPhone user or supporter. As a long time iPhone user and developer, I’ve generally had a great experience and have been very happy with it. Their design and user experience philosophy was unmatched in the past. Due to recent programming projects, I have seen the side of Apple which not many see or even realize. Apple actively stifles and discourages innovation in their App Store which they have ultimate control and power over. What this means for iPhone users is that you do not own your phone, Apple does. They dictate what you can and cannot do on it based on their whims. A developer’s hard work is cast aside and rejected from the App Store after being “in review” for almost 2 months with little to no explanation. Updates and changes to an app takes a minimum of a week to be approved, that is if they don’t reject it based on a vague set of guidelines over four thousand words long. This is the kiss of death to innovation. Apple iPhone will be left behind.

I bought my first Android today. Let’s keep pushing the world forward.

ZeroBlock Launched

After a few months of hard work I’m proud to show off my latest personal iOS app ZeroBlock. I’ve been following Bitcoins for quite a while now and if you haven’t noticed there are a lot of terribly written bitcoin apps out there. I want to bring a clean, beautiful and functionally rich app to Bitcoin enthusiasts everywhere. Check it out:

Current Features:

- News Aggregator
- Market data updates instantly
- Blockchain data
- Push notifications for price
- Clark Moody charts
- Personal holdings calculator
- Share stories via Facebook, Twitter and email

Obj-C NSObject Mapping Category

I decided to complete my previous blog post into drag-and-droppable code. Simply import my NSObject category NSObject+KJSerializer and you’ll never need to manually object map again.

// NSObject to NSDictionary
NSDictionary * dictionary = [YourObject getDictionary];

// Convert to JSON or whatever
// Receive JSON and convert to NSDictionary

// NSDictionary to NSObject
[YourObject setDictionary:dictionary];

Check out the code:

Obj-C Object Mapping

Just recently found this gem that significantly improves my life as an iOS developer. If you ever find yourself manually mapping a JSON NSDictionary to an NSObject try this:

[userDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
    // Add a try/catch to skip any keys that don't match the NSObject
    @try {
        [myObject setValue:obj forKey:(NSString *)key];
    @catch (NSException *exception) {
        // Ignore

Carbon Fiber Frame

This is about a year late but I’m posting it anyways. I bought a cheap carbon fiber frame for the quad copter for one last hoorah. It still needed some serious calibration and it wasn’t very stable. I decided to scrap it until I get the motivation to pick it up again. Until then, RIP quad.

Need a New Frame

I finally got the quad off the ground after shorting and repairing 2 speed controllers. I did have one incident though when I was trying to calibrate the rotors and didn’t realize how sharp the plastic blades were. I now have a nice scar on my hand. Unfortuantly I didn’t put enough time into calibrating it and the flight was short lived. Check out the video:

The cheap wood frame fully broke after the second flight. I need a good carbon fiber frame.

Some things I should have done:

  • Balanced the props
  • Glued the cheap wood frame to be a little stronger
  • More screws holding the motors to the frame (I think there was some vibration)
  • Controlled test flights until it was fully calibrated

Here was the latest HobbyKing parts list:

Code            Description                                     Quantity
TX-9X-M1        Turnigy 9X 9Ch Transmitter w/ Module & 8ch R    1
Quadcopter      HobbyKing Quadcopter Frame V1                   1
T2200.3S.30     Turnigy 2200mAh 3S 30C Lipo Pack                1
QUAD-CON16K     HobbyKing Multi-Rotor Control Board V2.1 (At    1
KDA20-22L       hacker Style Brushless Outrunner 20-22L         5
HK-SS20A        Hobbyking SS Series 18-20A ESC                  8

317MPRPSVR      3.17mm Prop Saver w/ Adapter & 3 bands          2
XT60            Nylon XT60 Connectors Male/Female (5 pairs)     2
601B-12-10cm    XT60 Female w/ 12AWG Silicon Wire 10cm (5pcs    2
601A-12-10cm    XT60 Male w/ 12AWG Silicon Wire 10cm (5pcs/b    1
ACC6            Turnigy Accucel-6 50W 6A Balancer/Charger w/    1
HS -250C        Cable Ties HS4.8x250mm 100pc (Natural White)    1
OR017-01005-M3  Hex locknuts M3 10pc                            3
R12A1062-06     Turnigy Pure-Silicone Wire 12AWG (1mtr) RED     1
B12A1062-06     Turnigy Pure-Silicone Wire 12AWG (1mtr) BLAC    1
WHS-5MM-RED     Turnigy 5mm Heat Shrink Tube - RED (1           1
WH-5MM-BLACK    Turnigy 5mm Heat Shrink Tube - BLACK (1mtr)     1
WH-6MM-BLACK    Turnigy 6mm Heat Shrink Tube - BLACK (1mtr)     1
WHS-6MM-RED     Turnigy 6mm Heat Shrink Tube - RED (1           1
258000012       20CM Male to Male Servo Lead (JR) 26AWG (10p    1
HA0509          Hex Screw M3x10 (20pcs)                         1
HS -160A        Cable Ties HS2.5x60mm 100pc (Natural White)     1

Propellers at
LP10047SFP      10x4.7SFP                                       8
LP10047SF       10x4.7SF                                        8


Been wanting to build one of these for a while now. Its actually the reason I bought the BeagleBoard-xM to write a custom quadcopter controller which I still hope to pursue in the future:


It took a few hours to solder the motor cables to the bullet connectors and then to the Electronic Speed Controllers (ESC).

I used the ‘Western Union’ soldering style to make the 12 gauge power harness.

I’m initially using a super cheap KK Control Board knock-off called the HobbyKing Multi-Rotor Control Board V2.1 just to get it up in the air before spending more.

Still needs some configuring but I’m looking forward to flying it

New Camera

I picked up a Canon EOS Rebel T2i. Its a lot of bang for your buck. I shot these unmodified pictures using the standard kit lens, 100 ISO, tripod, and a long exposure

IMG_1245_small IMG_1239_small IMG_1221_small

BlackJack II Phone Finder

A couple years ago I wrote a fun program for my BlackJack II phone. I was really interested in the phones built-in GPS and wanted to play around with it by making a program that would intercept received SMS text messages that contained a special keyword, turn on its GPS and respond back with an SMS text containing its coordinates.

Two and a half weeks later I hacked together something that works. The program runs completely in the background on the phone and doesn’t display or inbox the received SMS text messages containing the key. In order to use the GPS hardware on the phone I did have to install MoDaCo’s GPS Hack.

An example situation would be I would send the following SMS message from a different phone to my phone:

1234 gps

My program would intercept that message since it contained the key, read the keyword “gps”, attempt to retrieve its location and send back to the original sender the message:,-96.964706 Alt126.00 Speed33.3 Heading85.40 H-Quality2.7 V-Quality1.4 Satel6

It shows its speed, direction, altitude, quality and satellite count of the GPS coordinate read.

To enable/disable and change the special key (In this case “1234″) the user runs the SMSIntercepterSettings exe which brings up the screen:

BlackJack II Phone Finder

I also added a few extra features to the program:

  • alert – Plays audio file and displays a “lost phone” message on the phone
  • status – Sends back SMS with current battery and signal reception info
  • callmeback – Calls back the senders phone number
  • restart – Restarts Phone

Check out the code on my GitHub (Still needs some cleanup)