Wednesday, July 20, 2011
YAGRAC
Wednesday, April 6, 2011
Countdown Clock Live Wallpaper
Friday, April 1, 2011
White - Now Available for Android
I was listening to This Week in Tech on commute and heard Baratunde Thurston comment that he would like to see an app called White in response to COLOR. I was inspired, and today released White on the Android Market :-)
Download today! https://market.android.com/details?id=com.onesadjam.white
Thursday, March 17, 2011
Last Call for Google I/O
Google is running a series of contests this week to give away the last remaining tickets to the Google I/O developer conference. The 2011 conference sold out in record time, so for me, this is about the only way I'm going to have a chance to go. Yesterday was the start of the first challenge which focused on Android. Due to the time difference, the 30 minute "lightning" round 1 started during my normal lunch break, and I was able to quickly submit my answers. I was pleasantly surprised to receive an e-mail 30 minutes later informing me that I was one of 200 entrants to pass round 1 and move on to round 2.
For round 2, the objective was to create and submit an Android app that recreates the bouncing balls countdown clock seen on the Google I/O home page. Of course, today being St. Patrick's day, the clock is slightly changed to be formed of clover leaves blowing in the wind, but on non-holidays it is multicolored balls. Contestants had 22 hours to complete their app and submit, with the deadline being 9am pacific time this morning.
Now that the deadline has passed, I thought I would share my entry. I'm publishing both the source code and the APK file, so if you are curious how I made it, feel free to take a look.
- APK to install on your Android device - LastCallForGoogleIO.apk
- ZIP file containing source files - LastCallForGoogleIO.zip
Tuesday, August 31, 2010
YAGRAC
I've been wanting to learn how to develop for the Android platform, and I recently took some time to start a project to do just that. YAGRAC is Yet Another GoodReads Android Client. I've made the source code open source, so feel free to take a look or download the client and let me know what you think.
GoodReads is a social book reading service that I am a huge fan of. You can keep track of books that you have read, want to read, or are currently reading. Your friends can follow your list of books to see what you are up to. It is great for finding like-minded readers and discovering new books to enjoy. The GoodReads site is great, but when I'm away from my desk the mobile site leaves me wishing for more. GoodReads does not have an official app for iPhone or Android, so I though, why not make one myself! So far I have implemented the ability to read updates from friends, browse books on my own shelves or someone else's shelves, search for books, and review my list of social contacts (friends, followers, and following).
This project has proven to be a very good and effective learning opportunity. As I encounter interesting bits I will be sure to share them here.
Thursday, May 27, 2010
Creating a RESTful web service using WCF and JSON
- IWidgetManager.cs - The interface describing service contract
- WidgetManager.svc - The web service definition (markup)
- WidgetManager.svc.cs - The web service implementation
using System.ServiceModel;
namespace RESTfulWCF
{
[ServiceContract]
public interface IWidgetManager
{
[OperationContract]
void DoWork();
}
}
[OperationContract]
[WebInvoke(
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
void DoWork();
[OperationContract]
[WebInvoke(
Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "Widgets")]
void GetWidgets();
using System.Runtime.Serialization;
namespace RESTfulWCF
{
[DataContract]
public class Widget
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int SprocketSize { get; set; }
[DataMember]
public int CogCount { get; set; }
}
}
[OperationContract]
[WebInvoke(
Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "Widgets")]
Widget[] GetWidgets();
using System.Collections.Generic;
namespace RESTfulWCF
{
public class WidgetManager : IWidgetManager
{
public Widget[] GetWidgets()
{
List widgets = new List();
widgets.Add(
new Widget
{
CogCount = 3,
Name = "Widget Alpha",
SprocketSize = 6
} );
return widgets.ToArray();
}
}
}
<%@ ServiceHost Language="C#"
Debug="true"
Service="RESTfulWCF.WidgetManager"
CodeBehind="WidgetManager.svc.cs"
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
%>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="RESTfulWCF.WidgetManagerEndpointBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="RESTfulWCF.WidgetManager">
<endpoint
address=""
binding="webHttpBinding"
behaviorConfiguration="RESTfulWCF.WidgetManagerEndpointBehavior"
contract="RESTfulWCF.IWidgetManager">
</endpoint>
</service>
</services>
</system.serviceModel>
[OperationContract]
[WebInvoke(
Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "Widgets/{widgetId}")]
Widget GetWidget(string widgetId);
public Widget GetWidget(string widgetId)
{
return
new Widget
{
CogCount = 3,
Name = widgetId,
SprocketSize = 6
};
}