Search

Recent Posts

You're Still Here? 352 Media Group's Blog Moved! »

Attention Craiglist Spammers and Scammers: Stealing takes Creativity! »

Webinar - Web site Usability: Turning Visitors Into Customers with Design »

Web Design Directory Lets Users Rank Companies By Location »

Webinars, Panels, & Speeches, Oh My! »

Interactive Media News - July 13, 2009 »

Tips for Great TITLE Tags to Maximize SEO results »

Facebook Age Demographics »

What's New @ 352 for July, 2009 »

Marketing Tip of the Day - If You See the Google Streetview Car, Pass It! »

In Depth Twitter Analysis »

The Best Time and Day to Send your E-Newsletter »

Interactive Media News - July 6, 2009 »

352 Media Group - Life on the Farm »

Tips for the Comment Spam Crowd - At Least Be Creative! »

Using Your Blog To Drive Traffic To Your Corporate Site »

Interactive Media News - June 29, 2009 »

CruiseNow.com leading the charge in online cruise travel companies. »

Using Facebook to Market a Business »

Interactive Media News - June 22, 2009 »

Interactive Media Happenings - June 15, 2009 »

Video From Field Day 2009 At 352 Media Group! »

Archived Webinar: Making Your Site Appeal To Both Customers & Search Engines »

Hulu Desktop »

Webinar: Making Your Web Site Appeal To Both Customers & Search Engines »

352 Media Group - Great Web Design, Even Better Breakdancing! »

Online Petition Site - LobbyingForum Launched by 352 Media Group »

Top 5 Reasons Entrepreneurs Will Succeed In This Recession »

Social Media's Growth Continues to Explode »

Southeastern Mills New Website is Cookin! »

352 Media launches a high profile Virtual World for Kids - CampPete.com! »

The Truth About: Project Managers - Web Dev Myths Debunked »

The Truth About: Designers - Web Dev Myths Debunked »

Archived Webinar Now Available - Why Web 2.0 Is Important To You! »

10 Tips For Effective Blogging »

What's New @ 352 for April, 2009 »

Webinar - Why Web 2.0 is Important, and Why It's Like a Big Bowl of Ice Cream! »

The Truth About: Programmers - Web Dev Myths Debunked »

Twitter grows 1,382% year over year »

Social Media & Blogs ranks above personal e-mail »

Web Designer Magazine Features 352 Media in "Hot 100" List »

Lunch A2 Marketing Google Tools Presentation Apr 1st 09 - Slides and Transcript »

Microsoft's MIX09 Web Design Conference »

352 Media Group Launches Gremed Inc. Site »

BRAGfolio.com Launches - The Right Idea at Just The Right Time »

Five Inexpensive Ways to Promote Your Web Site »

GRE and SAT Vocabulary Training Site Demonstrates the Power of MVC and LINQ »

What is the Critical Mass of Twitter Followers and Tweet Frequency? »

The Truth About: Salespeople - Web Development Myths Debunked »

Web Site Designs Incorporating Identicons »

Featured Web Programming Contributors

ccook
.NET Prog
PeterB
.NET Prog.
PeterV
VP, Marketing
DanV
Tech Dir.

Web Programming
ccook

GRE and SAT Vocabulary Training Site Demonstrates the Power of MVC and LINQ

Posted 3/11/2009 by ccook, .NET Prog

 

Achieving a high score on the Graduate Record Exam (GRE) is a base requirement for entering a graduate program in any major university, including the University of Florida. As an engineer, I found that getting a high score on the verbal portion of the test was more difficult than the analytical or math-based sections. Verbal exams, on both the GRE and SAT, tend to be a major hurdle for students because of the amount of vocabulary that needs to be memorized. Traditionally, the only technique to learn vocabulary words was by using Flash Cards repeatedly for several weeks prior to the test.

In my mind, creating and using Flash Cards was tedious and probably a less-than-optimal way to memorize vocabulary words because of the technology that’s available. I felt there had to be a faster, more efficient strategy. With that thought in mind, I set out to develop my own GRE vocabulary study application.

The result of using the application speaks for itself: I raised my GRE verbal score by over 10% with less than 15 hours of accumulated study time. That amounted to roughly 514 vocabulary words memorized in only 30 days.

Based on my successful use of the tool, I chose to make it publically available at GreatVocab.com and the site now has over 200 active users.

When it came to developing the application I had many options as an experienced computer programmer. I wanted something that was fast and could be easily expanded upon, including the seamless addition of future upgrades and feature-sets.

I chose Microsoft’s Model View Controller (MVC) Framework for these and other reasons.

Great Vocab explored the development process leveraging LINQ and MVC, along with the progressive releases of MVC, from Preview 2 all the way to the current Release Candidate 2. Early in the development cycle the MVC Framework was seen as a high risk foundation, but with time and attention I was able to produce a reliable application using the languages.

Great Vocab was designed to help students like myself to quickly learn SAT and GRE vocabulary words. This was accomplished using a training algorithm which was developed to guide the word selections of users.. To utilize the algorithm the application needs to rapidly pull from an unabridged dictionary with nearly 200,000 definitions while utilizing verbal, tensile, structural and synonym/antonym relationships in the query.

Adding to the technical challenges, I created an automated, in-context feature that gives a text citation relevant to each word as it’s being studied. This feature introduced a new requirement: rapid and frequent database queries to a full gigabyte of referential data.

The first challenge of the application’s development was gathering GRE and SAT vocabulary words and definitions for the database. Here, LINQ proved invaluable in saving development hours as well as some Regular Expression matching patterns.

The dynamic nature of LINQ with the use of a referential DataContext DBML made creating one off console applications extremely quick. That enabled rapid and custom data shaping from various sources into the database.

Using MVC for application development introduced a learning curve at the outset, but returned the investment with interest. Starting challenges included in-form state management, with its characteristic drop of the ViewState and ControlState. The challenges were lessened as the MVC Framework evolved and offered DataContracts which providd quick binding of the data to and from the forms.

In the later stages I found URL routing to be well advanced. With the MVC Futures it was easy to extend the relative URL routing to absolute routing. This enabled portions of the site to be declared secure, while all of the links would automatically resolve to a fully qualified URL when needing to move the user off or onto an SSL connection.

The meat of the application, layered out from MVC concerns, benefited from the dynamic nature provided by LINQ and its expression trees. Expressing the training algorithm within LINQ rather than Stored Procedures sped development greatly as the algorithm could be shaped at run time while delaying execution against the SQL server.

Another new Microsoft component was utilized to provide for visual interpretation of a user’s progress through the training program: .NET Charting. The charting controls were easily implemented on top of existing data with minimal shaping and rendered beautifully with little adjustment. Another benefit was that the controls allowed cached output, giving additional performance boosts.

The GreatVocab application tuning was performed using the SQL Server Tuning Advisor while running compiled LINQ Queries. This stressed the application with a load test via Microsoft’s Visual Studio Test Edition. The tuning yielded a quick 60% performance gain. Manual tuning and indexing of the queries provided further performance gains where needed.

Red Gate’s .NET Profiler was also used in detailing the performance of the application and refining the application. Remarkable performance was observed on the part of MVC, validating some claims to dramatic speed increases with MVC’s lighter request life cycle.

In sum, MVC and LINQ provided a strong framework upon which GreatVocab.com was developed. I look forward to its final release and potential adaptation into standards here on coming projects.

Share:


TomB

QuakeLive open beta sets new high standards for Web Browser gaming

Posted 2/25/2009 by TomB, Acct Mgr

 



As an old school gamer born in the Atari 2600 era, Quake III Arena came out during my gaming glory days back in 1999/2000. I have played countless hours and have many fun memories with this classic game. Recently, I had the pleasure of playing this during the closed beta for a month before the beta opened public yesterday.

The thing that is most impressive in playing the game is massive information architecture Web development that went into this project. Basically the id software development team crammed around a 500MB install package from the original Quake III to a 6.8MB plug-in for your Web browser. How was it done?? I have no clue and the infrastructure portion has to be massive!

Quake Live runs on a slightly updated version of the id Tech 3 engine, but the focus remains on usability rather than major graphical upgrades. Among other usability changes,Quake Live has a new, more streamlined HUD. While the game is free, Quake Live will be backed financially by in-game advertising from IGAWorldwide. IGA Worldwide is the leading dynamic in-game advertising network. Once a QUAKE LIVE player account has been created, an intuitive and engaging web site becomes each players’ unified interface for joining online games, practicing privately against computer controlled opponents, finding and communicating with friends, and monitoring match scores, leaderboards, statistics, and awards. Joining the perfect game is always one click away, as QUAKE LIVE’s skill matching system automatically suggests a selection of matches based on each individual player, using factors like skill, and connection quality. Plus, since the game is accessed and delivered entirely through the web, players can login and play from anywhere - with all of their personal game settings, custom controls and friends as close as the nearest web browser.

Source: www.idsoftware.com  

Also, if any 352 staff members are up for some dueling, CTF or Team DM afterhours, add “352Jaxx” as a friend :).

Share:


PeterB

Community Technology Preview of VS 2010 & .Net 4.0

Posted 10/27/2008 by PeterB, .NET Prog.

 

For those of you that are interested:

Microsoft Pre-release Software Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP)

http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&DisplayLang=en

Sorry for the short post, just trying to use PVR's Hassle-Free Blogging For Business Tips

Share:


PeterB

VS 2008 - Apply Cut or Copy Commands to blank lines when there is no selection

Posted 10/21/2008 by PeterB, .NET Prog.

 

Have you ever copied some code in order to place it on a new line, and then when you tried to paste it you hit CTRL-C instead of CTRL-V?  If you have, then you probably have dealt with the frustration of losing what was in your clipboard.  For most people this meant finding that code to once again copy it and then meticulously stare at the keyboard making sure that they hit the right key.

Well, there is one way to deal with this and that is using CTRL-SHIFT-V.  This shortcut key will allow you to cycle through your clipboard and get back that code you just lost.  If you hold CTRL-SHIFT while hitting 'V' you will begin to cycle through each element in your clipboard, probably starting with the new empty line you copied and then followed by the code you had intended to paste.  This is actually a very handy shortcut key that I also find useful outside of this scenario.

For those of you who would rather not deal with ever losing your clipboard to a blank line, well there is an option for you too.  If you go to Tools > Options > Text Editor > All Language > General you can uncheck "Apply Cut or Copy Commands to blank lines when there is no selection".  From here, you will no longer have to deal with the unfortunate mistype of copying a blank line.

I recently came across this and many other great tips at Sara Ford's Blog.  Within it you can find Visual Studio 2008 tips, which she publishes daily.  I would recommend to anyone using Visual Studio to definitely add this to their list of RSS Feeds if they have not done so already.

Share:


PeterV

The New iPhone: Great Gadget or Silent Killer?

Posted 8/26/2008 by PeterV, VP, Marketing

 

So the iPhone topped Stephen Colbert's latest ThreatDown, a list of the top five threats to America.  Why?  A kill switch.  Check out the video (skip ahead to 5:40):



As funny as that is, what's the deal there?  Seems a bit odd to me.  What started as a conspiracy theory has turned in to a legitimate "big brother" concern.  There is a ton off fallout on this among the blogosphere.  And now, there are tips out there for how to block the long arm of the apple law, like this one: http://www.iphonehacks.com/2008/08/bossprefs-fix.html

Share:


ccook

RockScroll - A Programmers Best Friend

Posted 8/22/2008 by ccook, .NET Prog

 

RockScroll has been introduced on Scott Hanselfman’s blog.  If you work with Visual Studio, this is a must.  I have found it to be one of my most used features of Visual Studio.  It keeps the ‘visual’ interpretation of even the largest of code files intact.  Check it out:

http://www.hanselman.com/blog/IntroducingRockScroll.aspx

Share:


PeterV

Looking for Amazing Web Hosting at a Discount?

Posted 7/22/2008 by PeterV, VP, Marketing

 

There are a ton of hosting shops out there, as I'm sure you're aware if you've ever search for hosting.  And, if you've ever chosen the cheapest, I'm sure you're also aware there are some fly-by-night shops.  Downtime, poor backups, bad customer service...you know what I'm saying.

As a developer, we've spent a ton of time looking at hosting.  We originally did it in house (in a room with wooden beams under the server rack and a fire sprinkler overhead...yeah) and then moved it to more capable firms.  Of the various shops we've worked with, and there have been tons, none comes close to Rackspace. 

At first we just sent Rackspace the high-end projects that were mission critical.  We figured they weren't competitive for smaller shared-hosting environments.  Shame on us!  Rackspace has become our go-to vendor now for hosting of all shapes and sizes, from a site with a few hundred users to sites with thousands of concurrent users across multiple boxes.

And now Rackspace is returning the favor.  They've setup a page where our customers can request pricing.  Those customers that come through our page will receive special pricing. 

So if you're in need, take a look.  It can't hurt, but it can certainly help!

Here's the page in question: http://www.rackspace.com/partners/solution_partners/index.php?partner_id=89

rackspace

Share:


ccook

Alt + Visual Studio

Posted 3/22/2008 by ccook, .NET Prog

 

You learn something new every day, but it’s not every day you learn something really useful. Alt in Visual Studio has to be one of the most useful text editing shortcuts I have come across since copy and paste (kudos to Mr. Evol). Alt allows you to select vertical regions of text, the usefulness of which I demonstrate below.
Say you would like to add the namespace using statements to a string builder within a new class, say Class1.

There are three namespaces so you can quickly create the three append lines.

Now one could copy each namespace individually, or, just select them all with Alt.


Copy that block and paste it into the first append to get

This demo’s code is of course useless, but the technique is invaluable.

Share:


ccook

SVN update clean?

Posted 3/21/2008 by ccook, .NET Prog

 

We recently moved our development from CVSNT to SVN, which has been working out great. The two are very similar, what was once done in CVS, can for the most part be done in SVN. For example an update in CVS and SVN are accomplished with:

cvs update
svn update

One useful flag for cvs update was –C, for a clean update. In a clean update the working copy is updated to match the current version. In SVN, an analogous flag is not available (or at least I cannot find it). There is a revert command available which will bring all of the versioned files to the previous revision, effectively an update clean, with exceptions. The extra files remain (new files), and any new changes on the server are not considered. The revert command simply rolls the versioned files back to what they were at the last update or checkout. In order to recreate the clean update in SVN, I decided to run revert, a manual cleanup and then an update. The first and last are trivial, but manually cleaning the new files out at the command line took some work and the solution is presented here.


Creating an update clean equivalent

SVN provides a status command which lists the files and their status within a working copy.

svn st --no-ignore

Now in order to find only the new files (indicated by ‘?’), the output is filtered with AWK. To do this the output from SVN is piped (redirected) to AWK. The parameters for AWK tell it to split the lines on ‘?’, remove some whitespace, then print the filename (second parameter) for all lines with ‘?’.

svn st --no-ignore | awk -F? "/?/ {gsub(/ /,"""""",$2);print $2}"

With the list of extra files in the pipe we simply need to delete them. Unfortunately ‘delete’ does not accept redirected output like ‘rm’ from UNIX, so I just quickly knocked one out. The source for rmp, written in c# is also included.

svn st --no-ignore | awk -F? "/?/ {gsub(/ /,"""""",$2);print $2}" | rmp

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

namespace rmparam

{

classProgram

{

staticvoid Main(string[] args)

{

string path = "";

if (args.Length == 1)

path = args[0];

Console.WriteLine(path);

string currentLine = Console.In.ReadLine();

while (currentLine != null)

{

Console.Out.WriteLine(path + currentLine);

if (String.IsNullOrEmpty(currentLine) == false)

File.Delete(path + currentLine);

currentLine = Console.In.ReadLine();

}

}

}

}

In order to resolve some path issues on the delete an optional parameter is available to set a base path to delete from.

svn st --no-ignore | awk -F? "/?/ {gsub(/ /,"""""",$2);print $2}" | rmparam "C:\PathToWorkingCopy\\"

The complete command set, which could easily be placed in a bat.

svn revert –R

svn st --no-ignore | awk -F? "/?/ {gsub(/ /,"""""",$2);print $2}" | rmparam "C:\PathToWorkingCopy\\"

svn update

I’m not happy with the dependence on the binary and fixed whitespace length, but it does work. Enjoy!

Share:


DanV

Disabling Browser Caching In C# and ASP.NET

Posted 3/12/2008 by DanV, Tech Dir.

 

The majority of advice on how to disable browser caching seems to revolve around how to make it work in IE.  However, in Firefox the fixes don't always seem to work.  Below are some notes and sample code on how to make it work for both browsers:

The SetNoStore() seems to be a necessity for FireFox
The HttpCacheability.NoCache has an issue in IE (not sure about FireFox) when you are on a secure (https) page and are trying to send a file by setting the headers. It causes the file download to not work properly.
SetValidUntilExpires(), SetRevalidation() – unsure if this is a requirement at this time. Was added because it was still giving problems in FireFox before SetNoStore() was found.
SetExpires() I tried to set this to 5 days in the past and I still got the 2 second window.


public static void DisablePageCaching()
{

//Used for disabling page caching
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();

}

Share:


Web Design Copyright ©2007 352 Media Group®.
The opinions expressed here do not necessarily reflect those of 352 Media Group.
All Rights Reserved.