Search This Blog

Thursday, August 7, 2014

I'm back after the Long Break

First of all, I can say that I am officially back (from a long break in writing blog entries). Many things have been going on in my life (such as working at Wal-mart temporarily while still looking for a full-time software developer role, both contract work and full-time work both work for me, and contemplating going into the priesthood), and I really haven't had the time to put in to writing a good blog post.

I have not forgotten about updates to my Windows Phone programs. My main project right now is working on an update for Mobile Media Manager for Windows Phone 8.1 (and that update is overdue, I know). In the currently released version, I was plagued with the restrictions that Microsoft had put in place for third party access to the Zune media queue. Thankfully, now with Windows Phone 8.1, Microsoft has finally opened up all of the functionality I need to make a fully-featured media player app. One of the major goals of this major update is full integration with Microsoft's storage solutions. Besides being able to play songs from local storage, I am also working on including integration with Xbox Music so you will be able to play your music downloaded with Xbox Music and being able to use music stored on Skydrive (excuse me, Onedrive) as well.

For those of you that are using my prayer app, Prayer Aid, I am also working on an update for it. Besides little fixes like a part of the text of the Angelus, I am adding in some new prayers too. You will also be able to go ad-free and..have access to audio of the rosary that is in sync with where you are on the rosary counter I provide. If that goes well, I might add in audio support for the Divine Mercy Chaplet as well.

For my boy scout app, BSA Eagle Tracker, an update is being worked on for you. This update will update the merit badge list to be recent and include many user interface tweaks. If I don't get to it in this next update I will release, I will include in the update following it the requirements for the various merit badges, both eagle-required and optional.

To give you all a sneak peek at some new stuff I have in the works, I have a social media app for Windows 8(.1) that I am currently working on as well. The goal of the app is to be able to pull all of your information from various social networking sites and be able to see it all in one place, organized by time. If it goes well, I will also turn it into a universal app so windows phone will also have a version of it. Development of the command line app for Windows Phone that I am working on has been put on hold temporarily until I push out updates for existing programs.

As I said before, a lot has been going on in my life since my last post. I felt that it is right for me to give everyone an update of what has been happening so people don't think I have dropped of the face of the earth. I will try to post blog entries on a regular basis now, so stay tuned.

Thursday, February 6, 2014

Great Reference Resource for Windows Phone Development

Recently, while I was searching on the internet, I came across a poster which breaks down the windows phone api into categories so you can easily find the part of the api that you want. I see this as helpful for people who are (relatively) new to Windows Phone programming. For those of you who are already experienced with Windows Phone programming, this is a quick guide to find what you need (and so you can go searching on MSDN for the documentation that you need).

The download is a pdf file. You can download it here at: http://go.microsoft.com/fwlink/?LinkId=272110

In other news, I have a few updates for you regarding my Windows Phone apps. I finally finished a long awaited update for my media player, Mobile Media Manager. The update is already live for the paid version, but the update for the free version is still in certification.. I expect it to be out in a day or two.

My prayer app, Prayer Aid, is now out. Please check it out and leave me a review + rating in the store so I can improve it. It is meant to help you grow your prayer life with God. It should also give you some new ideas for prayer as well. It also can help you find a church while on vacation. Since God never takes a vacation from you, why should you take a vacation from him?

My eagle scout app is currently being worked on. I hope to have the update for it out soon.

If you want to go ahead and get my existing apps now (while I'm working on the updates), please use the following links:

Mobile Media Manager (paid version) download: http://bit.ly/y3rf6VMobile Media Manager (free version) download: http://bit.ly/xGCsWE
Prayer Aid: http://bit.ly/Mg7Mnk

Tuesday, January 21, 2014

Book Review: A Review of Windows Phone 8 Application Development Essentials

First, I realize that this should have gone up sooner. Anyway, I got a copy of Windows Phone 8 Application Development Essentials by Tomasz Szostak. I have been looking for good guides to help student developers (or others that are new to Windows Phone programming). If you are also getting into developing for Windows 8(.1), many concepts in this book are also applicable to development for Windows 8(.1).

The book is broken up into 5 chapters. The first chapter deals with the basics of XAML (the markup language used to design user interfaces in Windows Phone. If you have done programming for Silverlight in the past, most of this will be familiar to you, but I still recommend that you skim through it for the Windows Phone-specific parts. The chapter describes the various controls available to you for your app's user interface and also gives a look into the basics of data binding which is important for the later chapters, as MVVM thrives on data binding. The only comment I have with the chapter is in the part for PhoneApplicationFrame. As a general rule, there are only a handful of times when setting the Content property of PhoneApplicationFrame is a more appropriate option then using the Navigate() function. If anyone disagrees with me on this, I would like to hear your argument for the contrary.

The second chapter deals with best practices when trying to design your app. The first part of the chapter is focused on just trying to think through your app idea, what you want to do with the app and how you want to accomplish it. As someone who has tutored underclassmen computer science majors at the college level, I always try to stress that you never get your program requirements and just start coding away; you have to think first and then start coding once you have your "plan of action" for your program in place. It also looks at the various "methods of navigation" that your app can use. On the pivot section, that could be simplified a little more. The Pivot control is made up of PivotItem controls and the user swipes in either the left or right direction to switch between PivotItem controls. Each PivotItem has a header used to identify it and its content can only contain 1 child. Visual Studio has a template for a PhoneApplicationPage with a Pivot control in it all ready to go. In the best practices section for Pivot and Panorama controls it makes a good point in avoiding content that scrolls if possible (if not, you should be fine with vertical scrolling , but not horizontal scrolling at all). Fonts and tiles are also touched upon.

The third chapter dives into MVVM. When you create a new Windows Phone application (with data?) project in Visual Studio, Visual Studio will try to organize files for MVVM. How you organize everything is up to you. In the model section, I noticed it uses the CallerMemberName attribute for the RaisePropertyChanged() function. Their example is different then how I have implanted my models with INotifyPropertyChanged interface. I have usually implemented it as


public string sampleProperty {
    get { return sample; }
    set { 
           sample = value;
           RaisePropertyChanged("sampleProperty");
    }
}

private void RaisePropertyChanged(string propertyName) {
    if(PropertyChanged != null) {
          PropertyChanged(this, new PropertyChangedEventArgs(propertyName);
    }
}

with the book omitting the parameter on the call to RaisePropertyChanged(). To show the difference, see the following:


public string sampleProperty {
    get { return sample; }
    set { 
           sample = value;
           RaisePropertyChanged();
    }
}

private void RaisePropertyChanged([CallerMemberName] string propertyName = "") {
    if(PropertyChanged != null) {
          PropertyChanged(this, new PropertyChangedEventArgs(propertyName);
    }
}

The chapter also covers other things applicable to MVVM such as ObservableCollection<T> for collections in binding view models, data templates for the Listbox control and other controls which use ItemsControl, and Value Converters for those types which just don't work by themselves in XAML such as DateTime. Not only that, but MVVM Light is also covered in detail. Unit testing for Windows Phone is covered so you can create unit tests for components in your Windows Phone app.

The fourth chapter deals with integration with the Windows Phone system. Writing to isolated storage (both file and settings), launchers and choosers, the two kinds of background agents, toast notifications, and live tiles are covered in detail. Something to note is that while you can use IsolatedStorageFile in a Windows Phone 8 app like you can in Windows Phone 7 (actually, that's the only way you can write files to storage in Windows Phone 7), Microsoft has enabled part (probably most) of the filesystem api found in WinRT in Windows Phone 8 as well. The newer filesystem api is what should be used from now on in a Windows Phone 8 app. For live tiles, ShellTile.ActiveTiles.FirstOrDefault() will always return the primary tile, whether it's pinned to the start screen or not. To search for a given (secondary) tile, you can use ShellTile.ActiveTiles.First() or ShellTile.ActiveTiles.FirstOrDafault() with a lambda expression such as ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("texttosearchfor"));

The fifth and final chapter is devoted to integration with social networking. The two social networking services covered in this chapter are Facebook and Twitter. The Facebook section is good except for one thing left out. In the dyamic-type data received from the GetTaskAsync() function of the FacebookClient class, it is possible to cast that (or parts of it) to either a List<T> or a Dictionary<T1, T2>, and yes, it can be debugged it in Visual Studio too. In the Twitter section, they use a library called "TweetSharp" in the book, but I have used a library for Twitter access called "LinqToTwitter". Each one has its pros and its cons. No matter which library you use to connect to social networking services, you can always find more information via the documentation of the library you are using.

In closing comments, I am surprised that they didn't cover styles for controls in the basics section. However, there are enough resources on the internet that cover that anyway. Overall, it gives a good start for someone who is just starting Windows Phone development. The book is available at http://www.packtpub.com/windows-phone-8-application-development-essentials/book.

ShareThis