Category Archives: Announcement

Web Api Progressive Download on GitHub and NuGet

In a previous post I wrote an example library for ASP.NET Web Api that would handle HTTP requests that could contain RANGE headers. I just published the code on GitHub and have made a signed, release build package on NuGet.

You can find usage information in the Progressive Download GitHub repository. The latest build is dependent on the WebApi Client and Core version 5.0.0 NuGet packages and the Newtonsoft.Json version 4.5.11 NuGet package. Hopefully this will let people leverage the library without upgrading their dependencies.

The solution on GitHub contains 100% code coverage tests which I’ve been running before I commit the code or publish a package to NuGet.

Check the previous post on the topic about limitations of the System.Net.Http.ByteRangeStreamResult class or any other particulars. I would recommend this path for progressive downloads than my aging attempts to replicate the functionality in MVC.

Feedback is welcome.
-Erik

HTML User Picker now on GitHub!

It’s taking a bit longer to get out Part 2 of creating a user picker in HTML, CSS and jQuery than I’d initially expected. In the interim the User Picker has evolved into a more generic picker useful for other types of data. As such it’s undergone some heavy modification to strip out specific references to users / employees and gained some additional configuration options.

I had almost the entire Part 2 post written and ready the night I published Part 1. I only needed to do a bit of cleanup of the user picker to remove any traces of specific information and get it ready for people to view publicly. With all the changes that have happened since, the post is basically obsolete. It wouldn’t be kind to force people to wait for it to be rewritten before letting you see the current code and begin using it. I’ll try to get the blog post out soon for those interested in the process of creating a jQuery plugin but I have a feeling the source is much more highly desired!

The picker – now called entitypicker – can be found on GitHub. There is also a hastily thrown-together demo page. The demo uses Yahoo services to do YQL queries for city names.

This is my first jQuery plugin and most complex bit of HTML, CSS and JavaScript I’ve ever attempted to write. Please keep that in mind when you’re reviewing it. I look forward to feedback and hopefully some contributions to help make it more useful and solid.

Be kind,
-Erik

Free Webcast: Getting Started with Netduino

This Friday, April 13, 2012 at 10am PT / 1pm ET, Chris Walker from Secret Labs LLC will be doing a free 1 hour webcast hosted by O’Reily Media titled Getting Started with Netduino.

Start building electronics projects with Netduino, the popular open source hardware platform that’s captured the imagination of makers and hobbyists worldwide. Join Chris Walker, inventor of the Netduino and author of Getting Started with Netduino for an exciting webcast presentation where he will provide an overview of projects you can create with Netduino as well as what you need to experiment with Netduino and the .NET Micro Framework.

If you haven’t heard Chris speak before, be prepared for an energetic presentation covering anything you could want to know about taking the leap into embedded programming using the .NET Micro Framework and Visual Studio. If it’s been on your mind or you’re just curious this shouldn’t be missed!

Update: The recorded Getting Started with Netduino session is now available.

Happy Listening,
-Erik

ASP.NET MVC Resuming Actions

(Update 2014-12-09: I’ve created a WebApi based library that leverages the System.Net.Http classes to do all the parsing. The code is very simple and much easier to support. I’d recommend trying that first. It’s a lot easier to support.)

This is to announce my new CodePlex project Resuming Action Results for ASP.NET MVC. Or MVC Resuming Actions. Or something else even more clever and catchy. Oh, and it’s already on the NuGet official feed to check out.

The History

Some time ago I started a project called Media Streaming MVC. The project was an early attempt to give ASP.NET MVC developers the ability to easily expose dynamic, routable resources as progressive-download compliant. It was just an ActionFilter and some ActionResults with code to parse HTTP Request Headers and construct the appropriate response.

That project was developed very rapidly as a proof of concept for a StackOverflow question I had tried to answer. Over the past few months I grew increasingly unhappy with the implementation. I knew I wanted to bring it more in line with the way MVC FileResult actions were called and give it a major overhaul. Unfortunately every time I sat down to take a serious look at how I could accomplish these goals, I got overwhelmed and let my attention wander to something less challenging.

Finally I made the decision that there was really no way to clean up the project, make it easier for developers to use and retain any sort of compatibility with existing code. I made the decision to cut the cord and start fresh with the lessons I’ve learned, the feedback I’d gotten and my expanded experience with the ASP.NET MVC platform.

Continue reading

National Give Camp Days | Oct 21-23 2011

GiveCamp Logo

If you’ve never heard of a give camp you should read into it. The gist of a camp is simple: find charities that need IT solutions, gather up some developers and designers and spend the weekend building solutions.

These camps have seen rising popularity and now Microsoft is throwing some corporate weight behind these events as well. Take a look at the announcement on GiveCamp.org to see what resources Microsoft is offering.

Give Camps are not only a great way for knowledge workers to contribute to their community but it’s a really nice way to make connections with like-minded people. I would encourage everyone to keep an eye out to see if a Give Camp is being organized nearby.

Graciously yours — for the weekend,
-Erik

MicroLinq NotifyingCollection Published

I’ve been pondering if/how to implement an Observable Collection type class in the MicroLinq project for NETMF. Tonight I finally set about doing it.

I started with the ValueTypeArrayList class, removed the type restriction and switched storage to just plain old object[]. I took a look at the current ObservableCollection in the full framework and set about deciding what was a must-have and what could be tossed away to save memory and footprint.

It was obvious the CollectionChanged event was necessary but I threw away the PropertyChanged event. It just didn’t seem to provide anything useful in this case. So, concentrating just on the CollectionChanged event, I looked at the EventArgs and saw a lot of code which basically provides a read-only copy of the old and/or new collection (before the modification and after) depending on the change type. I cut this first because I just couldn’t justify the memory usage.

That left only the Action type of which there are 5 in the full framework. Only 3 could ever be reported from my implementation so I cut the other two leaving just Add, Remove and Reset. I kept the class and interface names the same as the full framework in case there’s ever a native implementation. It should be trivial to port code that makes use of NotifyingCollection now this way.

Continue reading

New MicroLinq Build! Is it Release Candidate yet?

I just published another release of the MicroLinq project tonight. It contains a number of fixes, enhancements and some new stuff!

Collections:
No changes in this release.

MicroLinq:
-Modified some overloads to use less code by relying on the full version classes.
-New OrderBy implementation. Doesn’t modify source and only iterates source once to copy the values. Uses MergeSort now.

ParallelExtensions:
-Removed project dependency on MicroLinq which wasn’t needed.
-Fixed bug that could have passed the wrong object to the action delegate while enumerating.
-Removed Countdown and Countup classes and replaced with in-place ManualResetEvent.
-Added optional timeout parameter to specify how long to wait. The success/failure is still not bubbled up though.
-Library is a bit smaller now.

And…
MicroLinq.PrebuiltDelegates:
-New project. Provides commonly-used delegates for Aggregate and Compare delegates. Could be expanded if others suggest helpful versions. Inspired by comments from Corey Kosak.
-Builds to its own library to conserve program space if not wanted/used in a project.