Click here to Skip to main content
15,892,480 members

Jon Person - Professional Profile



Summary

    Blog RSS
43,196
Author
294
Authority
283
Debator
25
Organiser
1,179
Participant
0
Editor
0
Enquirer
Hi there! From 2004 to 2009 I ran a company called "GeoFrameworks," publishing two components called GPS.NET and GIS.NET which helped developers quickly write location-based services. Now, I've released the source code for GPS.NET to CodePlex for you to use as you see fit.

GPS.NET 2.0 on CodePlex
GPS.NET 3.0 on CodePlex

... I've also released the source code of a library called the "GeoFramework," a collection of commonly used classes such as Latitude, Longitude, Distance, Speed, and Position:

GeoFramework 1.0 on CodePlex
GeoFramework 2.0 on CodePlex

I'm now taking a break from programming, but I really appreciate the positive feedback from readers!
31 Dec 2004 CodeProject MVP 2005

Groups

Below is the list of groups in which the member is participating

Unknown

GeoFrameworks is a privately-held software design and development firm in Denver, Colorado, specializing in the creation of software components for Microsoft's .NET platform. Our products help developers vastly reduce their development time, save money, and quickly become experts with GPS and GIS technologies.



This is a Organisation
This member has Administrator, Manager, Author, Member status in this group

1 members

Reputation

Weekly Data. Recent events may not appear immediately. For information on Reputation please see the FAQ.

Privileges

Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege. The member types column lists member types who gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilver
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSubEditor, Mentor, Protector, Editor
Store personal files in your account areaplatinumplatinumSubEditor, Editor
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Edit a Question in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Edit an Answer in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Delete a Question in Q&AYesSubEditor, Protector, Editor
Delete an Answer in Q&AYesSubEditor, Protector, Editor
Report an ArticlesilversilversilversilverSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubEditor, Mentor, Protector, Editor
Edit other members' articlesSubEditor, Protector, Editor
Create an article without requiring moderationplatinumSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending QuestionProtector
Approve/Disapprove a pending AnswerProtector
Report a forum messagesilversilverbronzeProtector, Editor
Approve/Disapprove a pending Forum MessageProtector
Have the ability to send direct emails to members in the forumsProtector
Create a new tagsilversilversilversilver
Modify a tagsilversilversilversilver

Actions with a green tick can be performed by this member.


 
GeneralBetter Living Through Immutable Objects Pin
Jon Person14-Feb-05 13:22
Jon Person14-Feb-05 13:22 
GeneralSolving bad form validation with your own Parse method Pin
Jon Person14-Feb-05 13:20
Jon Person14-Feb-05 13:20 
Filling out forms on the web is one thing that makes me crave having a microchip in my forehead. I've been on three web sites this morning which have each required that I fill out a form. Thanks to the Google Toolbar "AutoFill" feature, this is really easy to do. However, in each of these forms, there were validation errors. One in particular made my blood boil for a few seconds:

ERROR: Please enter an area code without parenthesis.

Call me crazy, but wouldn't it have been easier to add code to remove the parenthesis than it would have been to raise the error?

AreaCode = AreaCodeTextBox.Text.Replace("(", "").Replace(")", "");

if(AreaCode.Text.Length != 3)
MessageBox.Show("ERROR: Please enter an area code without parenthesis.");

It seems that there are web developers out there (myself not immune) who are demanding that users type in absolutely perfect form data before they are allowed to proceed. This is bad practice and leads to a poor user experience because of human error. Phone numbers, social security numbers, names... all of these fields can be typed in different formats yet have the same meaning. Many times, a little bit of string parsing goes a long way. So, for myself and others, here's a friendly reminder:

Make a reasonable effort to anticipate varying data formats. This frequently involves the use of the Replace() and Trim() functions to reduce data to its simplest format. An error should be displayed to the user only if this reasonable effort fails.

... this rule is especially important in online order forms, where "closing the sale" as they say can make or break your company. I was once buying some software, and the order form gave me this astounding error:

ERROR: Credit card numbers may not contain spaces.

What on Earth? A sale brought to its knees by spaces? Once again, the code to fix the problem would have been less code than raising the error!

CreditCardNumber.Replace(" ", "") // ahem

I went back and completed the order, but I swear if it would have given me one more dumb error like that, I would have given up, and they would have missed out on the revenue. It's really just good sense to anticipate human errors in your user interfaces.

If you really want to get serious about this in terms of component, you might consider following the .NET framework technique of adding a static (Shared in Visual Basic) "Parse" method to your classes if they resemble simple value types. Your Parse method will be especially useful if it can handle whatever "ToString" can spit out. I've received a lot of great feedback from GPS.NET customers because the library uses this exact design -- Parse and ToString are designed to handle each other's output. This makes forms and other forms of I/O elegant:

// Make an instance of an object (in this case, an Azimuth)
Azimuth MyAzimuth = Azimuth.Empty;
// Use ToString to show the azimuth in a human-readable form
MyTextBox.Text = MyAzimuth.ToString();
// The user makes modifications, which must be interpreted
MyAzimuth = Azimuth.Parse(MyTextBox.Text);

public static Azimuth Parse(string value) {} // etc.

... if a user types an azimuth of "45.0" or " 45 " or "NE" or " NoRtHeAsT " in a TextBox, it all translates to the simplest meaning in the Parse method (a double of 45.0), and there's no form error. So, remember to anticipate human errors, reduce information to its most basic form when you're collecting it from forms, and consider incorporating "Parse" into your simple value types. This may net you some well-earned revenue as well as thanks from your users by sparing them from string parsing. My apologies for saying "string parsing" -- I will go wash my hands now.

GeneralRe: Solving bad form validation with your own Parse method Pin
jblewis2-May-05 8:57
jblewis2-May-05 8:57 
GeneralWhy the Equals Method Has Different Meanings in Value Types Versus Reference Types Pin
Jon Person14-Feb-05 13:19
Jon Person14-Feb-05 13:19 
GeneralWelcome! Pin
Jon Person14-Feb-05 13:19
Jon Person14-Feb-05 13:19 
QuestionRe: GIS article. Pin
Monomachus2-Nov-08 0:55
Monomachus2-Nov-08 0:55 
AnswerRe: GIS article. Pin
Jon Person6-Nov-08 9:42
Jon Person6-Nov-08 9:42 
GeneralRe: GIS article. Pin
Monomachus4-Dec-08 6:17
Monomachus4-Dec-08 6:17 
GeneralRe: GIS article. Pin
Shooker5610-Jun-10 9:15
Shooker5610-Jun-10 9:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.