Monday, November 28, 2011

MatchingDonors.com Public Service Announcement

Some of you know that I've had a kidney transplant. What most may not know is that I was very fortunate to have met my donor through a non-profit website called MatchingDonors.com.

I recently had a chance to meet and thank the team there and am really impressed with their time, energy and devotion to the cause of helping people out.

For example, here is a video by Rob Micai, a very talented Producer/Director from Florida. He created this in his own time as part of a nation-wide competition and I'm just blown away.




Dear Damon,

Hope as is well. Matchingdonors.com officially has a professionally produced Television PSA! Our team is hoping that you could help us out by sending the email below to any local TV stations or websites, so we can help get the word out. We always appreciate the help we get from our Patients and Donors.

In collaboration with a number of Departments of Health Officials, MatchingDonors.com, being a 501c3 nonprofit organization and the world’s largest online living donor company, has launched a public education campaign throughout the United States to help people recognize that they can be a living organ donor and to encourage them to register as a living organ donor.

As part of this national effort, we hope that you will consider placing/airing our (PSAs) with your company, and any other company you are associated with.

We have a professionally produced television PSA (public service announcement) that we are asking if you can please show on your network/tv show . Any help your company can provide to Matching Donors will directly impact people in need of transplants and save lives. The PSA can be seen and downloaded at - http://www.matchingdonors.com/life/pdfdocs/PerfectMatch.mov

This video can also be sent to you in any format that you wish. Feel free to contact me directly to get additional formats.

MatchingDonors.com is collaborating with the New York documentary production company Hybrid Films to develop a powerful new reality television series following living kidney donors through the process of finding a match and saving a life.

Producer and Director of this video, Rob Micai, has created memorable commercials for industry leaders: Walt Disney World, Nickelodeon, Chris-Craft, Atlantis and more. He has directed and produced a number of music videos and independent films and has recently formed the Wonderland Creative Group with Producing partner, Wayne Morris. Wonderland Creative Group combines imagination with innovation and quality to tell stories through film and video. To be associated with Matching Donors is an honor and winning the contest is something that Rob is very proud of. "Matching Donors is literally an organization that saves lives. I hope the PSA helps gain awareness for Matching Donors and for those whose lives depend on finding an organ donor." Rob Micai can be contacted at rob@wonderlandcreativegroup.com.

http://www.hollywoodnews.com/2011/11/23/hollywood-gives-back-r-hoilywood-film-awards-and-hollywood-film-festival/

Currently, patients waiting for an organ donation are placed on a national waiting list through the government. A computer system matches patients to donor organs according to objective criteria such as blood and tissue type, immune status, medical urgency and time spent on the waiting list -the average time to receive a deceased organ is 7 to 9 years on this list. This ranking system determines which patients are offered available organs. This process is extremely important in anyone's organ search, but now MatchingDonors.com and the offers a way to enhance the search with a more active approach- the average time a person receives a living organ from MatchingDonors.com is less than 6 months.

Organ failure is rampant in all segments, races and ages across the U.S. We will be running this campaign from November 28, 2011 until May 28, 2012. In May we will contact you with updated PSAs. Also, below are the scripts for the PSAs; if you wish feel free to create your own PSA script as you see fit.

If you need more information about the PSA or our organization please feel free to call me at the telephone number below. If by chance this e-mail was sent to the wrong person to air PSAs could you please forward it to the correct person? If you going to air the PSAs could you please send me an e-mail so we can recognize your station on MatchingDonors.com?

Thank you in advance for your support. Your efforts will directly help us in saving the lives of the millions of Americans who need organ transplants right now and in the future.

Thank you for your support.

Paul Dooley

CEO MatchingDonors.com



Friday, March 11, 2011

Video Tutorial: Setting up Apple Push Notifications (APNs)

We use the Apple Push Notification service (APNs) for many features such as Game Invitations, Game Challenges and Messages.

Unfortunately, Apple requires developers to do a lot of work to enable Push Notifications for each of their games. Here are the steps you have to take in order to get Push Notifications working with Z2Live.

Tools for testing Push Notifications

Before I begin the tutorial, here are some tools to help you (note: these won iPhone Dev Camp 2009):

Creating a Push Notification Certificate



  1. Creating the App ID.
  2. Configuring the App ID for Push Notifications.
  3. Creating a Certificate Request.
  4. Uploading the Certificate Request.
  5. Downloading your Application Push Certificate.
  6. Installing the Certificate into the Keychain.


Setting up an Application for Push Notifications



  1. Creating/Downloading/Installing Provisioning Profile.
  2. Viewing the "aps-environment" entitlement.
  3. Getting the Z2NotifyMe application from GitHub.
  4. Setting up the AppID and Code Signing.
  5. Getting the Device Token.
  6. Getting Z2Notify and setting Push Information.

Exporting your Private Push Certificate




  1. Determining the Right Certificate.
  2. Exporting Private Certificate.
  3. Skipping the "Password for Exporting" dialog box.
  4. Viewing the Private Certificate.


Thursday, November 19, 2009

Xcode: the requested file was not found in any documentation set

After upgrading to the latest Apple SDK, I started getting this error when looking in documentation:
"the requested file was not found in any documentation set"
When I tried to Subscribe to "Apple OS 3.1 Library", I would get an error "Failed to subscribe to documentation feed". The URL was:

http://developer.apple.com/rss/com.apple.adc.documentation.AppleiPhone3_1_2.atom [BAD URL]

Entering this into a browser would yield a 404 error.

At the time of this writing, it looks like there is something wrong with Apple's documentation links.

You can confirm this by going to the Xcode documentation window, right-clicking on the 3.0+ libraries, Get Info, finding the "Feed URL" in the Summary and then entering that in your browser.

This will hopefully be fixed by the time you read this, however, I was getting annoyed by the error so here is how I fixed this:

  • Get "iPhone OS 3.0 library". If you cannot get it, then right-click, view in finder and delete it.
  • Try to Subscribe to "Apple iPhone OS 3.*". If you cannot subscribe, then right-click, view in finder and delete it.

Thursday, August 27, 2009

From Transplant to World Transplant Games 2009

This is my journey from a kidney transplant in August 2008 to competing for Team USA in the World Transplant Games 2009 in Australia.

Wednesday, August 26, 2009

World Transplant Games 2009 in Australia

[I'll update this post with the latest images and videos as I upload them.]

I'm down in the beautiful Gold Coast region of Australia (South of Brisbane) competing in my first World Transplant Games. I am having a wonderful time and, true to the rumors I've heard, the Australian people have been so incredibly nice. I cannot overstate how nice they've been.

My main event was the 5k Time Trial. I put in the 3rd fastest time for Team USA, but unfortunately I wasn't fast enough to get a medal.

It was a very windy day and a record high temperature for Queensland (95 degrees). My average heart rate was 185bpm for the duration of the run which puts my wattage somewhere between 320 and 350.

Here are some pictures:

Coming into the long straight-away



Profile View of my Time Trial Position




Team USA Photo

Monday, June 22, 2009

The first Multiplayer Gaming Platform for the iPhone

My company just announced our product, Z2 Live, the first Multiplayer Gaming Platform for the iPhone.

http://www.z2live.com





If this looks interesting to your game, please sign up for a developer account.

Friday, February 13, 2009

PhotoFeedd Finally Available in iTunes AppStore

My iPhone app just released in the iTunes AppStore.

It is called PhotoFeedd and you can think of it like "Twitter for Photos".

I'll post a video of it soon, but you can download it at:

http://www.feedd.com

There are some screenshots below.

Friday, January 2, 2009

A Win32 Developer's First Impressions of Programming the iPhone

Several friends have recently asked me what it is like to make the jump from programming Microsoft Windows to the Mac iPhone so I thought I'd write up my take.

Here is my other post on Mac and Windows development: http://damondanieli.blogspot.com/2008/08/my-current-development-environments-on.html

Note: I've only been programming Objective-C for two and a half months (as of today) so take this as raw "First Impressions" and not a definitive guide to programming the iPhone.

My Background

I come from a C/C++ background and have been writing Win32 applications since Windows 3.1 days. However, the last time I designed and wrote a Microsoft retail consumer application was a while ago:

Microsoft SideWinder Game Voice
http://www.microsoft.com/presspass/features/2000/aug00/08-24gamevoice.mspx

Game Voice was a niche product, but had good response from the gaming community:

From Penny Arcade:
"[SideWinder Game Voice] being my favorite Microsoft product of all time."
http://www.penny-arcade.com/2005/7/4/

What was fun about working on the SideWinder line of gaming devices is that they were built with a small team of programmers (2-5) where each developer had a massive impact on the product. I can't think of another Microsoft shrink-wrapped retail product which was written by less than a handful of developers.

Objective-C: Very First Impressions of Syntax

I didn't like the syntax of Objective-C at first.

This Objective-C code allocates and initializes an instance of a Topic class, assigns it to a local member called "postTopic" and then sets a flag that this is a personal topic:
Topic *t = [[Topic alloc] init];
self.postTopic = t;
[t release];
self.postTopic.isPersonal = YES;
I was confused by the bracket syntax (when to use brackets vs. when to use dots) and why it was customary to assign an allocated object to a temporary variable, then assign the temporary variable to a member of this instance, then release the temporary? I never liked putting "this" in front of member variables in C++ so why did I have to use the "self" notation when postTopic was clearly a member? And why did Apple use "self" instead of "this" anyway? And why was a boolean "YES" instead of "true" and so on...

Compared to something like this in C++:
postTopic = new Topic();
postTopic.isPersonal = true;
Or C#:
postTopic = new Topic();
postTopic.isPersonal = true;
Or Java:
postTopic = new Topic();
postTopic.isPersonal = true;
It was as if there were two tribes of programmers (C++ versus Objective-C) which evolved from a single tribe (The C Programming Language). Some things looked familiar, and some completely alien.

Objective-C: Second Impressions of Syntax

At first, I felt like I was taking a step backward from modern language such as Java or C# into the hinterland of C pointers, managing memory, and the like. But truth be told, I really like Objective-C now mainly due to the way it integrates with the rest of the framework.

There are a LOT of nice things that the Cocoa framework provides (messaging, run loop, great UI controls, etc) which make the job of writing a good, sophisticated application within the reach of a single programmer.

Setting aside some of the differences of opinion on things like "YES" vs. true and "self" vs. "this" (in other words, how everyone else does it versus how Apple does it), Objective-C makes a lot of sense when you start to use it in context of the iPhone.

Here is code to make a con
nection to a web server which will run asynchronously AND return status and information marshaled onto the UI thread via a delegate (very nice):
NSMutableURLRequest *req = [NSMutableURLRequest
requestWithURL:@"http://www.apple.com"];
NSURLConnection *conn = [[NSURLConnection alloc]
initWithRequest:req
delegate:self];
self.asyncConnection = conn;
[conn release];
The bracket notation allows you to send messages with named parameters to classes or objects which makes it much more clear what the parameters are.

The above code is more explicit than C++, which would be something like:

Connection *conn = new Connection(
"http://www.apple.com",
req,
ConnectionManager::ConnectionStatus,
this);
Also, the delegate parameter in the connection initialization call makes the "C++ callback to a static member of the class which then dereferences the this pointer to call an instance member of that class" syntax much cleaner and standardized across the framework.

There are probably a zillion pros and cons that other developers can cite, but what I liked was that it took away all of the goo associated with marshaling information onto the UI thread if you are on a network thread including automatically adding an "AddRef/Release" to any objects put in the message queue since all objects are derived from the NSObject class (which implements the retain/release methods required by the NSObject protocol).

Compare that to the Win32 pattern of creating a hidden window (then implement a system to allocate and free memory appropriately) to marshal information onto the UI thread from another thread or non-apartment component.

Transitioning to the iPhone

My transition to the iPhone SDK and Objective-C took about a month to "find my ass with both hands". The iPhone SDK has quite a few example programs, but not a comprehensive walk-through tutorial for people who are starting from scratch.

That, and the fact that there were not any books on the market yet on how to program the iPhone meant I had to use a lot of tutorials on the Internet with varying levels of completeness and quality of code.

Summary

So in short, if you come from a C/C++ background with experience in threading and UI development, the tra
nsition should take about a month to become proficient. I'm not the sharpest bulb in the shed so your mileage will probably be better.

If you come from a more modern language background (such as Java or C#), then it will probably a lot longer as you must learn about pointers and pay very careful attention to reference counts on your non-autoreleased objects. Whereas garbage collection take care of that for you in today's languages.

If you come from a web scripting language (Ruby on Rails, PHP, etc), then I have no idea of how long it would take to learn Objective-C. Not impossible, of course, but the ramp up of memory management plus the syntax of the language plus client UI development plus threading plus ... (the list goes on and on) would take some significant learning. If you have gone through this route, contact me and tell me your experience and what helped you learn.

Actual Results

Objective-C, the Apple SDK, Cocoa Touch and support frameworks enabled a single developer experienced with C++ Win32 APIs to go from complete Mac/iPhone/Cocoa novice to submitting
a fairly sophisticated networking application to the Apple iTunes AppStore in a month and a half. I also wrote and deployed a web service written in Ruby on Rails to back the iPhone application in that time, but that is another post on ASP.NET vs. Rails.

Although my first submission is still "In Review" for the AppStore, here are some screen shots of PhotoFeedd, an iPhone a
pplication which allows users to create topics, and everyone can post photos to that topic. BTW, It's free to download and a lot of fun so try it out.



































































Saturday, October 18, 2008

Fun times, Kind of a Blur Now

I think there were a lot of misconceptions about Microsoft from those software developers who are in the ABM (Anything But Microsoft) crowd. Microsoft was often viewed as this monolithic giant (aka The Borg) of ruthless win-at-all-cost people. In truth, most of us worker bees just liked working hard and launching products and it was up to the "Upper Management" to make the business succeed. Critics need to keep in mind that Microsoft is full (and I mean full) of really smart employees who represent a wide gamut of beliefs and opinions. This is just one opinion...

The Microsoft of Then

I started at Microsoft as a contract developer in June, 1994 while I was finishing my Bachelor's Degree in Electrical Engineering at the University of Washington. I already had a 19.5 hour-per-week job as a professional Systems Analyst Programmer (SAP III) for the C&C (Computing and Communications) which runs the IT infrastructure of the University so I had two jobs and a full load of credits during this period. I would periodically sleep in my car, on the lawn next to the softball field, in my office, etc., and often times wake up and not know where I was.

Fun times, kind of a blur now.

In December of 1994, I was offered a developer position in the group where I was contracting (Hardware). The next morning, I got married to my girlfriend in the Seattle Courthouse and later that morning walked into my boss's office and accepted the position and went back to work. Yes, that's right, I got married and went back to work.
That is how much I LOVED working at Microsoft
Now you can criticize me for having my life priorities out of whack and you would be completely 100% correct, but during those years Microsofties worked 80+ hour weeks. A few years ago I read an article about two Google employees getting married and going back to work... I did that ten years before and it wasn't news worthy: You know what Google, we used to love writing code and kicking ass too.

Fun times, kind of a blur now.

Here are a few of my projects:

Xbox Live

I was one of the core designers of the original Xbox Live. There I designed and wrote the functional specification for many of the marquee features (voice chat, voice commands, friends, notifications, etc); managed the feature teams of very hard technical challenges (networking and security, authentication and authorization, etc); and managed a team of PMs. As an interesting side note, the Xbox Live IANA Port is registered in my name (http://www.iana.org/assignments/port-numbers) and my Xbox Live Gamertag is 'd'. Invite me if you're online although I don't have much time to play anymore.

The coolest thing the team received was an Emmy Award.




2005 TECHNOLOGY AND ENGINEERING EMMY AWARD
Outstanding Achievement in Video Gaming Technology and Applications
for Development of Multiplayer Console Technology
XBOX LIVE
Presented to
Microsoft

Xbox Entertainment Network

I left the Xbox Platform Team to be the Technical Lead of the Xbox Entertainment Network. This was an incubation effort to bring downloadable, episodic content to the mass market and then later worked very briefly on the launch of Xbox Live Arcade.

SideWinder Game Voice

There were a few other fun projects such as SideWinder Game Voice (http://www.microsoft.com/presspass/features/2000/aug00/08-24gamevoice.mspx) where I was the architect and lead developer and Microsoft ActiMates (http://en.wikipedia.org/wiki/Actimates) where I was lead developer.

Patents

Here is a list of my granted patents while at Microsoft (there are eight more pending):
  • 7,389,153 -- Enabling separate chat and selective enablement of microphone
  • 7,370,194 -- Security Gateway for Online Console-Based Gaming
  • 7,311,608 -- Online Game Invitations using Friends List
  • 6,935,959 -- Use of multiple player real-time voice communications on a gaming device
  • 6,928,329 -- Enabling separate chat and selective enablement of microphone
  • 6,905,414 -- Banning verbal communication to and from a selected party in a game playing system
  • 6,807,562 -- Automatic and selective assignment of channels to recipients of voice chat data
  • 6,717,569 -- Control device with enhanced control aspects and method for programming same
  • 6,510,513 -- Security services and policy enforcement for electronic data
  • 6,317,714 -- Controller and associated mechanical characters operable for continuously performing received control data while engaging in bidirectional communications over a single communications channel
  • 6,067,095 -- Method for generating mouth features of an animated or physical character
  • 5,977,951 -- System and method for substituting an animated character when a remote control physical character is unavailable
Fun times, kind of a blur now.

From a product development perspective, this is why Microsoft does what it does and how it does it, good or bad:

The Microsoft Triad

The core product development team at Microsoft is made up from three different components which are treated as peers:
  • Program Management
  • Development
  • Testing
This system was designed with the old way of releasing software: an 18-36 month grind for Program Managers to add features to an existing product, developers to implement those features, and testers to test those features.

We would eventually win by Version 3 because we had very good, hard-working employees, a process and history of knowing how to ship large, complex software products, and lastly our competitors were on our platform.

This structure is exactly why Microsoft products are feature heavy and take so long to release, because Program Managers add value by creating features and then managing the team to release them. It would be shocking (and a career limiting move) to produce a Functional Spec which said, "For the next 18 months, we are not going to add any more features and instead make the ones we already have work really, really well." I should know, I was a developer turned program manager turned back into a developer.

That was the Microsoft of then.

Until a few years ago there had always been an analogous technology to every product category our competitors launched. If IBM or Oracle or Borland had something good, we would have something exactly like it eventually and overtake it a few iterations later because we could apply more resources longer.

The Microsoft of Now

Now with online services there are Operations employees who are part for the core team but very little has changed in terms of product development. We are still in the mindset of Program Managers write Functional Specs => Developers who implement functional specs => Testers which test against both Functional Spec and Engineering Specs (if they exist) => Operations which deploy these services. Product Planners look at an 18+ month time horizon even in some of the most "agile" groups.

What this leads to is larger teams taking longer to launch. A diametrically opposite viewpoint is proposed by 37signals, the folks who created Ruby on Rails, Basecamp and Campfire:

https://gettingreal.37signals.com/toc.php

While I don't agree with every point they've made, I think every Microsoft employee should read this and decide for themselves how they can incorporate some of this viewpoint into their product development process. Because there are more and more massively popular sites and technologies "out there" which have no Microsoft analog or a lame simulacrum at best:
  • YouTube, Facebook, LinkedIn, Twitter, Digg, etc
  • Ruby on Rails, Ruby Gems, RubyForge.org, Merb, etc
  • Amazon's Web Services (EC2/FPS/S3/etc)
  • git, github, lighthouse, basecamp, campfire, etc
  • package managers such as apt-get, yum, rpm (and lots of free packages to install)
  • End-to-End solutions such as the iPhone instead of the OEM model
Which makes me think:
Even worse then vilified for our success is being made irrelevant by our competitors
Does anyone fear us anymore?

All of that said, I believe that what made Microsoft successful for its first 30+ years will be its limitation for the next 30 years.

Has the Win32 API become the new COBOL?

When I graduated from school, there were these old-school programmers (for some reason they were overweight with beards) who commanded large paychecks to work in banks and large companies maintaining legacy COBOL applications. I always thought that the money would be nice but the job was programming purgatory. Besides, who learned COBOL anymore?

Now, I see brilliant Computer Science students come out of the university with experience in web development, startups, venture capital, social networks, mobile phones, Java, Linux, PHP, Python/Django, Ruby on Rails, etc. It is a rare exception to find someone under 24 with Win32 or ASP.NET experience. Although I'm thin with a beard, had I become this new generation's COBOL programmer, that is, I can command a good salary to work on Win32 client applications in banks and large corporations which is the type of programming I used to detest?



Friday, October 10, 2008

The Herald Article: The greatest gift

The greatest gift

Published: October 9th, 2008 03:39 PM

Sara Denis was sure that dying wasn’t the only way she could become an organ donor. So, the Puyallup resident was happy when she learned about live kidney donation after seeing a news story about a Starbucks employee who donated a kidney to one of her customers. That was five months ago and a lot has happened since then.

[Read more here: http://www.puyallupherald.com/103/story/3258.html]