Friday, October 17, 2008

Photofunia fun with photos

Photofunia is a web application that allows you to take an existing photo of yourself and insert it into all types of interesting photographs (many of which are well known shots). It does all of this for you and only requires that you upload an image to start the magic.

I routinely follow Chris Pirillo on CNN in the mornings (via Video archive....I think his segment is actually on in the evenings)

Me as Jedi Have you ever wanted a picture of yourself as a Jedi Knight? Well I did. 

Me in Azkaban PrisonWhat about a shot of yourself in Azkaban prison (shortly before your planned escape of course =) ).

Some of the photos use what Photofunia calls "face detection technology" (yep that is all they tell us) which will take the image you upload and try to identify the face in the image. It then takes this face and does all kinds of interesting things with it. This shot of a sidewalk chalk artist is perhaps my favorite.

Me on Sidewalk

Of course is you want to take this narcissistic behavior to the extreme and create some fake fans for yourself that swoon at the image of your mug. Well....you can do that too.

Not that I would ever do such a thing...and if, theoretically, I were to do something like that I certainly wouldn't post it to my blog for all the world to see.

Me with Fans

Doh!

Pixel Pipe Coolness

 PixelPipe

Pixel Pipe is an application that allows you to use a single source to push images out to the many different sources (including email accounts) that you might want to send an image to.

With one click you can fire off an image from your mobile phone and simultaneously post it to TwitPic, your Blog, save a copy in you Picasa account, email it to a few friends, and upload it to Facebook.

This is a photo that I uploaded with the service with it linked to this blog. The image was also sent to several other accounts of mine at the same time (I turned off TwitPic and Twitter to avoid spamming this out to my tweeps while testing it).

Finally, it gives you an email address that you can use to send messages (or you can upload things via the web client). They are also working on an API that they will be making public in the near future.

Oh, and its free. =)
Sidewalk Drawing

A photo created with Photofunia
Posted via Pixelpipe.

Wednesday, October 8, 2008

Monday, August 25, 2008

Excel Services

Recently, my previous mentor Brian Prince asked me to take part in an ARCast presentation that highlighted some work I had done with Excel Services in SharePoint. Needless to say, I was honored to do so.

ARCastTV post on MSDN

In this video we discuss the advantages of Excel Services and some of the scenarios in which it can be used. We also touch on the OpenXML format and one of the instances in which we used this in conjunction with Excel Services to provide a comprehensive solution to a client.

It was my intention to have a blog post that discussed this procedure at length before the ARCast video went live but it would seem I am behind schedule on that issue. I still intend to publish this but if you are desperate to know the details now please send me a comment to that effect and I will make it a priority.

Thursday, May 15, 2008

RoboChamp

For those not familiar with the RoboChamp competition it is a contest of robotics that is currently being held by Microsoft. I felt that this would be a good excuse to get off my duff and see what I can do in this area.

Although I don't have much to report at this moment, I can tell anyone that is interested to make sure that they download the March 2008 Runtime of DirectX in order to get you to a running state (this isn't listed as one of the installs you will need to get started but it is a requirement for the virtual environment). Hopefully that gets you to a running state a little faster than I was able to. =)

I can't compare this to other robotic development platforms but I have to say that just the inclusion of the virtual environment seems to be a huge boon for an enthusiast like myself. I could never afford to purchase a robot just to tinker with it and without tinkering with it first I am not sure which robot I would like to own.

Or to put it another way, how can I advise a client which robot would best fill their needs when I have little idea what each and every robot is capable of doing (and what their limitations are).

Granted the virtual environment is a 'perfect world' scenario where tires don't lose traction, atmospheric conditions don't interfere with sensors and background noise doesn't exist (unless you create it) but it does have a physics engine that promises to allow the creation of these types of conditions if you think they are realistic to your needs (more on that latter).

I added my robochamp card to the bottom of the main page for those interested in how I am doing. Drop me a line if you are also thinking about joining in on the fun. =)

Friday, March 28, 2008

Programmatically Set Client-Side Events in .NET

I have run into this situation many times before and several Google searches later I know I am not alone in this problem. There are times in life when we need to set a Client side event but we need to set this event in the codebehind of where we are working.

If you are slamming out a Server Control or, as in my case, a WebPart you might run into such a situation where you need something to occur locally but you don't have the luxury of detailing the control in an aspx page.

Furthermore, there are situations where even the miracle that is AJAX will not solve your problem (getting the Excel Web Access session id is one such situation).

One of the first things you will need to do is register some type of JavaScript method on your page so that the event has something valid to call. You can do this by forming the JS Function in a StringBuilder (sb in the code below) and then use the RegisterClientScriptBlock method to push it out to the page:

Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), this.ID.ToString(), sb.ToString());

Once this is accomplished, you will want to add the event (OnChange event in my example but the same can be done for OnFocus, OnBlur, OnClick, etc). To do this you simply add an Attribute to the ASP tag in the codebehind and use the proper attribute name (see HTML reference to make sure you have the correct spelling). This is an example of doing such:

_myDDLControl.Attributes.Add("onchange", "MyJavaScriptMethod();");
_myDDLControl.AutoPostBack = true;

The meat of this is adding the Attribute to the control so that it will fire the OnChange() event on the client side and run whatever snazzy JS you might desire. You should be able to find plenty of references online on the available events for different HTML elements so then the issue falls to determining what HTML element your ASP Webcontrol will get rendered as.

Setting the AutoPostBack attribute will ensure that the control posts back to the server as well.

Edit: The wise and all knowing (alright maybe that is a bit of an exaggeration but I do have a lot of respect for him) Tim correctly pointed out that you should wrap RegisterStartupScript in a test to ensure that the method doesn't already exist.

You would do this by use of another method contained within the ClientScript object called (of all things) IsClientScriptBlockRegistered("MyJavaScriptMethod"). The specific code would look something like this (in C#):

If(Page.PreviousPage != null && !Page.ClientScript.IsClientScriptBlockRegistered("MyJavaScriptMethod"){ //use the RegisterClientScriptBlock method above }

Thursday, February 21, 2008

How a MOSS guy packs

So how would a MOSS guy pack...

A MOSS guy would leverage existing technologies from the largest moving company in the world. All boxes used would be called MoveParts and people in the office would be free to load these MoveParts however they wish. There would be no need to assign a destination or room number to these MoveParts as they should remain generic enough that they could be put into any office that needed them. However it would be necessary to include an inventory of the contents, strong type name of the box, version number of the box, and public unique identifier of this box.

Loading of MoveParts would be done in the dark. The use of a flash light can be utilized but only after a requisition process has been followed to 'attach' to the flash light in order to view the individual contents of each box. Certain sub compartments of the box would prohibit the use of objects like Comments (on Post Its), smaller boxes, pictures, custom artwork and Camera objects.

These MoveParts would then be stored in a central clone factory which had the amazing ability to duplicate the contents of each MovePart repeatedly, as often as was required. So instead of Frank asking to borrow his co-workers pen/paper/toothbrush, he would simply order a copy the box and use his own version.

The ability to test your MovePart to ensure it performed the way you intended it would also be possible but unlike 'normal' move processes this would take twice as long and give you grey hair as a side effect. This is an acceptable 'feature', due to the complexity of this move process, and should never be questioned (under threat of pain).

The factory where these MoveParts were stored would have exceptional security that was evaluated regularly. Although temperamental, the security system used is one of the best in the industry. To prevent the introduction of lazy security guards (hired on as additional security was needed) the factory, being a clone factor after all, has taken to the practice of cloning the very best security guards it has on its payroll. One of these clones would be assigned to watch over any duplicate box that was created. Thus insuring that the contents of these boxes were not sold on the open market to buy black market kittens for use in any sort of juggling.

So in a nutshell (fully scalable) that is how a MOSS guy packs. :)

"Good Lord - I've heard about this - cat juggling! Stop! Stop! Stop it! Stop it! Stop it! Good. Father, could there be a God that would let this happen?" -Steve Martin, The Jerk