Lessons from Code Camp 2010

This time last weekend I was in the middle of the second session of Southern California Code Camp. Ever since I came to the realization that no man is an island and I’m going to ultimately need to work with other programmers in order to be successful in this business, I’ve made an effort to attend as many geeky networking events as I can.

Code Camp was a fantastic learning experience for someone who’s as interested in the .NET platform as I am. During Code Camp I was introduced to:

  • Silverlight 4;
  • Silverlight for Windows Mobile Phone 7;
  • ASP.NET MVC2, which I used this past week to build The Great Wall of Geeks;
  • .NET 4.0 multithreading (Parallel.For, Task engine etc…);
  • .NET coding standards; and
  • Agile Development and working with legacy code.

By far and away the best session for me...

Read More

Announcing the Release of Quick and Dirty Feed Parser

Alternate headline: "never see XML again."

Ok, that may be a bit of a stretch. Regardless, I'm quite pleased to announce the launch of Quick and Dirty Feed Parser, a library for people who want a seamless way to use Atom and RSS feeds in their .NET 2.0+ applications without having to deal with the XML.

"Does the world really need another RSS/Atom parser," you ask? I'll let my source code speak for itself:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using QDFeedParser; namespace QDFeedParserCMD { class Program { private static readonly string DefaultFeedUri = "http://www.aaronstannard.com/syndication.axd"; static void Main(string[] args) { try { string strFeedUri = args.Length == 0 ? DefaultFeedUri : args[0]; Uri feeduri = new Uri(strFeedUri); IFeedFactory factory = new HttpFeedFactory(); IFeed feed = factory.CreateFeed(feeduri); foreach(var feedItem in feed.Items) { Console.WriteLine("{0} {1}", feedItem.DatePublished, feedItem.Title); Console.WriteLine(feedItem.Link); } //Just to prevent the window from instantly bailing out....
            
       

Read More

Learning When It's Time to Walk Away from a Project

I wanted to take the time to follow up on some of the additional lessons I learned from my May startup project, some of which I already shared in The Myth of the Single-Person Startup.

This week I decided to indefinitely postpone my startup project, the same project I spent a month of unpaid leave working on sixteen hours a day. The decision wasn't at all painful, and I came away from it feeling oddly successful and much wiser for it. The project taught me a lot of hard-earned lessons, the kind you only learn experientially, and all it cost me was a couple of paychecks - not bad considering that I don't have any obligations outside of paying my rent on the first of the month at this stage in my life.

But back to the point of this article: learning when it's time to walk away from a project. I...

Read More

Programmer's Dilemma: Baby-Proofing vs. Giving Guns to Monkeys

One of my best friends from college once described a previous job in the financial industry as something akin to "giving guns to monkeys."

He felt that the product he sold, although it was something that could reap tremendous benefits for his customers if used properly, was something that more often than not harmed customers' livelihoods because the tool was too unwieldy and naunced for the average person to use correctly.

Like my friend in the financial industry, programmers are faced with a similar quandry - do we give our users enough rope to potentially hang themselves (more freedom) or do we provide a more authoritarian, constrained, "baby-proofed" experience (less freedom?)

All programmers are UX designers

Giving guns to monkeys and baby-proofing aren't about bugs or errors in the software. The concepts are both about making judgement calls in user experience design, and it's not just the UX gurus who have to worry about this sort of...

Read More

How to Query a User's del.icio.us Feed with RestSharp

I've been meaning to give RestSharp a go since I first started using Hammock in my startup project's codebase, just because I had heard some good things about RestSharp's auto-parsing capabilities.

This weekend I cobbled together a small example using del.icio.us' RSS feeds (not to be confused with its draconian REST API) for users and RestSharp performed magnificently, although its POCO -> XML Element mapping process requires a lot of experimentation before you get it just right.

Read More

The Myth of the Single-Person Startup

During the month of May, 2010 I took an unpaid leave of absence from work for the entire month and set off to launch my own web-based startup company.

My objective was to take a month off work, shut myself away in my apartment, spend a month coding up all of the basic plumbing I needed to get the first core part of my service in working order, and profit. Needless to say, I failed to reach my goals,  but not for any of the typical reasons like poor project planning, lack-of-focus, and so forth. No, I failed because I took the experiences of other entrepreneurs too literally and tried to “be my own boss,” without appreciating what that really means.

Success doesn't occur in a vaccuum

I...

Read More

Discussion: How to Use RestSharp / Hammock to Automatically Parse the YouTube Response Format into POCO Objects

If you've been following me on Twitter over the past couple of weeks, you might have noticed that I've been a little frustrated with the YouTube GData API lately. Simply put: XML makes me sad. Since that frustrated Tweet I've developed a solution using LINQ-to-XML and a bunch of hard-coded namespaces which isn't how I would prefer to do it.

I would much rather use the built in object deserialization capabilities in RestSharp or HammockREST. I'll be honest - I do not have a damn clue how to use Hammock's built-in deserialization capabilities. I tried tinkering with it on my own to no avail, and there's not much documentation to speak of.

RestSharp has some more detailed documentation on its deserialization capabilities, but it doesn't answer some lingering questions I have. So without further aideu, I'd like to solicit the opinion of the developer community.

...

Read More

Two Ways to Randomize IList Objects

I recently developed a self-sorted IList implementation for a project and I needed some automated way to unit test it - so naturally, the best way to automatically test a sorting function is to force it to sort the results of an unsorting function ;). Just for reference, IList is the interface implemented by every sort of List<T> variant in the .NET Collections library, with the notable exception of SortedList which is really a misnomer given that it actually implements IDictionary instead of IList.

I was excited at the prospect of developing my own unsorting method, but sadly a quick Bing query revealed a couple of solutions developed by programmers far more diligent than I, and I decided to roll both of their solutions into a pair of generic extension methods which I have tested and built into my solution. Let's take a look at them:

Solution 1 - Randomizing an IList<T>...

Read More

Frustration Central: Parsing the DateTime Values from the SlideShare REST API

I feel a little bad about posting this given that Jon Boutelle, the CTO of SlideShare, already admitted that this portion of the SlideShare 2.0 REST API sucks and that they're going to fix it eventually, but given that I'm in the middle of rewriting my original SlideShare Presentation XML deserializer I wanted to post my current solution to this problem and solicit the opinion of the .NET community in order to find a more elegant solution, if one exists.

Here's the problem - if you're trying to query any number of presentation objects from SlideShare, you're inevitably going to make a call to get_slideshow or to some method which depends on it. That's an unavoidable fact of life when you're dealing with the SlideShare API. For the most part, the SlideShare API's response format is intuitive and intelligible - here's an example response using...

Read More

The State of Open Web APIs

I wanted to repost a presentation that I saw on Twitter yesterday which highlights some interesting trends in the state of open web APIs across the board:

Here are some cliff notes:

  • SOAP is losing marketshare to REST or SOAP's share is simply being dilluted by the avalanche of new REST APIs - the charts don't make it clear;
  • JSON is on the rise;
  • OAuth is surging and is now adopted by 80+ services; and
  • APIs are maturing in their practices.

Read More

P.S. Get the latest from Aaronontheweb

Have my most recent essays and articles delivered directly to your mailbox.