Thursday, December 31, 2009

Photoshop Tutorial: Glowing Lines

I always see these background nice flowing lines on websites. Here is a Photoshop tutorial that will get you started making your own curves and lines.

Luminescent Lines | Tutorials Palace

Javascript Transition Library

New javascript transition effects library. It might have promise.

transm.js (javascript programmable image transitions)

Tuesday, December 29, 2009

Operation Weezy F. Baby. | Funniest Video of the Day

Pretty funny.


Saturday, December 26, 2009

Metaplace Goes Under

My brief foray into educational game design a few years back keeps me focused as least passively on what is going on in the game development sphere.

It looks like, which conceptually SHOULD have been successful, is shifting gears (going under). It is a shame, I think the 2.5D Flash environment has potential, but in a world of triple A shooters a cartoon big headed avatar Flash environment I think failed to capture content creators which spells death for metaplace's current model.

Oh well, sometimes you step up to the plate, swing, and strike out. I wish a prosperous future to the folks at metaplace, no harm in failing as long as they pick themselves up, brush off, learn, and move forward.

Thursday, December 17, 2009

Missing Enum.GetValues() when doing Silverlight for instance ? - Blog'A'Little

Missing Enum.GetValues in Silverlight? Here is a partial work around.

Missing Enum.GetValues() when doing Silverlight for instance ? - Blog'A'Little

If you name your class something like myclass.shared.cs and remember to put the partial keyword infront of the class you can declare this class in your web project and it will be shared with your silverlight project (if using the business or similar tempate, which breaks things up in a silverlight and a web project. Remember to include the folling namespaces at the top of the class.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;

Have fun.

Tuesday, December 15, 2009

Silverlight DataSet

Many an oldschool developer has been put off from joining the "RIA" world because data access through web services is a comparitive pain in the arse compared to old school ADO.Net. Some smart guys in Canada might be changing the equation (hopefully). I haven't used Laskarzhevsky Software's free Silverlight DataSet control yet, but it looks promising. Check it out and let me know what you think.

Laskarzhevsky Software Inc

TranslateThis Button: Copy+Paste translation for 52 languages

One push button translation. I like it.
TranslateThis Button: Copy+Paste translation for 52 languages

jSnow jQuery Plugin

Add some unobtrusive snow to your website for the hollidays.


Wednesday, December 09, 2009

Great Into Silverlight RIA Services Video

If you are developing with Silverlight and RIA Services, and you haven't seen this video, I would watch it. Two hours that are well worth it.

Currently Watching : The Official Microsoft Silverlight Site

Thursday, December 03, 2009

WCF and Silverlight

We are experimenting around with WCF vs .Net RIA Services at work. Here is a pretty good entry level tutorial on getting started with WCF and Silverlight. One WCF method is exposed and consumed by a datagrid. Also so SQLtoLinq is used as well.

MSDN Switzerland Blog

Tuesday, December 01, 2009

Photoshop Tip: CS3 and CS4 Get Rid of the Hide/Show All Menu Items

I was working with Photoshop and the stupid menu items kept hiding themselves. If you are a guru, and you know what you need, that is fine, but I'm not. I'd like to always see everything and see it in the same spot in the menu list. Someone named Chris Koerner came up with a fix that makes this go away.

Remove “Show all Menu Items” From Photoshop CS4 « Chris Koerner

Thanks Chris!

Monday, November 23, 2009

JavaScript - Find position

This is kind of a useful script for setting the window's scroll position to that of an object's in javascript.

function Scroll2Pos(cID) 
var obj = document.getElementById(cID);
var curtop = 0;
if (obj.offsetParent)
curtop += obj.offsetTop;
while (obj = obj.offsetParent);
window.scrollTo(0, curtop);

It is based on this.

JavaScript - Find position

Thursday, November 05, 2009

Unit Testing: When You Should and When You Shouldn't

Unit Testing and Test Driven Development are all the rage right now, and rightly so, especially for the type of work some of the developers I work with do (low level switch programming on telecommunication critical infrastructure). But there are often cases where TDD and Unit Test is, well, overkill.

This article provides a much needed balancing perspective-

Hat Tip: Elijah Manor

Wednesday, October 28, 2009

Basic: RSS Feeds

If you are a developer you can skip this one. A lot of non-developers ask me about RSS feeds. They don't quiet get them. The following is a great into to what RSS feeds are, how to use them, and a brief PHP tutorial on how to create them.

Military Technology: 30 Day Drone

This is pretty cool. A drone that can stay airborne for 30 days.

Wednesday, October 07, 2009

UFO? Drone? Freak Natural Occurance

Ok, it has been AGES since I posted any strange UFO/Fortean type stuff here. In fact what little is here I'm migrating to another blog. But I can't resist this one. This is good stuff.


Watch the embedded video. It will make you go...huh...

Saturday, September 19, 2009

Excellent Form Validation Plugin for jQuery: Vanadium

I stumbled across Vanadium while reading I believe Ajaxian's blog. Vanadium is an excellent client side form validator for the jQuery framework. Check it out.

Here is some sample syntax. Say you wanted to verify that a user entered in at least four characters in a textbox.

<input class=":max_length;4" type="text">

Vanadium uses the class HTML attribute to set the validation rule. Many rules are supported.

Wednesday, August 26, 2009

Forget your iPod or MP3 Player? Fear Not, The Grooveshark is Here

I'm not sure about how they get away with this legally, but it sure is cool. Live mp3 streaming from Grooveshark.

I found some tunes on the shark that I couldn't find on Amazon. Pretty cool. Use and abuse before the site goes offline.

Monday, August 24, 2009

Windows 7: First Impressions

So far Windows 7 has been great. I installed Windows 7 ultimate on an older laptop that I would never attempt to install Vista on. The only immediate bummer was driver support. But that is when I found out something very cool about Windows 7. It supports drivers written for older versions of Windows! Way cool, especially if you are trying to resurrect older computers. Just right click the installer, set the compatibility mode, and install. I got the sound and video working with XP drivers. I am impressed.

I pretty much could care less about graphical UI (kinda Office 2007 ribbon-ish), but under the hood Windows 7 appears to run very fast even on older machines.

I'm digging my old computer with Windows 7. I've got a bunch of older 3D software programs that I'd like to try out on this laptop to see how they run. I will post results as they arise.

So far, if you can get Windows 7, I'd say install it.

FYI, the specs of my older laptop if interested.

* 3.2 Gig p4 w Hyper Threading
* 64 Meg ATI 9600 Video Card
* 1 Gig of Memory
* 80 Gig HD

So far the laptop seems very responsive with Windows 7. Good job Microsoft.

Thursday, August 20, 2009

Open Source Non MS Tech

In looking at this word press theme-

I am blown away. With my experience with Word Press, you pretty much can add a theme and get it working in a few minutes. Not so with many MS tech open source projects out there. You will encounter some sort of obscure configuration detail that needs to be worked out, and waste time messing with arcana obscura to get things up and running.

Look what folks have done with "crappy" PHP and MySQL.

Makes me wonder.

Wednesday, August 05, 2009

Winamp Music Tip: Stream Those MP3's

When I code, I almost always have music or some sort of talk radio show streaming in the background. One thing that is bugging me is that I've noticed a lot of folks who offer podcast are starting to offer it in two formats, one a Flash web interface that streams, and the other a direct MP3 download.

That doesn't work for me. I've got so many web browser windows open I often times accidental close the one streaming music, and even if I am careful and don't I have to think about why the window is open and remember not to close it, which I don't like.

Downloading the whole MP3 sometimes isn't practical (i.e. a four hour show MP3).

So I remembered a solution to this problem from my audio editing days.

1) Copy the link to the actual download version of the MP3 file.
2) Open a text editor like notepad, paste the link, and save the file with an m3u extension, like "someradioshow.m3u".
3) Now click on the m3u file. If you have Winamp installed, it will begin to stream the mp3 file instead of download it. Cool huh?

Now we have our music app streaming, and web browser windows can open and close without hassle.

Tuesday, August 04, 2009

I Might Have To Get One Of These

Apple is coming out with a really cool little device the will be marketed as a console game platform, home computer, and home server rolled into one.

I might have to get me one of these, and apparently, Bill Gates agrees (he was just a little early in agreement, perhaps).

I might have to shift more time over to Unity 3D and Object-C development . I think Microsoft has made a few epic screw ups (Vista anyone?). One is they are listening to nerds as to what new features to offer rather then rank and file programmers. Coding on the MS stack is becoming too top heavy, maybe Unity 3D dev and Object-C will be a welcome breath of development fresh air, and a little competition will force MS to listen to everyone who uses their products rather than just enterprise developing geeks. No I'm not bitter!

Serious though, always remember there are no good guys. Apple sells crap hardware, so make sure you get those extended warranties. MS treats their development community well, but you pay a premium for their products that as time goes by, and open source stuff becomes better and better, I'm not sure is warranted. Linux is the only psuedo good guy out there, but since you can use many open source Linux apps on Mac's, might as well cough up a little extra cash for the Apple wow factor and mailine product (like Photoshop and 3D Packages) support.

Wake up MS, time to truely innovate, and innovate where the consumer can see the change, not the nerd army of developers behind the scenes. Bill understands, but he is taking more of a back seat now. Wow us Balmber, before MS becomes the next depreciated giant that rages on without knowing it is dead...

Monday, August 03, 2009

Tip: When/How Your Microsoft User Password

Not a major issue, but many of my work resources are some how tied to my domain authentication. So my password expired, so I changed it, but I didn't log off. Over the next several hours I noticed that I was loosing access to resources as my updated password propagaded through the network, but my local credentials hadn't been updated because I hadn't relogged yet. I had a lot of stuff open so I was trying to avoid a relog. I started off closing and reopening programs, but after a while it became such a hassle that I finally shut everything down and logged off/logged on back onto the domain. Problems solved, but I had to restart all my apps again.

So just a tip. Change your domain password at the end of the day, or change it and log off and log back on. If you are like me and have a ton of stuff open, the former is better then the later.

Wednesday, July 29, 2009

The Power of Twitter

We are becoming a society of self absorbed individuals. It is all about me is the mantra. Some of us pretend to resist this, ignoring things like bloggs, twitter, iPhones, etc.... Others like myself try to embrace the change, and end up getting sucked into the "its all about me" world just like everyone else, even though my intentions I pretend are honorable. "Look at my new blog post!" "Look at my facebook quiz, did you take it?!?" "I've got 100 followers now on Twitter!".

Well, for those of you who like to ignore this trend and the tools of self promotion, here is a cautionary tale of what can happen if you at least don't understand the new medium. The me generation has the tools to punish you if act like an @ss.

Also as a side note, this article reveals how Google's search absolutely blows the competition away. I know M$ is trying hard to catch Google with Bing and Yahoo search, good luck :) The following quote is telling-

"All this - and Pete just posted the information THIS MORNING… Already a search for the headline, “Woman Sued for $50,000 Over a Tweet”, shows how viral this type of issue is: searching at Google shows 5,000 references to the article, searching at Yahoo! shows 6 results, and searching at Bing shows 34 results."

Source: (twitter) mparent77772

Wednesday, July 22, 2009

Old Man Grumblings

I guess I'm getting old, as far as programming goes. I see a lot of fads blowing through programming (apparently many geeks are actually more prone to fads then aren't, and this is interesting as you would thinks geeks with their alleged superior intellects would be immune), some of the fads are good, some of them OK, some of them not, but apparently ALL demand to be followed with absolute faith else your code is yukky and you suck (even though many programmers who didn't use all this stuff put men on the moon, designed planes like the SR-71, managed complex nuclear physics codes, yadda yadda yadda, just fine without all these extra layers of abstraction.

I digress.

I guess my point is summed up here.

I might have blogged about this before, but I keep coming back to this, as it never gets old to me.

Monday, July 20, 2009

Not Digging Telerik

[Update] Someone from Telerik contacted me willing to help us out with our issue. That says a lot for Telerik and restores a good chunk of my faith in their controls and their support.

I like Telerik. They have produced some very cool controls to use with ASP.Net. Unfortunately the 2009 Q1 release broke all our controls at work. We normally inherit off of the Telerik controls and add some additional functionality. Whatever changes happened under the hood makes the Q1 + releases useless to us.

My job is to figure out a solution. So far no luck. Telerik says they don't support inheritance issues. Wish we would have known that earlier, or at least known to expect that existing working code will not be guaranteed to work in the future as is.

Sucks. Use this as a warning against becoming too dependant on 3rd party controls, as you can and will get burned.

Monday, July 13, 2009

70-536 Exam Prep

Ok, I hate getting certs. Did I say I hate it? Oh well, for those of you on the MCTS track for web development tacking the 70-536 exam, the following web page will be extrememly helpful.

Also, the Microsoft training books for the exam, though useful, are riddle with errors. Just an FYI.

Saturday, July 11, 2009

SQL Server Express And Abyss Web Server

Ok, I have an ancient (PIII 850 mhz machine with 1 gig of ram) that I'm using as a test server. I've got Windows XP Pro installed and I'm using the Abyss X1 Webserver instead of the throttled IIS 5 that comes with XP. I ran into one snag though, I couldn't get my ASP.Net app to talk to a SQL Server Express database when I pushed my ASP.Net project from my dev box to the test server. So I fooled around and got it working, probably in a very insecure way, but it will work fine for now. Here is what I did incase this will help anyone.

First, I moved the database from the app_data folder in the web project to somewhere else, probably not necessary but I thought it might help. I also attached to the database using sql server express studio and created a new login name that was different then the one I used on my dev box (did this both for global security users and then added the new user to the instance of the db...again may not be necessary).

From there I himmed and hawed until I came up with a connection string that works. Here it is roughly. Sql server express was installed in a named instance like this-


So my connection string ended in my web.config file for my project ended up like this.

<add name="somename" connectionString="Data Source=.\sqldev;AttachDbFilename=D:\data\test.mdf;Initial Catalog=reports;User Id=someid;Password=somepassword;user instance=true;Integrated Security=SSPI" />

Hope that helps someone else at least get going.

Wednesday, July 08, 2009


I love RSS (ATOM) feeds. I subscribe to numerous ones. I spend way to much time looking briefly through my feeds using Google Reader, staring feeds that I'd like to read later.

Well, I decided that all these stared links were pilling up, so I went about trying to unstar them, parsing the info and putting it into some useful state either in my brain or an Evernote notebook.

Well, it took pretty much a good chunk of the day, just to get through LAST MONTH's stared items. There is just no way I can process all the data, and as we have learned throughout history (using intelligence and wars as an example) data not processed is absolutely useless, and the time spent gathering it data that wasn't processed is essentially another definition of absolute waste.

So, I'm pondering going to a once a week RSS feed check, and really being selective about what gets stared, and hopefully processing data right then into info. I don't know if I can do this or not because I'm so addicted to real time info, but I really should, for a lot of reasons.

And I bet I'm not the only one out there who has a problem with this. So here are my rules.

1) Can I find this data relatively easily in the future? Yes->Ignore the data.
2) Am I at work? Yes->Star the data for later.
No->Process it (save/copy/bookmark) now.

That should cut down on the info glut. I'm trying to turn myself into a search engine, and that probably isn't helpful productivity wise.

Monday, July 06, 2009

We Lost An Interesting Person This Last Week

Amid all the celebrities dying the media over looked the death of a lesser known but important figure who died recently. On July 3rd, John A. Keel died. He wrote the Mothman Prophecies and many other books relating to the Fortean, my favorite being Operation Trojan Horse.

I was very much on the same page (or like to think so) with Keel's views about UFO's, Ghost, Faeries, etc... all really being the same phenomena, and that phenomena isn't extraterrestrial, but ultraterrestrial. Keel, though not a Christian, declared on several occasions that he wasn't really a "UFO-ologist", but a "demonologist" because he recognized the phenomena for what it really is. He, independent of a religion paradigm, came to the same conclusions I have and many others have about UFO's being something other and more complex then little green men from space or hicks out in the back woods who drank too much.

I admired Keel, as I admire anyone, who looks around the world and realizes (or really admits to themselves) that there is more then meets the eye as to what is going on in this fascinating realm we call existence. I admire his courage and the intellectual honesty to peer at the things that "don't make sense" if the world is exclusively a by product of random mutation.

Here is a pretty good article on Keel and his impact on the Fortean community.

I hope that Keel's journey lead him ultimately to Jesus, and that now John A. Keel is in peace.

Thursday, July 02, 2009

VS 2008 and PHP

Want a free version of Visual Studio 2008 that not only runs PHP, but also allows you to build win form applications using PHP?

Well then check the following link out-

Have fun!

Wednesday, June 24, 2009

Microsoft BizSpark

I officially started a small start up company today. Microsoft has a great program called BizSpark. I don't want to give to much away, as it is a wide open program right now. But if you are a start up, or want to be, you should check it out.

Special thanks to AZ Groups and Scott Cate for helping me get started. Scott Cate rocks. And thanks to Microsoft for their willingness to help incubate start ups.

I still have and love my day job, so I will proudly serve my employer as long as my job holds out. So I'll only be a part timer at the new gig, but with two or three other developers also working part time, I think we will roll something out quickly. If anyone has some spare computers laying around, I'd love to take 'em off your hands.

And I've been praying about some direction, this opportunity just fell in my lap, so be sure that God answers prayers in Jesus's name. (I know, that makes me strange I guess, but it is true).

Monday, June 15, 2009

My HelloWorld LINQ Example

I know it is sad, but up until today I hadn't ever written a single LINQ query. So, for future prosterity, here is my hello world example.

 string[] s = { "test", "hello world", "mamma", "zack", "aaa","xxx" };
var subset = from z in s where z != "hello world"
orderby z descending select z;
int i = 0;
foreach (var l in subset)
"Item " + i.ToString() + " = " + l + "<br />");

Sunday, June 14, 2009

What is Hot Right Now In The Job Market

I went to today out of curiosity ran some keywords through nationwide to get a rough indicator of what technologies are really in demand right now. Here are some interesting results (last 30 days).

Java: 8052 jobs
.Net: 4927 jobs
PHP: 1454 jobs
ASP.Net: 2324 jobs
Flex: 796 jobs
Flash 1081 jobs
test driven development: 2295 jobs
MVC: 520 jobs
Silverlight: 262 jobs
Design Patterns: 1368 jobs
Agile: 2221 jobs
SQL Server: 7285 jobs
MySQL: 1479 jobs
c#: 4014 jobs
Visual Basic: 895 jobs
VB: 1964 jobs
Javascript: 3589 jobs
jQuery: 314 jobs
AJAX: 2011 jobs
Photoshop: 646 jobs
Ruby on Rails: 257 jobs
Python: 1023 jobs
Maya: 19 jobs
3D Max: 13 jobs
Unity 3D: 1 job

A few surprises, I expected to see a lot more Flex and Silverlight jobs. Apparently Java is far from dead, despite what many bloggers have espoused. SQL Server DBA's are in high demand as well. Python also looks pretty strong where Ruby on Rails still looks over hyped in the blogosphere compared to demand.

Wednesday, June 10, 2009

Saturday, June 06, 2009

Thursday, June 04, 2009

Another jQuery UI Plugin Set

Check this new jQuery UI plugin set out!


Adding CSS Links On The Fly In C#

Here is an example of adding a link to a CSS dynamically on an ASP.Net page. I stole this from somewhere, but forgot where, so please forgive the lack of attribution.

  void AddSmallGridCSS ()
HtmlLink link = new HtmlLink ();
link.Href =
"~/App_Themes/" + Page.Theme + "/mystylesheet.css";
link.Attributes.Add (
"type", "text/css" );
link.Attributes.Add (
"rel", "stylesheet" );
Page.Header.Controls.Add ( link );


You don't have to use app themes, the file can be in any directory.

Monday, June 01, 2009

Coffee Plantation in downtown Tempe to close Saturday

Last Saturday, my favorite coffee shop in Arizona closed. It is an end of an era. I spent a lot of time at the Coffee Plantion on Mill working remotely, hanging out with friends, and occassionally checking out all the beautiful woman that walked by. There were lots of cool characters that were regulars there, me being one of them. I really enjoyed hanging out there, the 'Plantation was a big part of my life for about three years between 2004-2007. A corner stone of the old dynamic of Mill Ave is lost. Even though I moved far from Arizona, Coffee Plantion you will still be missed.

Coffee Plantation in downtown Tempe to close Saturday

Shared via AddThis

Friday, May 15, 2009

Sad Loss, 60 Year Old Major Killed In Iraq

A Veit Nam viet reinlisted in the Army after his wife died, and then was killed recently. He is the oldest soldier to be killed in the theater to date.

Thursday, May 14, 2009

The Magic Footer

I've done this before, but like usual if I only do it once in a while I forget how. The task at hand? Have a footer on a web page that stays at the bottom of the page. I did a quick search, and here are two ways (though there are others) of doing this.

1) Frack older browsers, and do it the easy way,

2) Or two, do a minimal CSS hack so you can support IE6 and older versions of Safari.

So here is some reinvent the wheel code. For number one, you just need a bit of CSS.

.footer{ width:100%; height:50px; position:fixed; bottom:0px; z-index:1000;}

then on your page, <div id="footer" >


For step two, try this approach.

CSS bottom footer by MJT, or google fixed footer.

Proud Ship Leaves the Fleet

The Kittyhawk, the last US conventionally powered carrier, after 42+ years of service, now is entering moth balls.

Tuesday, May 12, 2009

Vista Built-In Unzip Sucks

There, I said it. The built in Unzip capabilities of Vista suck.

Sad End of An Era

Reign Radio, one of the best online Christian radio stations, died some time in April, and sad to say even though RR was one of my favorite audio sources on the internet, I missed its passing by a few weeks. Even the forums were locked down so I couldn't express my thanks for so many months of great music.

I guess the site creator, Shane, had been struggling to keep the site going for a long time. I think it was causing him to go broke and he wasn't getting enough donations to keep the station going. RR's passing is a true loss, but on to bigger and better things to the site's creator Shane.

Sunday, May 10, 2009

Star Trek, Generation ?

I saw the new Star Trek movie this weekend. I thought it was a pretty good flick, glad I saw it. I'd say the story was trekkie enough so that only the absolute purist star trek fans will not like it, the rest will enjoy it. I consider myself a trekkie light, and I thought they did a great job with the movie. The guy who played the new spock did an outstanding job, the character who played Kirk did well also, and all the rest put in good performances.

8.7/out of 9 Stars. Go see it.

Friday, May 08, 2009

Monday, May 04, 2009

One Note: I Get It Now

Ok, a very talented developer where I work at is all about One Note (part of MS Office 2003+?). At first I didn't get One Note, now I do. One Note allows you to-
  • Copy paste from web sites code examples
  • Makes all your content searchable
  • Has an interface to automatically post things to external blogs
  • Is easily Organizable.

I'm occassionally hunting through favorites/bookmarks wondering where that could I saw was at, while my developer co-worker just types in a few keywords in One Note and all the info is at his finger tips. Plus he puts all the locations of servers, company procedures, personal info, etc... all in One Note, so he really does have one spot to look for things.

I haven't fully explored One Note, but so far I like it. And if Office 2007 is a little to big a purchase for your wallet, try Ever Note. I haven't used it, but I hear it is almost as good, and it is free or low cost.

Executing a Console App from ASP.Net

Well, I was fooling around with a .Net API that does google tanslations. I thought it might be a good idea to not call the translating API for bulk translations directly from the website, so I created a little console app so I can do that and do a thread.Sleep pause and control the SQL Connection opening and closing a little more robustly. Anyway, here is some sample code on how to open a console from ASP.Net in C#

 // path to the console app
string sPath = Server.MapPath("~/apps/GoogleTranslationConsole.exe");
// pass your path, and your arguments array into a ProcessStartInfo
ProcessStartInfo proc = new ProcessStartInfo(sPath,Request.Form["lagr"]);
// Incase you want to read messages back from the code
proc.RedirectStandardOutput = true;
// hide any command windows from showing up
proc.UseShellExecute = false;
proc.CreateNoWindow =
// create the process that will control the console app
Process p = new Process();
p.StartInfo = proc;

// use console.writeline for data to return back.
// Also, be sure to either p.Dispose() of your process here or do
// do a System.Environment.Exit in your console app when work is done
//p.StandardOutput.ReadToEnd() for results.

Here is the original link that I got this info from, which is in VB.Net.

Opening a Console App in VB.Net

Note: I haven't deployed this code to production yet, I've only got it working on my local box. In a production environment you probably want to make sure that your console apps aren't accessible by the web, that your console app is secure enough so that it only does what is should do when it should do it, and that only the right people can execute it (thought for my purposes probably the IIS account will probably have permission to execute). Just something to watch for once you are to that point.

Tuesday, April 28, 2009

Ajax jQuery Chat Demo

** Update **

Here is a simpler version with source code designed for Webmatrix/Razor/MVC3

I wanted to do a quick demo for a chat client similar to the one I see on gTalk and Facebook. Note in this demo I am polling, I use javascript to poll a server page for any new chat comments. This technique will work ok for small to mid sized trafficed web sites. For heavy trafficed sites, you probably need to do some sort of subscript/event model, maybe using a comet server (google). That technique is beyond me at this point, but here is a demo of the more basic polling technique that you can expand on.

The concept is pretty simple. You need three things.

1) The chat page (HTML and jQuery...or in my case an aspx and jQuery page).
2) A push page with which will accept your chat form post and save them to a database (for this example I'm using SQL Server 2008.
3) a pull page that will send new chat messages to the chat pages as they become available (actually not really sending, the chat script will continuously poll the page about every 2 seconds looking for new data to read).

Ok, our chat page will look like this- (remember to include a reference to your jQuery script somewhere, not shown).

<form id="form1" runat="server">
    <div style="width: 200px; height: 400px; border: solid 1px blue; overflow: auto"
    <br />
<input type="text" style="width: 80px" id="ChatID" maxlength="10" /><br />
    <input type="text" id="ChatMsg" style="width: 200px" maxlength="200" />
    <a href="javascript:postit()">Post</a>
    <script type="text/javascript">
      function postit() {
var zpost = { "ChatID": $("#ChatID").val(), "ChatMsg": $("#ChatMsg").val() };
$("#Chat_window").prepend("<span>" + zpost.ChatID + ": " + zpost.ChatMsg + "<br /></span>");
       , zpost
, function(data) {
ptime = setInterval(pullit, 1500);
function pullit() {
var url = "pull.aspx?t=" + eval(Math.floor(Math.random() * 90000));
$.post(url, function(data) {
if (data == "") return;
while ($("#Chat_window").children().size() > 29) {
var ptime = setInterval(pullit, 1500);

Ok, I know setting the ptime inline is bad form, but heh, it is just a demo. Some highlights. You have a postit and pullit method. The postit sends the ChatID and ChatMsg to the server as a form request. I'm adding some random query string var to the end of the pull.aspx page call to help prevent caching, this worked for me but you might have to tweak things a little bit more in your environment. The pullit method polls the the pull page about every 1.5 seconds for changes.

Now for the push it page. I'm using, but you can accomplish the same thing in PHP or whatever.

 public partial class push : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
void SaveChatPost()
using (SqlConnection oConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["myconnectionstringname"].ToString()))
using (SqlCommand oCmd = new SqlCommand())
oCmd.CommandType = CommandType.Text;
oCmd.CommandText = "declare @ts as datetime;set @ts = current_timestamp;Insert into HonoviMarketing.dbo.tChat (ChatTime, ChatId, ChatMsg) values (@ts,@p_ChatID, @p_ChatMsg);Select @ts as CurrentChatTime";
oCmd.Parameters.Add(new SqlParameter("@p_ChatID", Server.UrlDecode(Request.Form["ChatID"])));
oCmd.Parameters.Add(new SqlParameter("@p_ChatMsg", Server.UrlDecode(Request.Form["ChatMsg"])));
oCmd.Connection = oConn;
using (SqlDataReader dr = oCmd.ExecuteReader())
if (dr != null && dr.HasRows)
Session["CurrentChatTime"] = dr["CurrentChatTime"].ToString();
Session["ChatID"] = Request.Form["ChatID"];

No biggie here (and if the code runs off the page, just highlight and copy it, you'll get it all, stupid blogger :)). I save the post to the database, get a current_timestamp, and set that as well as the chosen ChatID into session variables that help with pulling the right data on the pull.aspx page, which is next. Note on both pages I put this logic in the code behind of the aspx page, and removed all the HTML from the front page except for the top directives line. And again, I'm just doing a simple example here, not worried to much about query security and the like, so don't get anal.

 public partial class server : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
string XMLSafe(string s)
return s.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;");
void PullData()
using (SqlConnection oConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["myconnectionstringname"].ToString()))
using (SqlCommand oCmd = new SqlCommand())
oCmd.CommandType = CommandType.Text;
oCmd.Connection = oConn;
if (Session["CurrentChatTime"] == null)
oCmd.CommandText = "Select Current_Timestamp as CurrentChatTime";
using (SqlDataReader dr = oCmd.ExecuteReader())
if (dr != null && dr.HasRows)
Session["CurrentChatTime"] = dr["CurrentChatTime"].ToString();
string sDate = Session["CurrentChatTime"].ToString();
SqlParameter p = new SqlParameter();
p.Direction = ParameterDirection.Input;
p.Value = sDate;
p.SqlDbType = SqlDbType.DateTime;
p.ParameterName = "@p_CurrentTime";
oCmd.CommandText = "select chatTime, ChatID, ChatMsg from HonoviMarketing.dbo.tChat where ChatTime > @p_CurrentTime and ChatID <> '" + Session["ChatID"] + "' order by ChatTime; SELECT CONVERT(varchar, current_timestamp, 21) as CurrentChatTime";
using (SqlDataReader dr = oCmd.ExecuteReader())
if (dr.HasRows)
System.Text.StringBuilder sb = new System.Text.StringBuilder();
while (dr.Read())
sb.Append("<span>" + XMLSafe(dr["ChatID"].ToString()) + ": " + XMLSafe(dr["ChatMsg"].ToString()) + "<br /></span>");
if (dr.HasRows)
Session["CurrentChatTime"] = dr["CurrentChatTime"].ToString();

Again of note is that I'm using session vars to help pull just the latest message that is needed. One gotcha that I encountered with SQL server to be aware of is that you need to format the current_timestamp else you loose the milliseconds, which was causing the chat page to sometime receive double messages. You need to format in your query like so - SELECT CONVERT(varchar, current_timestamp, 21) as CurrentChatTime for setting an accurate time for a session var.

Also remember to put a reference on both pages to the System.Data.SqlClient if you are copying my code. Here is a pic of the table layout I used.

Happy coding!


I noticed I didn't do the SELECT CONVERT(varchar, current_timestamp, 21) as CurrentChatTime formating on the if session["CurrentTimeChat"] == null clause for the first time the pull page is hit, you can add that if you want, though things seem to work without it. Also the XMLSafe method isn't really necessary nor fully implimented, so you can ditch that method if you want or fully build it out if you are concerned about illegal HTML and XML chars. I'd fix this all in code but reposting in blogger is a pain when dealing with code, so I'll leave it as is, which works fine.

Tuesday, April 21, 2009

Google Makes Another Raid into Web 3.0

Ok, I track what is going on in the web world, though I need to spend much less time tracking and more time doing, I did find something very interesting.

We have a battle for next generation web apps that currently is between Silverlight and Flex/Flash, with Unity 3D and some other plugins on the fringes.

But now Google enters the fray…

Google's new Open GL Web API


Tuesday, April 14, 2009

Javascript Gotcha: substr <> substring

I love Javascript, but I don't client side code as much as I used too, so coming from recent use in C#, I tried to do a substring on a string and pulled my hair out for about 15 minutes wondering why the results I was getting back wasn't at all as expected. Well, then I remembered substr, which operates in javascript like c#'s substring. Grrrr...

For more-

substr vs substring

Sunday, April 12, 2009

Free C# E-Book

Download your free C# 2008 Illustrated e-book from A-Press!

Free E-Book


Sunday, March 29, 2009

Pushbutton Flash Game Maker

This looks promising, a Flash game engine that supports isometric views, tile maps, and more.

Check it out here-

Update: Looks like IE doesn't like blogger, as the past in link doesn't work anymore. Oh well. Also, the pushbuttonengine is by the same guys who made torque.

Thursday, March 26, 2009

Distributed Open Source SVN: Git

Web Designer Depot has a nice into to a version control system called GIT that looks like it might be worth checking out.

Wednesday, March 25, 2009

Unity 3D AI Package

Check out this Unity 3D AI Pack

Torque to Offer Unity3D Alternative

Torque looks to offer a web plugin with similar capacities as Unity 3D. The browser wars are heating up. Web 3.0, the game web, or the 3D web, is on the Horizon.

Future: Javascript 3D Capabilities On the Horizon

Looks like the Mozilla foundation is looking to bring Open GL capabilities to Javascript.

About time! Why mess with all these 3rd party plugins (Flash/Unity/Silverlight) when we can do things directly from the web browser? Especially when 3D will become more and more common.

VRML is dead...but its successor could finally be on the horizon.

Monday, March 23, 2009

Disappointment with Silverlight 3 Beta's 3D

OK, it is just a Beta, but I was hoping for a full on programmable 3D engine in Silverlight 3. I might have been naive, but I had high hopes. We do now have Unity 3D, but for business aps Unity 3D lacks many features, as it is targeted solely for Game Development. I was hoping I could have one app to do it all. There are some nice 3D features in Silverlight, don't get me wrong, but nothing that can't be duplicated with Flash/Flex/Papervision etc...

I guess I will have to wait...but beggers can't be choosers.

Friday, March 20, 2009

IE 8, Didn't Break As Many Things As I Worried About

Yes, IE8 is out. I've downloaded it at home and at work (at home it took two tries). So far I've only noticed some minor text overlay issues (a line being a few pixels up or down). Other than that most of the sites (including our work site...I was worried about that) appear to operate normally.

Thursday, March 19, 2009

Great SQL Server Maintenance Article

I know a lot of people are using SQL Server 2005/2008 Express for production (though they shouldn't). I also know folks are using the cheaper SQL Server 2008 Web version for web databases. Both of these databases lack some maintenance and backup features that their more expensive cousins have. If you find yourself needing those features but unable to afford them, this article might help.

Wednesday, March 18, 2009

Kick @ss, Unity 3D for Windows Released!

Finally, the true progeny of Director, Unity 3D, is available for Windows! I can't wait to get my hands on a copy. Download the 30 day trial here-

Thanks for breaking the story-

Also announced today is the release of Silverlight 3 Beta...yawn.

Wednesday, February 18, 2009

Like to Chat? Check out Meebo

I stumbled across today, and I like it. Web based "omni" chat client, to use my own words. Use MSN, Yahoo, Facebook, and more. Pretty cool.

Tuesday, February 17, 2009

Ahhh Vanity

Basically, as a writer and a blogger, I suck pretty hard. Broken English, misspelled words, incomplete sentences and thoughts, yadda yadda. This occures partially because I really do suck at times, but more often then not it is laziness on my part to not cross every t or dot every i.

But blogging is fun, and feeds a little personal vanity I suppose. I don't bring much to the table, but every once in a while someone will thank me for posting some code or quote a comment I left on a blog.

Here is one case...

This post is about virtual identities, something I'm very interested in. And the author, Dusan, talked briefly about a comment I made about Oscar Wilde, though I can't seem to find the original comment on the other blog post. So, in a small way, I added to the discussion of things, and got people to think a little bit about a point I made, which is cool.

Does my heat good and feeds the vanity flame a little more.

Thursday, February 12, 2009

Think Science Isn't Cool? In the USSR It Is

Just so you believe me, say you were a nuclear engineer in Russia. Here are some of your comrads.

I doubt most engineering or scientific firms in the US could mount any sort of challenge to the miss atom contest in the CIS.

What does this tell us, besides the fact that I was checking out some Russian scientific hotties? That there is a big cultural difference between Russia and the US. In Russia, science is cool enough to attract some babe talent. In America, not so much (though there are exceptions to every rule...if you are female, in science, and reading this, you are the exception...of course:). This is a problem.

Source: Wired Defense Blog

Monday, February 09, 2009

Three PHP Frameworks Worth Checking Out

I think php is kind of in a crisis right now (and I'm sort of talking through my rear, as I'm working on my first PHP project now). It seems like PHP is really simple. But a lot of folks talked down to PHP because it wasn't "object oriented" enough. So now PHP is trying to become what maybe it shouldn't be, a first class object oriented language. Or let me put it this way, hopefully it won't become a first class object oriented language at the expense of loosing its easy to use/easy to understand roots.

Anyway, I digress...

For those of you who just can't stand the fact that you don't have all the OOP and other "modern" features of other languages in PHP, check out the following PHP frameworks that extend PHP to support things like MVC, better OOP, and Active Record, to name a few. Here they are.

The Zend Framework
Code Igniter

If you have any opinions on which is better, I'd be interested. I will take one out for a spin on my second or third project.

Sunday, February 08, 2009

Abyss and Sql Server 2008

You might be wondering how hard it is to get php and SQL Server 2008 talking to each other on an abyss web server. Turns out it is pretty easy. Here are the basics (which is pretty much exactly how you think you would do it). Below assumes you already have Abyss, php, and sql server up and running.

1. Download and "install" (unpack into a folder) the latest php/SQL Server driver (it says 2005, works wth 2008, but you have to get funky if you want to use some of the new 2008 data types...update in the works).

2) Copy the php_sqlsrv_ts.dll from your driver's install folder into your php folder.

3) (Optional: Back up your php.ini file in your php folder, then...) Add the following line into the extensions section of your php.ini file-


4) Restart Abyss, and you should be done. You can check for a sqlsvr section in php_info.

I haven't done to much testing with this, but it says it has installed, so for now I will assume good. Also if you have sql server running on a different box, you may have to tweak your php interpreter settings in abyss from named pipes local to named pipes tcp/ip. Not sure as I'm just using a local version of sql express.

Wednesday, February 04, 2009

XMLDataSource Remembered

I always forget this. Sometimes I don't have the db setup but I need to model some web pages based on data. The XMLDataSource comes in really handy for that (in ASP.Net that is). Here is a link to a quick reminder of how to use the XMLDataSource with a little xpath.

Thanks Keyvan Nayyeri

Update: Or you can use XML directly in the XMLDataSource control

Tuesday, February 03, 2009

Monday, February 02, 2009

Problem for Microsoft

Do a little web searching for top Web 2.0 sites for 2008. You might have to adjust your search params to include social media or what not, but go ahead and search.

Once you have a few list up, go through them, and see hot many of them are using ASP.Net.

1? Maybe 2?

Not good. ASP.Net is awesome for creating internal enterprise-based web applications. It isn't getting that much steam, it would appear, with the innovative crowd that is bringing new web apps to the masses. This in turn means that up and coming developers, who may not exist in the enterprise sphere (yet), see only sites using PHP, or Ruby, or something else. A rational choice for this next wave of developers will be to go with what the big boys (at least of what they can see of the big boys from their vantage point) are using, and it isn't ASP.Net.

I'm in a similar position right now. I do all ASP.Net/C# dev at work, but for an upcoming personal project I'm thinking of ditching ASP.Net for at least the web component of the project. Why? It is just to much. The last web site that I built where I was exclusively focusing on solving client problems, while not having to learn how to implement technical solutions on the fly, was written with simple classic ASP. With ASP.Net it seems like you really need to be at a guru level before you can quit worrying about the how-to's and focus elusively and the why's and what is best questions. Even though I use ASP.Net all the time at work, I don't feel like I'm at the guru point yet. Classic ASP was simple, but it did what I needed without me having to think to much about it. I miss that.

Now I'm looking at PHP for the web component (I will probably stick with MS SQL Server for the db). I'd have to learn it, but it looks like the basics of PHP are really, really simple, something I can probably sit down and master the basics of (data in, data out, data on the page) in a few days. That sounds really appealing to me right now. My project isn't about learning how to do something, it is about providing something. I want to get into the providing a solution rather then learning how to provide a solution as quickly as possible with the minimal about of head aches. Plus I want to right code and have once it works to be able to sit for the next 10 years without worrying about it. PHP is going on version 6 right now, but from what I understand version 1 code will still run under PHP 6 (though this might not be 100% the case, I imagine minimal tweaking would be needed). Classic ASP is pretty stable, but who knows how long that will be around. With .Net, Migrating say from version 1.1 to version 4.0 (when it comes out) would be nightmare, and would require investments into MS server tech and developer software.

So, is ASP.Net a fit for public web applications? The big boys don't seem to think so, probably for some of the reasons I alluded to above, and for Microsoft, that is a problem.

Wednesday, January 21, 2009

Add a Little Flair to your Web Site

I remember about five years ago there were all sorts of neat programs out there that would generate cool text effects for you in Flash SWF format. Some have gone by the way side, but here are a few that are still kicking that might be of interest.

If you know of any others, let me know and I'll post 'em.

Flex - Silverlight - Laszlo- Javascript - Widget IDE: Spket

This IDE looks promising. It supports JavaScript, XUL/XBL, Laszlo, Flex, SVG, Silverlight, and Yahoo Widget intellisense. Take a gander here-

Free for personal use, under 30 for professional. If you have used it please leave a comment and let me know what you think.

Wednesday, January 07, 2009

Javascript Page Flip

The guys over at Sitepoint came up with an interesting page flipping script using jQuery and CSS Sprites.

Check it out here...

The full article here...

Pretty cool, I'm sure this technique has been done elsewhere, and can be utilized in other technologies like Flash and Silverlight if you wanted to go that route.

Friday, January 02, 2009

Caching and DataSets

I ran into some issues with Caching on page DataSet elements in ASP.Net. The following link provides a solution.