Developer Summit Awesomeness

I just returned from the 2013 AT&T Developer Summit in Las Vegas, and boy can I say it was a good one! Approximately 50% of mobile apps submitted to the hackathon were Windows Phone apps and the #1 winner of it all was a… you guessed it, a Windows Phone app! The winner, Ruggero Scorcioni, took home a $30,000 prize for creating an app that uses brainwave readings to determine whether or not it is a good time to make or accept a phone call. We also had other winners who created awesome Windows Phone apps. I’ll write a future post on a list of the winners, for now, lets see some pictures.

25

Welcome to Vegas developers!

10

Here I (in the blue Nokia shirt) explain how to better implement Telerik’s RadChart in Partha Choudbury’s app (he went on to win a Microsoft Surface, Nokia Lumia 920, Nokia Premium Developer Program token and more!). Also in the picture, Paras Wadehra (Ambassador- Silicon Valley) and Randy Arnold (Ambassador Northern Texas).

21

Here, Chevon Christie (Nokia Ambassador – New York), lends a hand to a Windows Phone dev attendee

9

Chevon and George Salcedo (Nokia Ambassador – SanDiego) discuss important stuff 🙂

12

From left to right Greg Stoll (Ambassador – Southern Texas), Randy Arnold and Jan (pronounced ‘Yahn’) Hannemann (Ambassador – Vancouver) banging away at our Nokia Developer table.

4

George Salcedo and the hackathon’s #1 winner Ruggero at the Nokia 8-Bit afterparty.

14

Paras is such a ham… he always knows where the cameraman is. Want more proof, here ya go…

15

yep, I’d say that’s proof enough (Paras is a really funny guy).

20

George helping out an attendee

3_cropped

That’s me on the big screen during the developer summit keynote speeches 🙂

2

Jan at the Nokia booth in the main demonstration room

19

I am off-screen to the left, Rich Dunbar, Paras, George, Randy, Greg, Chevon and Jan

29

Nokia DVLUP 8-Bit after party at the top of the Palms

26

Coolest DJ table ever

27

The club ceiling had and amazing projection. Here’s a short video of it:

More to come!

(photo credit AT&T Developer facebook and video taken by me)

Registering Extensions

With the entrance of Visual Studio 2012 we saw a new interface to edit your WMAppManifest file. This is a great tool to help you properly setup your app’s meta data. There is one limitation you should be aware of… there is no support for extensions. What are extensions? They are the added functionality that lets you tie your app into other parts of the OS and user experience. This blog post will cover the extensions for photos, but the process is the same for other extensions.

Here is a list of the photo related extensions:

Extension point Extension name URI keywords Learn more…
Photos Hub Photos_Extra_Hub 7.1, 8.0 Extending the Photos Hub for Windows Phone
Share picker Photos_Extra_Share ShareContent, FileId 7.1, 8.0 Extending the share picker for Windows Phone
Rich media app Photos_Rich_Media_Edit RichMediaEdit, token 8.0 Rich media extensibility for Windows Phone 8
Photo edit picker Photos_Extra_Image_Editor EditPhotoContent, FileId 8.0 Extending the photo edit picker for Windows Phone 8
Photo apps picker Photos_Extra_Viewer token 7.1 Extending the photo apps picker for Windows Phone 7

Each extension has it’s own target, make sure you are using the right one for your app. In my case, I am targeting Windows Phone 8 only. So I’ll be using all of the above except for the “Photos_Extra_Viewer” extension (it only targets WP7).

Now comes the confusing part. when you open your WMAppManifest file in Visual Studio 2012, you’ll be greeted with the new editor (image below, click for full size).

editor1new

If you were to look for a way to give your app extensibility, you won’t find any options in the new editor to do that. So what do you do? Edit the XML manually.

Here’s how:

  1. Go to your Solution Explorer
  2. Expand the “Properties” folder
  3. Right click on WMAppManifest.xml file
  4. Select XML (Text) editor

editor2

Visual Studio will open the file in the text editor and you will be able to make direct changes to your file. You’ll even have IntelliSense support to help guide you. With the file open, create a new Extensions parent ( like this: <Extensions></Extensions> ) inside the <App></App> parent and add the extensions you want your app to use.

Here are mine (click image for full size):

editor3

That’s it! Your app will now register the extensions with the OS. I recommend reading this section of the documentation on Photo Extensibility for Windows Phone. It will give you a better understanding of how this works, pitfalls to avoid and possible incompatibilities.  Armed with this information, you will be well on your way to providing the user with a more integrated experience.

Good luck and Happy Coding!

From The Ground Up

This post is to get you started on Windows Phone Development “from the ground up” and is targeted towards people who have no prior experience with the Windows Phone SDK.  At any time you can refer to my resources page for additional links to WPDev assets, tutorials and example code.

Ok, let’s begin.

The first thing you should know is that is does not cost a penny to develop for Windows Phone! The SDK and the tools are free. The only time you will need to pay is when you sign up for your Microsoft DevCenter account. The DevCenter is your portal to the Windows Phone Store. It is where you will submit, update and track your apps. I can help mitigate those costs for you. If you are an Android or iOS Developer and are porting an app, or a true “from the ground up” developer,  I will pay for your first year’s DevCenter fee. Contact me for details.

Now, we need to go over some minimum requirements that you’ll need to meet in order to use the different versions of the SDK.

Step 1: Minimum Environment Requirements

Windows Phone 8 SDK: If you are looking to write Windows Phone 8 (WP8) apps, here are the minimum requirements. If you do not have access to a Windows 8 (Win8) machine or cannot upgrade your machine to Win8, you can install and run Win8 in a VM. If you install the WP8 SDK, you also can develop for Windows Phone 7.x (WP7).

Supported operating systems: Windows 8, Windows 8 Pro

Operating system type:

  • Windows 8 64-bit (x64) client versions

Hardware:

  • 6.5 GB of free hard disk space
  • 4 GB RAM
  • 64-bit (x64) CPU

Windows Phone 8 Emulator:

  • Windows 8 Pro edition or greater
  • Requires a processor that supports Second Level Address Translation (SLAT)

If your computer meets the hardware and operating system requirements, but does not meet the requirements for the Windows Phone 8 Emulator, the Windows Phone SDK 8.0 will install and run. However, the Windows Phone 8 Emulator will not function but you can still deploy to a physical phone!

Windows Phone 7 SDK: Whenever I reference Windows Phone 7 in my posts, I am speaking about Windows Phone 7.1 (AKA Mango/Tango).

Supported operating systems: Windows 7, Windows Vista

  • Windows® Vista® (x86 and x64) with Service Pack 2 – all editions except Starter Edition
  • Windows 7 (x86 and x64) – all editions except Starter Edition
  • Installation requires 4 GB of free disk space on the system drive.
  • 3 GB RAM
  • Windows Phone Emulator requires a DirectX 10 or above capable graphics card with a WDDM 1.1 driver

The Windows Phone SDK 7.1 is compatible with the final version of Visual Studio 2010 SP1.

Step 2: Download and install the SDK

In the links below it is very important to read the “Overview” section before installing the SDKs. There are nuances that may apply to you and are good to know in general. The download you’ll get is a small file that when run will start the installation. You will need a data connection to install, however if you don’t have a connection, you can alternatively download an ISO version.

Windows Phone 8 SDK (download it from here):

  • Choose the language version you want to install and click the Download button for the WPexpress_full.exe file. Follow the instructions to install the SDK. Note that each localized version of Windows Phone SDK 8.0 is designed to function with the corresponding localized operating system and localized version of Visual Studio 2012.  Note – Windows Phone SDK 8.0 installs side-by-side with previous versions of the Windows Phone SDK. You don’t need to uninstall previous versions before beginning this installation.
  • Download the release notes which are in a separate file. For Windows Phone SDK 8.0 documentation and samples, see theWindows Phone Dev Center.
  • To start VS Express for Windows Phone, click the application in the Apps list. If you have Visual Studio Professional, Premium or Ultimate installed on the computer, the VS Express for Windows Phone shortcut won’t appear. Instead, start your Visual Studio instance as usual and then create Windows Phone SDK 8.0 projects using the installed Windows Phone templates.
  • If you try to run a project in Windows Phone Emulator and Hyper-V is not enabled, you will be prompted to turn on Hyper-V. Turning on Hyper-V requires you to restart your computer.

Note: this release is also available in .iso format. Choose one of the following options for handling downloaded ISO images:

  • (Recommended) Write the image file to a blank DVD.
  • (Alternative) Mount the image file virtually as DVD devices.

For more information about these options, see “What are ISO image files and how do I use them?” on the FAQ page.

Windows Phone 7 SDK (Get the 7.1 SDK here and the 7.1.1 SDK here)

There are two SDKs for WP7 development, the first one (7.1) is the full SDK and the second (7.1.1) is an update that adds support to develop for low memory devices. Install 7.1 first, then download and install 7.1.1 immediately afterwards. The 7.1.1 update adds an additional emulator with a lower memory cap (256MB). Windows Phone has low end devices in a lot of “emerging markets”. This is a huge opportunity for you to reach millions of devices.

Instructions for the 7.1 SDK (Do this one first):

If a pre-release version of the Windows Phone SDK 7.1 (Beta or RC) is installed on the machine, please uninstall it before installing this product. 
Click on the vm_web2.exe file in the download section above. This will start the installation of Windows Phone SDK 7.1 and install necessary components on your computer.
Please refer to the Release Notes in the download section above for additional details before running setup.
Note: this release is also available in .iso format.
Choose one of the following options for handling downloaded ISO images:

  • (Recommended) Write the image file to a blank DVD.
  • (Alternative) Mount the image file virtually as DVD devices.

For more information about these options, see “What are ISO image files and how do I use them?” on the FAQ page.

Instructions for the 7.1.1 SDK update (Do this one second):

Windows Phone SDK 7.1 must be installed on your computer before you can install Windows Phone SDK 7.1.1. For more information, see Installing Windows Phone SDK.
To install Windows Phone SDK 7.1.1 Update, click the Download button for WPSDK-7.1.1-KB2669191-x86.exe file, and then follow the instructions to install the SDK.

Note: This update configures a 256-MB emulator and a 512-MB emulator as part of the installation, and so might take longer to install than a typical SDK.

Step 3: Fire it up!

Congratulations! Now that you have the environment and tools installed, you are ready to roll. You may be asking yourself, “What do I do now?”. That’s a good question. To answer it, I will have you  write your very first Windows Phone app. My instructions from now on will be using the Windows Phone 8 SDK, most of the steps are the same. If you are using the WP7 SDK and something doesn’t make sense to you, contact me and I’ll give you a custom lesson.

  • Open Visual Studio Express (If you already have Visual Studio installed on your machine, use it instead of the Express version)
  • Go to File > New > Project
  • In the window that just opened select the following

StepsForNewPanoApp

  1. Make sure you have Windows Phone selected
  2. Select Windows Phone Panorama App
  3. Name your project
  4. Click OK.

Visual Studio will now ask you to choose a Windows Phone version. There is one thing you should know at this point. If you build an app as a WP7 app, it will work on WP7 and WP8 devices. If you build a WP8 app, it will only work on WP8 devices. In most basic scenarios, you should choose WP7 (7.1) and then update your app to WP8 afterwards. You will only be able to target WP8 if you need a feature that only WP8 offers (ex. NFC, Bluetooth, etc).

TargetVersionSS

Once you click OK, Visual Studio will automatically generate all the files you need to run and deploy the app. In fact, this app you just created is ready to build and deploy. Complete with example data and ViewModel!

Step 4: Build and Deploy

Now that you’ve got a project open in Visual Studio and it is ready to be deployed to an emulator or device (you can debug/deploy to a developer unlocked device via USB cable), it’s time to build and debug. Familiarize yourself with the image below (full size image):

VS2012ui

I always say the best lesson is the one you did hands-on, so go ahead and click the little green debug arrow to debug your project. If the emulator isn’t already open, Visual Studio will fire it up for you. If this is your first time running the emulator, Windows 8 will ask for Hyper-V permission, this only happens once. Once that’s done, your app will launch inside the emulator.

It will take some time to become more familiar with the process involved and learn more about the infrastructure of a Windows Phone app, but you are on your way. Congrats, you are now officially a Windows Phone developer.

Denied?

So, you got an email from DVLUP stating that your challenge submission was denied.  Why were you denied? What did you miss?  I wanted to write this post to share the top reasons for denial and how to fix it… 90% of these are due to the fact you didn’t edit your WMAppManifest file.

Here are the top offenders:

  • Not all Live Tiles Sizes
  • No animated Tiles
  • Not all WP8 resolutions

#1- You need to have all three tile sizes enabled for your app. Here is a list of the tile sizes from the MSDN Documentation. To rectify this problem, simply toggle the “Support for large Tiles” property in your WMAppManifest file. See the image in answer #2 for more details.

Tile Sizes

#2- Your app failed because the tiles were static. You need to bring your pinned tiles to life with one of the tile templates. Below is an example, find more here in the MSDN Documentation:

Cyclic Template– This template rotates between 1 to 9 images for your pinned tile. To meet the challenge’s requirement you need to have at least 2 images. Here is a quick and easy way to setup a tile from an event handler:


CycleTileData cycleTile = new CycleTileData()
{
Title = &quot;DVLUP Rules&quot;;
Count = 2;
SmallBackgroundImage = new Uri(&quot;/Images/smallBackgroundImage.jpg&quot;, UriKind.Relative);

// An array of URIs will do the trick
CycleImages = new Uri[]
{ // You can have up to 9 images
new Uri(&quot;/Images/cycleImage1.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage2.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage3.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage4.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage5.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage6.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage7.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage8.jpg&quot;, UriKind.Relative),
new Uri(&quot;/Images/cycleImage9.jpg&quot;, UriKind.Relative),
}
};

Another way to setup the Cyclic Template is directly in your WMAppManifest file by assigning an image directly like this:

2012-12-13_1150

#3- Your app needs to support all three Windows Phone resolutions. This link will take you to the MSDN documentation on how to target different resolutions. Here is a screenshot of the new resolutions for Windows Phone from the docs and also my WMAppManifest file.

2012-12-13_1143

2012-12-13_0927

Great, now you’re armed with the information you need to resubmit your application. Update your app through DevCenter, once it’s live in the Store go back into DVLUP and resubmit the app to the challenge. If you have any questions, send me an email to ext-lance.mccarthy(at)nokia(dot)com.

Get a loaner Windows Phone 8 device

Are you building a Windows Phone 8 app but don’t have a device to test your app on? Are you using the NFC or Bluetooth APIs and having a WP8 device would finalize your testing? There are 3 ways to get a device: Earn one with your rewards points, Trade up your current phone for a new one, or get a loaner device.

This post is about the third option, I can line you up with a loaner device from Nokia. Take the following steps (if you are already a DVLUP member, skip to step 2) and let’s get your app to market!

Step 1- We need to sign you up for DVLUP.com (a free, developer rewards program for Windows Phone devs).  Send me an email with the following information and I will give you a special invite code to join.

  • First / Last name
  • Your Windows Phone Publisher Name (if you have one)
  • A screenname you’d like for your Dvlup profile
  • Email address (your live ID if possible )
  • Where are you located (State, Country) DVLUP is currently only available to US and Canadian developers

Send the email to Nokia-Dev@Outlook.com and I’ll walk you through the steps

Step 2- Go to this link and follow the instructions.

That’s it. Period. Nokia wants you to have everything you need to bring your app to the masses. Now, you have no excuses for not getting your app out the door 🙂

How Rad is your app?

I have another giveaway and challenge for my developers today. In addition to being a Nokia Developer Ambassador, I work full time as a XAML Support Specialist at Telerik, yep the awesome RadControls people. So, I’d like to ask you, “How Rad is your app?”

I don’t want this post to sound like an ad, but rather a testimonial. That’s why I make it a point to say that I used the RadControls long before I became an employee, their components are a powerful, indispensable part of my development toolbox. The RadControls make your app look like you had a whole team of designers.  I just released an app powered by the RadControls, “Conferenced In”.  Get it here so you can follow along with this post as I make a simple comparison.

In the app I use the DataBoundListBox instead of the default listbox, this easy change dramatically increased the polish and functionality of my app. With features like “PullToRefresh” and built-in animations, I got a great UX with minimal effort. Another great feature of the DataBoundListBox is the “OnDemand” feature. You have the ability to fetch new list items when the user gets to the bottom of the contents via an Automatic or Manual OnDemand method built into the control. To see this in action:

  1. Open Conferenced In and sign in to Twitter (if you don’t have a Twitter account, the app has a guest mode)
  2. Choose an upcoming conference (this combo box and popup display is the RadListPicker)
  3. Select “Load Speakers”. Notice how the speakers fill the viewport? Awesome sauce, right! That’s the RadDataBoundListBox built-in animation with a little customization.
  4. If you signed into twitter, slide over to your timeline or mentions and scroll all the way to the bottom. You’ll see a button to load older tweets, that is the OnDemandManual mode.
  5. Now go back to the speakers list and select a speaker, this will bring you to their profile page.
  6. With the speaker’s tweets in front of you, pull the tweets down. You’ll see the PullToRefresh icon and animation do it’s magic.  This is a built-in property that you only need to toggle and populate the event handler. Easy button.
  7. Now scroll to the bottom of the speaker’s tweets as fast as possible, when you reach the end of the list notice the “loading” busy indicator. This is the control in OnDemandAutomatic mode! You will see the older tweets animate in from the right.

Now imagine if I used a default listbox? How much coolness would I lose? Exactly…

So, I’ve added a new feature to this blog. If you look over to the right sidebar, you’ll now see a new widget titled, “Examples”. This is a live Box.net widget where I have placed example applications that you can download right now. Go ahead and get the Telerik Examples compressed folder from the widget. Inside there you will find the source code of several applications (in parenthesis is the link to the example if it is the Marketplace):

  1. Telerik Examples (live link only: You get this as part of your trial download. Find it at C:Program Files (x86)TelerikRadControls for Windows Phone 7 Q3 2012Demos)
  2. Picture Gallery (live link)
  3. Telerik Design Templates (live link)
  4. Telerik ToDo
  5. Telerik Exchange Client
  6. Telerik Agenda Viewer

The next step is go get yourself a trial of the RadControls for Windows Phone, go to this link and click the “Download Trial” button. Install the RadControls and then go explore the source code of the example apps. Take a look at how flexible and powerful they really are. I only gave you one small case, imagine what this can do for your apps! See how the Telerik Windows team leverages the different features in these examples. You can fully develop your app and also get unlimited support ticket during your trial!

Get free license to the RadControls for Windows Phone I will award one license to the first developer who sends me their app that uses at least 3 RadControls in their app and tells me how the RadControls made their app better. Apps published before Nov 7th are not eligible for this challenge, but if you are updating an existing app with the RadControls that was first published after Nov 7th, it is eligible. Contact me at Nokia-Dev(at)outlook(dot)com for more rules and details.

We’re back at the original question, “How Rad is your app?”

Comatose Cursor

You’re sitting in front of your PC, steaming cup of <insert favorite beverage here> next to you and your fingers are posed over the keyboard ready to strike. Visual Studio is full screen and Expression Blend is waiting to assist in the background, but your cursor is blinking steadily in the same place it was 15 minutes ago. You’re blank, the ideas aren’t flowing, the classes of objects haven’t materialized yet.

Let me help you break out of developer limbo, out from the prison of digital purgatory, by laying out some app ideas for you. Some of these ideas are almost done, with complete source code, and are vying to be published. UPDATE: Music Lab has been taken.

Let’s start with Music Lab, an app that is an awesome companion app for the Windows Phone user to run while they are listening to music. This is an app that was given to me by Travis Lowdermilk, with the hopes of bringing it to market. I was however at the end of a dev cycle and starting a new job that was taking up a lot my time. Other than exploring the code and making some initial changes to get it ready for the world, I never brought it to Marketplace readiness. So here is my offer, the first developer in my region who needs an app idea and is willing to take it to market, I will give you the source code (I already ran this idea by Travis and he is on board, we both want to see it a reality).

If I give you the app, it will then become your torch to bear. It will be your first priority. I don’t want it to fall the wayside like it did for me. Also, I’ll only be giving it to one dev, so I’ll want to make sure you’re making progress. If you can’t devote your time to it, let me give it another dev. If you’re interested, send me an email and I’ll give you the awesomeness that it is.

Now on to the next app idea, NewsBlur for Windows Phone. There is no source code for this app. Rather it is an app in high demand and people are waiting for it. I tried getting started on it but this is another case of, “I just don’t have the time” or “My wife will string me up if I spend all my free time on it”! I have links to the API and have been talking to the creator of NewsBlur. You’ll have direct access to his wisdom and knowledge. This isn’t your ordinary big corporation stonewall, “We don’t like 3rd party app developers funking up our baby”, no help type of project. This app is a “If you build it, they will come”, “Lance, where the hell is my NewsBlur” type of app. I can tell you that if you publish this, you will get immediate traction and free promotion. Email me for more details on how to get started with a NewsBlur app.

Now add the benefits of the two ideas I threw at you, plus the backing of me and Nokia when you publish it (DVLUP rewards and my free phone challenges) You will no longer be looking at a comatose cursor but rather you’ll become a savior of two great apps. Email me at nokia-dev(at)outlook(dot)com and I’ll get you what you need.

Getting Started: NAX and Windows Phone 8

[UPDATE]

NAX has been discontinued and rolled up into Inneractive accounts]

Original Post

The purpose of this post is to demonstrate how easy it is to get started using the Nokia Ad Exchange (NAX) SDK with your Windows Phone 8 (WP8) app. Although there is no specific SDK for WP8, the process is the same with only one difference. You need to manually check off the capabilities your app will use. Let’s get started.

Step One: Go to Nokia Ad Exchange and sign up. It’s free and you’ll be confirmed in a couple minutes.

Step Two: Download the SDK. Important- Make sure you unblock the binaries before unzipping the folder. To unblock the files simply right click on the compressed folder that contains the SDK, select “options”, click the button titled “Unblock” and then click OK. Now you can unzip the folder to wherever you want to the SDK to reside. I personally like having a “Downloaded SDKs” folder in my documents library.

Where do you get the SDK? Once you’ve logged into the NAX portal, you need to go to the SDK tab and click the download button underneath the Windows Phone SDK in the list. Here is what you should see under the SDKs tab:

SDK list

Step Three: Once the SDK has been downloaded, unblocked and expanded. Add the DLL to your project. To do this right click on your project’s references folder and choose “Add Reference”. You’ll be presented with the dialog window shown here (click to enlarge):

AddReference

Select “Browse” in the left column, then click the “Browse” button at the bottom. Locate the folder you expanded the NAX SDK into. You’ll find the Inneractive.Nokia.Ad.dll file under the InneractiveAdSdk folder, select that file and then click “OK”.

Step Four: Now that you have the proper reference in place, let’s go create a new ad. Go back to your NAX portal and select the “Add App” tab. You should have this form in front of you:

AddNewAd

Go ahead and fill out the boxes with the appropriate information. For now, under the “Use Location” box select NO, I will write another blog post on how to use location in your ads. Click “Create” when you’re done. It will show a busy indicator and then present you with this view (click to enlarge):

NewAdUnitID

Notice the box titled “Your AppID”. You will be using that ID in your app. With this Id the server knows who you are and knows what Ad unit to serve your app based on the values you selected when creating the App ID. Leave this page open, we will return to it shortly.

Step Five: Go back to your application and open your WMAppManifest file (find it inside the Properties folder of your project. Select the “Capabilities” tab and make sure you have checked off the ID_IDENTIFY_DEVICE checkbox (if you plan on using location, you will also need to check off the location capability as well).

CapsAvailable

Step Six: Open the page you will be using the ad in, I am placing it on the MainPage in this example. There is no need to reference the namespace in the page header, as the pointer is within the instance itself. To instantiate a new ad placement, simple use this XAML (NOTE: Make sure your namespace matches the DLL you have. It could also be Inneractive.Ad.dll).

Just ad XAML

Notice the AppID property? This is where you use the App Id you got when you finished step 4. The AdType property gives you the choice of a banner or text ad to be displayed. You also can set the ad’s reload time with the ReloadTime property.

Go ahead, build and deploy your app now. I placed my ad at the top of my page to keep it out of the user’s normal finger reach to prevent accidental launch. Here is what the finished result looks like, have fun and make some money!

Running Success

P.I. API

I did some investigating on the best APIs to help give you app ideas or to use for beefing up  an existing app.  Here is a list of some of the best ones out there. I’ve added these to the resources section of the site.

Have fun brainstorming!