Geocoding... Virtual Earth + Google Maps

Posted by John
on Monday, 29 October 2007

As most will know but some still contend against, the world is indeed round; and to track a point within said world we use a system of Latitude and Longitude; and maybe the odd Harrison watch.

Now for computer's it's a little more complex. System's like Google Earth and Virtual Earth use something called Geocodes.

Unlike Latitude and Longitude which operate with hours, minutes, seconds; Geocodes are point-mapped numerically to the location.

Now converting zipcodes to geocodes is simple but I've been looking around and apparently UK postcode -> geocodes aren't freely available due to Royal Mail wanting cash, but I may be wrong.

Here's some resources to get you started...

Links

Virtual Earth SDK

Nice VS.NET example

Pricey for the UK, supposedly

Google Maps API Blog

Google Maps Clickable Polys

Geocoding with Virtual Earth & Google Maps

Precise Map Pointing with Virtual Earth

OpenStreetMap

Finding things with Virtual Earth

Reading points and plotting with Virtual Earth

link + demo

Source...

Feeding Maps with GeoRSS

code breakdown

hurricane tracker

Geocoding Tools

Tuning Windows Vista...

Posted by John
on Friday, 26 October 2007

Well at my new job and have to say I'm lovin it, can't believe how lucky I was to land this position; team excellent, so proud!

However my new machine's running Vista so it's a little awkward getting .NET development kicking on it smoothly from XP. So here's some pointers to get fellow ASP.NET developers up & running...

Setting up IIS

IIS comes with Vista Business edition, but to enable it, do...

  • Goto Control Panel then Programs & Features
  • Click Turn Windows Features on or off
  • Wait...
  • Tick Internet Information Services
  • Click *OK*... done.

Startup Items

To change what programs are launched at startup, do...

  • Click the Start button on the Vista Taskbar
  • In the Start Search box type System Configuration
  • Vista should do live search and have the System Configuration program at the top of the list
  • Click it.

Once it has opened up, click the Startup tab to configure what things run on machine start-up.

Things you don't need

  • Windows Defender that can be replaced by a lower memory-footprint app called Spybot Search & Destroy. So untick that to stop it hogging resources and install S&D (note: when installing S&D make sure you say yes about installing it's resident checkers, good tools).

  • MsnMsgr (aka. msn messenger) you can also untick, if you don't ever use it, Skype is so much better.

  • AcroTray (adobe acrobat distiller helper), untick if you hardly ever use it.

  • Office Startup Helper (not sure about the name of this one but know ms office comes with one), not needed if you hardly ever use office in your day-to-day life.

Disabling UAE

Although dangerous as it allows the usual user to run As Adminstrator (a thing which all this security was introduced to prevent as running as admin was allowed in xp, etc, and incurred user's installing bogus viral programs), you can disable it.

To disable this, if you really really want to,

  • Click the Vista Start button
  • Type Local Security Policy in the Search box and click when the app appears
  • When asked to allow it to open, say yes
  • Select Security Settings \ Local Policy \ Security Options
  • Scroll down the list until you get to the ones called User Account Control

From here you can set the kind of behaviour Vista will perform based on certain user actions (e.g. install software, browse network, etc.)

ASP.NET Guides

Posted by John
on Thursday, 25 October 2007

While hunting around for a new ASP.NET AJAX book I ran into these two excellent posts.

Good stuff, well done guys!

IronRuby (aka Ruby for .NET)

Posted by John
on Tuesday, 02 October 2007

With all the talk about this hot new language it seems only right that Microsoft has moved their focus over to the opensource arena with the impending release of IronRuby.

What this is in a nutshell is a plugin to Visual Studio 2005 that allows users to develop Ruby Apps within the VS.NET Dynamic Language Runtime.

They did this a while back with the release of IronPython (Python on .NET), but this is one developer who really hopes the impending Orcas release of Visual Studio has this beauty firmly tied in.

Fingers crossed,

C# Crib Sheet

Posted by John
on Sunday, 05 August 2007

string b = @"hello
p. stuff"

@ means string must be displayed like written, on two lines


Arithmetic Overflow

checked(b2)
p. unchecked(b2)

checked = means expression ‘b2’ value does not exceed type


b2?

+++b2 b2+++

>= <= == != ++

end lines with ;


if (b2 == b3)

{ code }

else if (b2 > b3)

{ code }


switch(x) {

case 1:

——;

break;

default:

——;

break;

}


while (b2 = 2) { b2++; }


do i++ while (i<5);


for (int i=0l i<0 i++) { }


foreach (Stick stick in dynamite) { stick++; }


return b2;

return = return value / object to calling code;


namespace mycompany.myproduct.drawing { }

namespace = enables you to group related types into a hierarchical categorization


inheritance

class URL : Location { // }

: <= allows URL to inherit the methods of the Location class


polymorphism = ability to perform same operation on many types

virtual function members = each type can implement a shared characteristic in it’s own way. implements shared characteristic / method in it’s own way


abstract class = shell of a class, no implementation, cannot use directly, have inherit / build upon

abstract class Location { public abstract void Launch(); }

class URL : Location { public override void Launch() {} }

override = override inherited classes methods, in this example i’m using an abstract class as a sort of template for something new


public new void Foo() {}

new = hides method from outside class


public = type / members fully accessible

internal = type / members accessible only from within

private = type / member accessible only from within

protected = cannot modify, class available within class


difference between classes & structs ?

class = fully supports inheritance, reference types, can have destructor, can have custom parameterless constructor

struct = simple, value types, can have constructor


instance = (default), associated with an instance of a type

static = associated with a type itself

public static void Me() { }


public const double PI = 3.141

const = constant, always uppercase


ref = pass by reference, change value of variable given permanently

static void Foo(ref int p) { ++p; }


params = allows method to accept any number of parameters

static int Add(params int[] iarr) { foreach (int i in iarr) {…} }


constructor = specify how new instances of a class get created, what variables get initialised with, etc.

class wow { public wow() : this(5) {}

make method same name as class to do this, here we’re self-referencing the class using the ‘this’ keyword, returning 5 to the calling class

static constructors = can define only one static constructor


destructor = specify how instances of a class get destroyed, connections get closed, etc.

class wow { ~wow() { console.writeline(“boom”); } }

~ defines a destructor, plus make it the same name as the class, here writing ‘boom’ to the console when the class is destroyed


this = self-referencing, denotes a variable that is a reference to a instance, allows members to reference own class

public dude(string name) { this.name = name; }
p. public void hi(dude a) { if a!=this) {..} }

a common use of ‘this’ is to unambiguate a field name from a parameter name.

e.g. = self-reference the current class instance

JAVA

  1. class Numbers {
  2. private int aNumber = 42;
  3. public int returnANumber()
  4. {
  5. return this.aNumber;
  6. }
  7. public int returnANumber(int intIn)
  8. {
  9. return (intIn * this.returnANumber());
  10. }
    #
  11. public static void main(String[] args) {
    #
  12. Numbers numberTest = new Numbers();
  13. System.out.println("The Number is " +
  14. numberTest.returnANumber() );
  15. //output is: The Number is 42
  16. System.out.println("The Number is " +
  17. numberTest.returnANumber(2) );
  18. //output is: The Number is 84
  19. }
  20. }

see how the above example works, a variable is defined inside the class, a method is defined for when no parameters are given assigning it 42. when parameters are given it runs a different method multiplying 42 with the number given. however it’s referencing (can modify directly & permanetly) the value inside it’s own class.

also in JAVA,
p. super.getName(a); = use super. to call methods in the parent class


base = similar to ‘this’, except that it accesses overridden or hidden base-class function members

basically allows you to call the original function of a class before it got replaced by one with the same name / overridden

base.Introduce(p);


interfaces = like a pure abstract class, but provides a spec rather than implementation of it’s members

public interface Me { void Delete(); }

here no code is written, just a function is defined, which when inherited by another class (using : ) can then be coded.

basically a template class, an empty shell


arrays

char[] vowels = new char[] (‘a’, ‘e’);
p. console.writeline(vowels[ 2 ]);

multidimensional arrays

int [][][] matrix = new int 3[][];
p. matrix[x][y][z] = new int 5;

= vowels.Length;
= matrix.GetLength(2)


enums = specify a group of named numeric constants


events

get { return pos; }
set { r = 44; }


try { }
p. catch { }

finally { }

basically you try something risky, you catch any error codes and then you finally clear up your mess


ArrayList = dynamically sized array of objects that implement the IList interface

HashTable = standard dictionary layout (key/value)


StringBuilder class

can grow unbound or upto a pre-defined maximum, much better than just concatenating a string.

it starts at a pre-defined size and grows dynamically as more string data is added.

StringBuilder sb = new StringBuilder(‘hello ’);

sb.Append(’world’);

sb12 = ‘!’;

console.writeline(sb); // hello world


// = comments