The Twin Cities iPhone Developers Meetup has Teamed up with Microsoft!

3/20/2013 12:21:52 PM

clip_image001

That’s right.  You read the headline correctly.  The iPhone Developers Meetup is working with Microsoft in an effort to give our members the greatest opportunity to get their applications into the most marketplaces. We are partnering with Microsoft to give you the tools and resources you need to get your iOS applications into the Windows Store.

If you don’t have time to read the whole email now, remember this:

1. Access to software and hardware, including a Microsoft Surface device and Windows Phone device to test your applications on

2. Information on how to port iOS applications or start a new application from scratch

3. Access to the Microsoft development experts and the Twin Cities’ Microsoft Technology Center developer labs

This program is a partnership between the Twin Cities’ iPhone Developers Meetup and Microsoft to provide resources so our members can port or create applications for the Windows Store or the Windows Phone Store.  Between now and June 30th, members will have access to the developer kit, Microsoft developer experts and programs, and the Microsoft Technology Center’s developer labs.

The developer kit contains a Microsoft Surface device, HTC 8x Windows Phone, Windows 8 Pro evaluation bits, and a USB drive with resources, install guides, etc. for running a Microsoft development environment on a Mac.  You can contact John Hibscher (john_hibscher at yahoo.com) to schedule use of the kit for up to five days at a time.  If our group can get 15 or more applications into the Windows Store by June 30th, we will be able to keep the kit and will raffle off the Microsoft Surface, the HTC 8x, and a copy of Windows 8 Pro to the members that get applications submitted and approved. 

The Microsoft Technology Center is one of the premier facilities for Microsoft development.  At the MTC, you will be able to schedule time in one of the Windows 8 developer labs where you can use PCs that are state-of-the-art for doing Windows development.  In addition, Microsoft development experts will be on hand to answer any of your questions while you are there.  The MTC developer labs are a great place to get an app started or push it that last mile to completion.

In addition to the resources that are in the kit, here are some additional links to help get you started.

- Windows 8 Resources for iOS developers - http://aka.ms/iOSTwinCities

- Port iOS Apps Video - http://aka.ms/videoTwinCities

- Windows 8 Developer Site – http://dev.windows.com

- Window Phone Developer Site – http://dev.windowsphone.com

- GenerationApp Site – http://aka.ms/30Days

- Games on Windows - http://aka.ms/gamesTwinCities

You can also contact our local Microsoft Developer representative, Adam Grocholski.   You can reach Adam via email (adgroc at microsoft.com), on Twitter (@codel8r) of find him around the Twin Cities when he is holding Office Hours (Adam's Office Hours)

With over 70M Windows 8 licenses in the marketplace, the Windows Store is growing rapidly but there are still opportunities to be a first mover.  The Windows Store is open to app builders in 120 markets and apps are sold in more than 200 markets.   The Store support paid, free and trial applications, in-app purchasing, advertising, and more.  Revenue sharing on applications is 70/30 for the first $25K, and then goes up to 80/20 once you have sold more than $25K.  You are also free to use your own advertising and/or in-app purchasing solution.  Some developers are already earning over $20K / month – you could be next!

Thanks and good luck coding!

Tags:

Headlines | Windows 8 | Windows Phone

End of an Era

3/19/2013 12:05:05 PM

As many of you know, I have been a Developer Evangelist for Microsoft for nearly 10 years.  Depending on when you want to start the clock on Microsoft evangelism efforts, you could even say I have been an evangelist longer than that.  Come April 1st, I will be leaving the evangelism team and joining the staff at the Microsoft Technology Center in Edina, MN as an Application Architect.  I am very excited about the new opportunity and the great people I will get to work with.  If there was anything I missed while being an evangelist, it was getting to sit and talk to customers for extended periods and help understand and solve their problems with Microsoft technology.

While the opportunity is enormous and exciting, it was a tough call to make the move.  I love evangelism, especially for Microsoft, and especially at such an exciting time with Windows 8, Windows Phone, and other technologies all coming together for a truly unique platform.  More importantly, I loved the people I got to work with.  My coworkers are fantastic and the people in the developer community are a blast to interact with and made my job easier rather than harder.

I have often said, and have had others say to me, that being an evangelist is the best job in the world.  And for a very long time, I could not disagree one iota.  But like everything else, things change.  Be it the job itself, or other life issues, things change over time and that is what ended up happening for me.

The need to find a better balance between work and life was the biggest reason. Not so much today, but in the foreseeable future. For all the “coolness” associated with being an evangelist (cool tech, cool toys), one thing that many people do not realize is the time commitment it takes to be an evangelist.  Much, if not most, of what evangelists do requires working nights and weekends.  A user group meeting here, a code camp there, and soon you have to juggle a lot of personal commitments with the things you need to do to be successful in your career.  The rest of the world does not revolve around a weeknight and weekend work schedule.  Kids activities, family events, and more all happen during “work hours” for an evangelist.  As Microsoft expands its outreach to non-Microsoft developer communities, student engagement on campuses, along with our traditional venues like code camps and other grass roots conferences, an evangelist’s calendar can have a huge number of nights and weekends consumed.  Throw in that evangelists have to cover multiple cities and things get even more challenging because of travel time.

I won’t go into the gory details of why that balance has gotten out of whack for me now instead of earlier, but suffice it to say that it has gotten out of whack to the point that I don’t think I can be successful as an evangelist and still do the things I want/need to do in my personal life.  It was a very tough choice because I love a lot of things about being an evangelist. I’ll keep blogging, and hopefully have some cool things to share based on my time at the MTC. I plan on keeping my feet wet with community stuff from time to time.   The biggest impact for me will be that I will not be travelling to great places like Omaha, Des Moines or STL for Heartland Dev Con, Iowa Code Camp, or Day of .NET.  That makes me sad, so maybe I will squeeze up some travel funds and make the occasional trip.  I have to get to The Drover some time!!!!

Cue sunset, ride horse, play theme music…

Tags:

Chris Black Talks Porting to Windows 8

3/7/2013 1:45:49 PM

Chris Black is a developer here in Minneapolis that I met a few years ago.  Smart dude.  He recently ported an application he had written for iOS and Android to Windows 8.  I asked Chris to share some of his thoughts and experiences on moving his app to Windows 8.

Tell Me About Yourself and Your Company?

My name is Chris Black, I'm a mobile developer, public speaker and educator. I have a number of self published apps in the market. I use my self published apps to explore new platforms and do research in the mobile space.

What Platforms Do You Develop For and For How Long?

I have seven years of experience in the interactive field and have been doing cross platform mobile development with Adobe AIR for 3 years. Over the past 6 months I've been doing native development for iOS and Android. I'm currently focusing on native Android development but still enjoy coding for all platforms.

What Kinds of Apps Do You Develop?

Kids books, games, utilities and data driven applications. Cribbage Board has been the most successful of my personal set of published applications.

What Got You Involved in Windows 8 Development?

I've always been interested in the platform but didn't start doing development until I was contacted directly by a representative from Microsoft. I was able to get into a program and was nominated to receive a free device for doing development work. I used this device to port Cribbage Board over to the Windows 8 platform.

Tell Me About the Specific App You Ported to Windows 8?

Cribbage Board is a travel board that you can use to play cribbage. This app functions as a board replacement and still requires a deck of cards and another player. There are existing apps that let you play online or against a computer but not many apps that allow you to play against someone sitting next to you.

What Technology Do You Use to Create Your Windows 8 Apps? (HTML, XAML, C#, etc.)

I used HTML and JavaScript to build the app. By going this route I was able to leverage my existing skill set and re-use most of the ActionScript code that is very similar to JavaScript.

What Has Your Experience Been Like Creating Windows 8 Apps? 

Overall, I had a positive experience building the Windows 8 app. Windows is currently providing developers a number of resources that make the process easier. Without these resources, it would have been much more difficult. I also think there are a lot opportunities for the Window 8 market. It took a while to get used to the device but I've really started to enjoy the tablet.

How Does Your Experience with Windows 8 Dev Compare to Other iOS and/or Android?

I really like the code signing process for Windows 8, it takes a lot of the headache out of the deployment process. Android is the quickest platform to get up and running but Windows 8 was easier than getting set up with iOS. Each of the platforms has pros and cons though. For me, it's really going to come down to the volume of downloads on the platform. It's worth it to jump through some extra hoops to see a higher volume of downloads.

Three Things You Really Like When Developing for Windows 8?

The app dashboard is great. It can take a few days before statistics start showing up but when they do, there is a lot of valuable information that other markets don't provide. For example, being able to see how users discovered the app.

Being able to do development directly on the test device is very helpful and speeds up the development time.

The Microsoft team was very helpful and was available to answer questions.

Three Challenges You Faced When Developing for Windows 8?

App performance using JavaScript. The app ran great on my Intel device but required a number of optimizations to run well on the RT devices.

The overwhelming amount of information. There are plenty of resources out there but I had a difficult time finding exactly what I needed.

Initially, it was a challenge trying to develop without a physical device. Using a virtual machine was slowing down the process. After receiving my Windows 8 tablet, development went much quicker.

What Are Your Future Plans for Windows 8 Development?

I'm excited to see how many downloads the app gets in this new market. Based on the success of this app, I'll consider bringing

Tags:

iOS to Windows 8

2/28/2013 2:17:39 PM

If you are thinking about moving your app from iOS to Windows 8 to take advantage of another marketplace, make sure you check out:

iOS - http://aka.ms/iOSToWindows

There is also a great post that was put together on how to setup a Windows dev environment on your Mac.

http://aka.ms/WindowsOnMac

I’m also working with the Twin Cities iPhone Dev Meetup group to have some exciting things available to their membership, as well. And for our Android folks, just in case…

Android - http://aka.ms/AndroidToWindows

Tags:

Headlines

Azure Hub on Channel 9

2/28/2013 10:53:03 AM

Microsoft has launched a new hub for Windows Azure on Channel 9. This hub will serve as an index and entry point for all video content related to Windows Azure. Since the launch we have already made progress on building a video library to help developers get started learning Windows Azure. Introduction videos have been created for core services like Mobile Services, Web Sites, Cloud Services, and SQL Databases.

Series

Below you will find a list of the series that we have launched. More videos and series will be added at later dates.

clip_image002[3]

Windows Azure Mobile Services

App development with a scalable and secure backend hosted in Windows Azure. Incorporate structured storage, user authentication and push notifications in minutes.

clip_image004[3]

Windows Azure Media Services
Create, manage and distribute media in the cloud. This PaaS offering provides everything from encoding to content protection to streaming and analytics support.

clip_image006[3]

Windows Azure Virtual Machines & Networking

Easily deploy and run Windows Server and Linux virtual machines. Migrate applications and infrastructure without changing existing code.

clip_image008[3]

Windows Azure Web Sites

Quickly and easily deploy sites to a highly scalable cloud environment that allows you to start small and scale as traffic grows.

Use the languages and open source apps of your choice then deploy with FTP, Git and TFS. Easily integrate Windows Azure services like SQL Database, Caching, CDN and Storage.

clip_image010[3]

Windows Azure Cloud Services

Create highly-available, infinitely scalable applications and services using a rich Platform as a Service (PaaS) environment. Support multi-tier scenarios, automated deployments and elastic scale.

clip_image012[3]

Windows Azure Storage & SQL Database

Windows Azure offers multiple services to help manage your data in the cloud. SQL Database enables organizations to rapidly create, scale and extend applications into the cloud with familiar tools and the power of Microsoft SQL Server™ technology. Tables offer NoSQL capabilities at a low cost for applications with simple data access needs. Blobs provide inexpensive storage for data such as video, audio, and images.

clip_image014[3]

Windows Azure Service Bus Tutorials

Service Bus is messaging infrastructure that sits between applications allowing them to exchange messages in a loosely coupled way for improved scale and resiliency.

Tags:

Headlines | Azure

Coffee and C0de This Friday, Feb 22nd

2/18/2013 11:32:18 AM

Join us for some coffee and code on Friday morning, Feb 22nd at the Microsoft office in Edina.  Check out our Meetup page – http://meetup.com/coffee-and-c0de for details and to sign up.

Stop by and talk code, applications, ideas… you name it!

Tags:

Headlines

Using First Time Data and Caching New Data in WinJS

2/15/2013 1:57:07 PM

I’ll start right off with a caveat.  I am not claiming that the solution presented below is best, optimal, good, or whatever term you want to use.  I am hacking – yes absolutely 100% hacking – together an application on Windows 8 using HTML and WinJS.  For this app, I needed some initial startup data that would then be refreshed immediately once the application was up and running.  I also wanted to cache the new data, replacing the old data, and use that data on each subsequent startup.  Let me flesh out my approach and hopefully it will give you enough detail to use in your application, or more importantly, make better. Smile

First, I needed data that would be available the first time my application was ever used.  In my case, I had several different “data feeds” that I needed to have available at startup.  For this example, we will just say that I need two – a list of upcoming events and a snapshot of my twitter feed.  I would refresh both data sets after the app launched and replaced the old data it the new.

First, I need to get the startup data setup.  To do this, in my Visual Studio project, I created a folder named ‘startdata’ (I excel at good names for resources).  In this folder, I placed to text files – events.json and tweets.json.  The events.json file contains data like this:

[
{    
    "Date": "Tuesday, February 19, 2013 11:00:00 AM",
    "Title": "Hands-On Lab: Create Apps with HTML/JS",
    "Location": "Online",
    "RegistrationUrl": "https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032540779&culture=en-US"
    },
    {    
    "Date": "Tuesday, March 5, 2013 06:00:00 PM",
    "Title": "NebraskaJS",
    "Location": "What Cheer ",
    "Address": "1111 N 13th Street, #106",
    "City": "Omaha",
    "State": "NE",
    "Zip": "68102",
    "RegistrationUrl": "http://www.meetup.com/nebraskajs/"
    }
]

The tweets.json file was created by hitting https://api.twitter.com/1/statuses/user_timeline.json?screen_name=jabrand&count=20 and saving the file returned to my browser. Yes, the tweet data will be grossly out of date by the time a user launches my app, but the intent is to have SOMETHING to populate the UI while I refresh the data from the live feed.

I need to get these files copied to the user’s machine at launch.  This will allow me to use these files, and all future updates, in the same manner. Basically, caching the last known good data each time the app runs.  Do do this, I create an init() function that is called inside of the default.js activated handler…

function init() {
            var promiseArray = [];
            promiseArray[0] = WinJS.Application.local.exists('tweets.json').done(
                function (found) {
                    if (!found)
                    {
                        return copyStartData('tweets.json');
                    }
                }
            );
            promiseArray[1] = WinJS.Application.local.exists('events.json').done(
               function (found) {
                   if (!found) {
                       return copyStartData('events.json');
                   }
               }
           );

          return WinJS.Promise.join(promiseArray).then(
                function () {
                            var loadArray = [];
                            loadArray[0] = WinJS.Application.local.folder.getFileAsync('tweets.json').then(
                                function (file) {
                                    return Windows.Storage.FileIO.readTextAsync(file).then(
                                        function (content) {
                                            var tweets = JSON.parse(content);
                                            storedTweets = new WinJS.Binding.List(tweets);
                                        },
                                        function (error) {  });
                                },
                                function (error) {    });
                            loadArray[1] = WinJS.Application.local.folder.getFileAsync('events.json').then(
                                function (file) {
                                    return Windows.Storage.FileIO.readTextAsync(file).then(
                                        function (content) {
                                            var events = JSON.parse(content);
                                            storedEvents = new WinJS.Binding.List(events);
                                        },
                                        function (error) {   });
                                },
                                function (error) {   });

                               return WinJS.Promise.join(loadArray); });
}

Basically, I create some promises that check to see if the cached data files have been stored locally (i.e., the app has run before).  If a file is not local, I copy the start data from the application package:

    function copyStartData(copyfile) {
        return Windows.ApplicationModel.Package.current.installedLocation.getFolderAsync('startdata').then(
            function (startData) {
                return startData.getFileAsync(copyfile).then(
                    function (file) {
                        if (file) {
                            return file.copyAsync(WinJS.Application.local.folder);
                        }
                    });
            });
    }

I join those promises so I know that all of my app’s start data has been copied local before moving on to loading it.  The next setup of promises do just that – load the cached data and save it into variables (storedTweets, for example) that would be available to other parts of the application.  In my app, I expose the init() function and the variables from a WinJS-defined namespace, but you can do it however you want.

Now, I create a set of functions that let me fetch updates to each of the respective feeds.  Below is what I do for the Twitter feed:

getTweets: function () {
            if (isConnected()) {
                return WinJS.xhr(
{ url: 'https://api.twitter.com/1/statuses/user_timeline.json?screen_name=jabrand&count=20' }).then(
                    function (response) {
                        return WinJS.Application.local.folder.getFileAsync('tweets.json').then(                           
                                    function (file) {
                                        var json = JSON.parse(response.responseText);
                                        return WinJS.Application.local.writeText('tweets.json', response.responseText).then(
                                            function () {
                                                storedTweets = new WinJS.Binding.List(json);
                                                return WinJS.Promise.as(storedTweets);
                                            }
                                            );
                                        
                                    },
                                    function (error) { }
                                    );                  
                    },
                        function (error) {}
                );
            }
            else {
                return WinJS.Promise.as(storedTweets);
            }            
        }

Since I return promises for both the init() function and the getTweets() function, it is easy to combine these operations with the extended splash screen approach.

Hopefully this helps…

Tags:

Free Event for Developers & IT Pros

2/11/2013 11:02:13 AM

Whether you build apps or support the infrastructure that runs the apps, the cloud can be a really big place. For some, it's a natural evolution for their application and infrastructure to embrace the power and scale of the cloud. For others, it's a journey that has to begin with a single step.

Windows Azure provides that first step with a scalable, flexible platform for deploying your applications your way. With our Infrastructure as a Service platform (IaaS) called Windows Azure Virtual Machines, you get the flexibility to choose between Windows and Linux with full control over the operating system configuration and installed software, matched with the portability of Hyper-V disk images. Windows Azure Virtual Machines provide the perfect environment for meeting all of your Infrastructure-as-a-Service needs.

To learn more about our Infrastructure as a Service platform, we invite all developers and IT Professionals to join local Microsoft cloud experts as they introduce you to the Microsoft Cloud Platform, dive deep into Windows Azure Virtual Machines, and help walk you through a hands-on demonstration of the power of IaaS on the Windows Azure platform.

Find a city and date near you!

Tags:

Azure | Headlines

WinJS, ListViews and Limiting the Number of Items

2/6/2013 12:09:40 PM

When working with a Listview in Windows 8 applications using HTML and JavaScript, one of the challenges that is often faced is how to limit the number of items added to ListView control.  There are different reasons to limit the number of items, but the one I am going to focus is where you want to fill the vertical space of the ListView (using the ListLayout render function) with as many items as possible but without causing the ListView to scroll vertically.

Image demonstrating insufficient padding for an embedded pannable area.This is a common ‘problem’ when building modern UI applications.  Because Windows 8 apps typically pan horizontally, the design guidelines state that you should not have vertically scrollable content.  Looking at the picture to the right, imagine that those “vertical” regions are displaying tweets from various users you are following.  You want to show as many tweets as possible for each user, but you do not want to show so many as to have the ListView enable scrolling.

So solve this problem, use the createFiltered function on the Binding List you are using to put data into the ListView.  For example, I may have setup my ListView of tweets like this in my HTML:

<div id="tweets" data-win-control="WinJS.UI.ListView" 
     data-win-options="{itemTemplate:select('#tweetTemplate'),
                        layout:{type:WinJS.UI.ListLayout},
                        selectionMode:'none',
                        swipeBehavior:'none'}">
</div>

In my page.js file, I need to do a few things.  First, I need to get the height of my ListView.  So after my page has loaded (typically in the ready handler for my Page control), I do this:

var tweetList = document.getElementById('tweets');
var listHeight = tweetList.clientHeight;

with that, I can now setup my Binding List like this:

function displayTweets (tweetArray, listHeight) {
     var count = 0;
     var list = new WinJS.Binding.List(newTweets).createFiltered(
           function (item) {
                 count += 90;
                  return (count < listHeight
           }
     );
     tweets.winControl.itemDataSource = list.dataSource;
}

Now you will always get the correct number of items displayed in your ListView regardless of the screen size.

Tags:

WinJS | Windows 8

Windows 8: Local Application Spotlight – Space Weather

2/4/2013 1:34:45 PM

Next up in the Local App Spotlight is Space Weatherby Timothy Stewart.  While I don’t have a particular need to know if it is going to be partly cloudy with a chance of showers in space, I have to say, the Space Weather app is pretty cool.  Just take a look at the screen shot and you can see that all kinds of cool info is being provided.

Screen shot 1Space weather is the concept of changing environmental conditions in near-Earth space or the space from the Sun's atmosphere to the Earth's atmosphere. Space weather affects our planet, our technology, and all living things in many different ways. Solar flares, geomagnetic storms, and solar radiation are a few ways space weather can wreak havoc on the earth. It can also create beautiful auroras can that be seen near the poles and sometimes much further.

Space Weather for Windows 8 includes real-time readings and images from NASA, NOAA, SDO, and web cams from around the world!

Tags:

Local Apps | Headlines | Windows 8

Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen

About the author

Jeff Brand Jeff Brand

This is the personal web site of Jeff Brand, self-proclaimed .NET Sex Symbol and All-Around Good guy. Content from my presentations, blog, and links to other useful .NET information can all be found here.

E-mail me Send mail


Calendar

<<  August 2014  >>
MoTuWeThFrSaSu
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

View posts in large calendar

My Twitter Updates

XBOX
Live

Recent comments

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2014

Sign in