text:
Global Map Download Tool

http://www.dcemu.co.uk/vbulletin/showthread.php?t=33068

http://www.in7ane.com/psp/

Requires Microsoft .NET 2 from http://www.microsoft.com/downloads/

Unpack the gmdlXX.zip file and navigate to /bin/Debug subfolder

Google (and Local.Live) Maps Download is a replacement/supplement for the cygwin scripts originally included with Map This! it supports downloading map tiles from a variety of sources, as well as creating compatible tiles from custom maps. It also allows downloading and import of POI (Point Of Interest) and directions to be used with Map This!

Manuals
Spanish: http://beta.pesepe.com/?q=node/8917

English: http://www.dcemu.co.uk/vbulletin/showthread.php?t=60230

Thanks to outsider for doing these.

Video Manual
I'm going to make an attempt at creating a video manual to show how the app works (mp4 videos created by Snapz Pro X, playable with Quick Time or VLC - videolan.org):

Downloading a map of LA with US GeoData (5:20 11.5 MB): http://www.in7ane.com/psp/manual/la_map.mov

(note: OpenStreetMap.org is used as the source - do NOT post videos of Google, VE, etc. being used as sources (USGS is fine), part of the area is deselected - that area is not downloaded at closer zoom levels to save space).

Toporama (Canadian topographic maps)
GMDL prior to 0.4.17a from 22-Jun-2007 only worked with MapCruncher 3.0.2, so redownload it to use with later versions

Downloading a Canadian topographic map with MapCruncher automatically rendering it: http://www.in7ane.com/psp/manual/toporama.mov

Note: probably best to try it on a small map first.

1. Install MapCruncher ( http://research.microsoft.com/mapcruncher/ )

2. Specify a map name at the top of GMDL

3. Select Canadian Toporama as the Map Source in GMDL, read and click OK on the message box

4. Navigate to your desired area (test using Preview 1x and 2x)

6. Click 800x800 tile to MC.yum and click Yes to render automatically

7. Wait, the images are being downloaded

8. MapCruncher will pop up and render - it will show progress, while GMDL will be unresponsive

9. GMDL will come back into focus, build the GPSFS files (showing progress), and say that GPSFS is done (the GPSFS is in _map_name you specified, copy it to your PSP, _map_name_MC_rendered contained the rendered tiles, you can delete it, _map_name_source contains the source images, you can also delete it)

Important notes that haven't been placed anywhere else
In Gimp: image > mode > RGB if transparency problems on save

YUM Assembler: alt lat is only for the bottom row images

Custom geodata: it's searchable as street

Version History
0.5.15

Galileo (iOS app) 2.0.1 map export fix

0.5.14 - not dead yet

Galileo (iOS app) map and POI export

MBTiles map export (tested on http://developmentseed.org/blog/2010/oct/02/maps-stick-version-2-released/ not tested on the iOS app)

probably some other updates/fixes, since it has been a very long time since a release

0.5.13

Kosmsnimki in the process of being fixed

New custom sources and browser being worked on

x64 support (replace System.Data.SQLite.DLL in the Debug directory with the one from the "x64 SQLite" directory)

Google Maps Terrain fixed again (Mar 23, 2010)

Random tile delay (optional, on average 0.075sec)

More informative progress message (time remaining, tiles missed, updates when done)

Detail selection screen improvements (button to uncheck all, number of tiles)

Export of Transit Maps (iPhone app) compatible tiles from the View screen

Google Transparent source (just the streets part of hybrid, useful for Google Earth overlays (note: GPSFStileserver keys on the map directory having "transp" in its name for non-overlapping display))

Separate app: GPSFStileserver 0.3a (an http-server to serve GPSFS files as tiles and KML for Google Earth overlays) on http://www.in7ane.com/psp/

0.5.12

Confirmed as working with iPhone firmware 3.0.1 (make sure you click copy in, and use OfflineMaps_3.0_PREVIEW_iphoneos-arm.deb, move the map a bit if tiles do not load right away)

Google Maps Terrain (and others) fixed

binhusc's geodata changes from the 0.5.10b mod (southern hemisphere)

0.5.11

Google Maps fixed as a source (map, hybrid, China, MapMaker)

Output to iPhone fixed (hybrid and sat now work again) - nothing done for OS 3.0 yet

0.5.10

iPhone screen can now convert maps to xGPS format - works with 1.2.7 - choose the (new) option

Goole Maps fixed once again (including for China)

0.5.09

Yet another fix for a change in the format used by Google

Google Map Maker added as a source

Kosmosnimki fixed as a source

Canadian Toporama fixed as a source (and now uses 2000x2000 tiles which is faster)

MapCruncher fixed as a source for small maps (when 1/2/3/4 . jpg/png was missing)

iPhone firmware 2.2 compatible (tile size change from 64x64 to 128x128)

0.5.08

Another fix for a change in the format used by Google

0.5.07

gps.txt (GPS path recorded by Map This!) can now be read in (Direction tab) and saved as a POI file for use with Map This! or as a KML file for Google Earth

Fix for a change in the zoom numbering used by Google

0.5.06

Resume functionality (previously broken by the addition of FreeMap.co.il) is now fixed

Costa Rica (crmap.com) added as a source

Google now has the English version of the map as the default (switch back to local language by unchecking en)

Save 8192x8192 Tiles, in View, now have x&y swapped (for convenience)

0.5.05

maps.yahoo.com is now partially supported (US - native 256x256 instead of 258x258, all works except for overlay)

Export to iPhone (SQLite 64x64 tile DB), pretty much done now, imports pins from KML, may add directions later; see: http://www.hackint0sh.org/forum/showthread.php?t=22320

Basic resume functionality, resume.txt stores: source, zoom, x, y, min_zoom, force_jpeg (create a map and read resume.txt for instructions)

POI now has a Limit: setting (100 by default) since Google seems to disregard area constraints

FreeMap.co.il is added (not really GPS compatible, but roughly in the correct map area)

Start of vector data - it's in the code - nothing works yet

0.5.04

Update in line with google maps page changes

Fixes a user-agent problem that seems to be caused by a recent windows/i.e. update

0.5.03

City names in geodata are now no longer padded with spaces

Google Terrain added as a source (fixes the problem with the terrain layer becoming the default)

A problem with the GPSFS viewer fixed (would crash on loading under certain conditions)

0.5.02

directions_translation.txt replace is now case insensitive thanks to dloading

YUM Assembler fix (, to .)

Custom CSV geodata now handles 3.583.333 as a decimal format (to 3.583333)

Pull and merge non 256x256 tiles (for use in MapCruncher) -> then YUM then Tile Level Pull Merge: http://www.in7ane.com/psp/posts/TileLevelPullMerge.png note: rendering large (30k x 40k) images takes days in MapCruncher, on a dual 3GHz Xeon with 2GB of RAM, due to scaling

Canadian Toporama no longer asks to set higher spans as MapCruncher (3.1.3) under .NET 3 seems to handle large (within reason) YUM files without problems (may be slow - just wait)

MapCruncher will now render JPEG tiles directly (from YUM Assembler and Canadian Toporama), greatly reducing the amount of space required (note - the JPEG checkbox needs to be checked/not checked throughout)

Ability to stop the download of Google geodata (creates geodata.dat out of what downloaded)

CSV to geodata.dat - option to supply your own zip codes, in the first column (will add states later)

All (including Tile Level Pull Merge) downloaded tiles are now checked (loaded as a bitmap) - this addresses 404/error pages that did not throw an error before

Google layer version numbers are now set on startup once again (I think something changed somewhere - wasn't really a problem, but fixed now)

New Canadian geodata statcan_rnf_v3 that may fill in some gaps (L and R ranges are now split up) - this is a minor change

Google (semi-auto) geodata with a local cache is in - there will probably be some fixes after somebody tests it (e.g. http://www.in7ane.com/psp/posts/ggeo_semiauto.png )

http://new.kosmosnimki.ru is now a source - but not GPS compatible (6m resolution instead of Google's 15 and 25m for parts of Russia e.g. http://www.in7ane.com/psp/posts/kosmosnimki_comp.png )

Downloading tiles in random order is now an option (Rnd checkbox under Advanced)

Updates are now fed from http://www.in7ane.com/psp/gmdl.html (which redirects to the latest zip) providing a permanent link

Icons swapped to comply with Map This 0.5.20 changes

0.5.01

Warns if can't find sounds.txt and icons

UK postcode geodata is fixed (single zip center was falling outside of the map area, it's now split by the first part of the postcode), temporary note: keep Street 1 checked and search for 1 post code (e.g. 1 EC4Y) to bypass the wide search reset bug in Map This! on subsequent searches

Note on the Google direction's dislike of pedestrian streets (also affects Nieko's web interface)

Ability to set the cookie from the web browser

The 4x zoom and area selection screen now has a size estimate based on the loaded tiles, allows deselection of 1x and shows an estimate of the map/layer sizes

directions_translation.txt for translating the part of directions that's in English (sounds.txt is applied before this)

Geodata from querying Google (all street numbers are 1) that seems to work with international encodings (please provide feedback)

0.5.00

Layout fixes (anchoring, map sources in tabs with translation.txt present)

YUM Assembler fixes (CSV changes, ; delimited CSVs - no ; in file names though, actual image counts) - now with a manual: http://www.in7ane.com/psp/manual/YUM_Assembler.pdf

Disabled the default copying of icons and sounds, and synced up the ones bundled with GMDL

Sloppy interface fixes - thanks zsc

WMS/NASA error handling fixed (failed tiles remained with the text error message)

Google Hybrid is a single option again (underneath it works the same, just an interface change)

New USGS TIGER geodata, now covering all states, you can delete C:/GMDL/usgs_tiger (usgs_tiger_v2 is now used)

0.4.17

Fully decoded Swedish geodata

Google directions option to avoid highways (multistage, and manually dragged directions work as well)

Toporama auto render now uses the latest version of MapCruncher, and allows to specify a drive other than C to look for it

Option to convert tiles to JPEG while downloading (but you are much better off using GPSFS_util by MIB.42)

Sounds are on by default (directions), see .zip in GMDL for mac scripts to create message mp3s

Custom geodata (from a CSV file), now with ; delimiter support

YUM Assembler for MapCruncher (contact me if you want a walkthrough) - see: http://www.in7ane.com/psp/posts/yum_assembler.jpg

Option to save directions at various encodings and UPPERCASE (e.g. Default and UPPER for the Russian Map This!)

Changes to keep up to date with the maps.live.com update

Saving to a different location
If you do not put in the map/POI/directions name the set/save dialog box will now appear (allowing to save directly to the memory stick for example).

In 0.2.14a there was a bug that prevented saving to an existing/created directory, this is fixed as of 0.2.15a so you can now:

 * specify a directory that does not exist - it will be created

 * choose an empty existing directory

 * create a directory (via the Make New Folder button in the Browse For Folder dialog box)

Creating a POI File
Click on the POI tab

Local.Live/Google/Yahoo
1. Enter your search term into the Search for: text box

2. Navigate the map to your desired area (you can use the Search Maps)

3. Move the map around a bit

4. Click "Get Numbers" and make sure Lat/Lon/S text boxes get populated

5. Click the Local.Live/Google/Yahoo radio button (if Google, choose relevant google.com/.co.uk/etc.)

6. Click "List" and make sure the datagrid is populated with your POIs

7. Enter a file name, starting with _, into the Save POI (start with _): text box

8. Click Save POI (start with _):

9. The file will be created in the same directory as the application, place it into the corresponding map folder

Directions that follow the roads
Directions from Google now have the distance remaining to next way-point, and remove excessive path points (so you can have a long road mapped out without ending up with thousands of POIs).

1. Click on the Directions tab

2. Check the Google radio button

3. Check the Create intermittent every: check box

4. Either select a zoom level from the drop down list or enter the value by hand on the right (0.0001)

5. Enter From:/To: or search for the directions and click Get Values

6. Click List, make sure you get less than 400 POIs, else increase the intermittent value and repeat this step

7. Click Save POI (start with_):

8. Place the resulting file into the corresponding map folder

Translation
to load:

drop translation.txt into the application directory

run the application

German
0.4.0b courtesy of nforce100

older

0.4.0b (older) courtesy of nforce100

0.2.15a courtesy of nforce100

Format of translation.txt
works as follows:

to create:

click Generate translation.txt

edit the translation.txt file, the format is as follows:

FORM_NAME.CONTROL_NAME(ORIGINAL_TEXT)=TRANSLATED_T EXT

ORIGINAL_TEXT is just there for your information, but does need to be there for the file to work, = is fine

lines without TRANSLATED_TEXT are fine - they are ignored

sample file:

GMdl.size(w)=

GMdl.UserMode(Advanced)=Other Options

to save after load:

move translation.txt out of the application directory

click Generate translation.txt

translated values are preserved

new/missing controls are added - this is so that you can upgrade your translation.txt files

What doesn't translate: dialog boxes and other forms - will be in the next version

The short answer:
Writing for Windows was a decision based on the maximum number of people being able to run the application (while it is possible to run Windows applications on Mac/Linux using Wine/emulation/virtualisation the reverse is not the case unless you run an alternative OS in a virtual machine).

The long answer:
I looked at having a version written on Objective-C for mac at the start, and at porting using Mono more recently. Maintaining two branches - one in ObjC and one in C# would not have worked, while transitioning to Mono is something I would still like to do (this is not going to happen any time soon) - once the code becomes stable.

In the meantime - it is not only the exe - the full (Visual Studio 2005 C#) source code is there if anyone wants to begin porting it.

If you just want to run it - it works fine under Parallels and Windows XP SP2 on an Intel mac, and I would imagine you would also get reasonable performance under emulation in VirtualPC (there is not really anything processor intensive).

As for working under Wine (already out for Intel Macs as well), and maybe http://darwine.opendarwin.org/ on PPC - I'd appreciate any reports on if it does. (No, it doesn't!)

Creating a Custom Map (MapCruncher)
1. Align and render your map with MapCruncher ( http://research.microsoft.com/mapcruncher/ ) which has quite a comprehensive manual.

2. Launch GMDL and select MapCruncher as the Map Source

3. Click Set next to that and select the directory containing the tiles (Layer_NewLayer by default)

4. Read the informative message box (main part is that you click Pull Tiles under Advanced rather than Download The Map)

Creating a Custom Map (old)
1. Click Advanced

2. Click Custom Map

Simple (without coordinates)
3. You need to have a source PNG file (without transparency)

4. Click Load Any PNG

5. Select your image file

6. Once it loads (you can see a close up by clicking on the image, click on zoomed in to close)

7. Specify/create the map directory via Set Dir or it will create one with the automatic name in the application directory

8. Click Save Tiles

9. Message box will tell you when it's done, then move the map directory to your memory stick

Repairing an Existing Map Directory
1. Click Advanced

2. You need to know and specify zoom, x, y (these are not the ones in coords.txt), min zoom (this is in coords.txt), and set w and h to 2

3. Click Set Dir and choose the map directory

4. You need to have the map tiles in plain (non GPSFS) form, so, if needed, extract using <-GPSFS and move the contents of GPSFS_Extracted to the map directory, delete GPSFS_Extracted and GPSFS through GPSFS4

5. Check Repair Existing Directory

6. Click Pull Files and the missing tiles (and coords.txt) will be created followed by the GPSFS conversion

7. Note: Checking Trigger Map Abort will not delete the map directory if Repair Existing Directory is checked

Moon & Mars
As of redownloading 0.4.0b in January 2007 or later

Navigate in earth equivalent and use preview or, in Advanced, just set x,y to 0,0 and zoom to 16 to the min you want.

Mars

elevation 16 to 9

http://kh.google.com/movl?ov=52&t=ttrr

visible 16 to 8

http://kh.google.com/movl?ov=50&t=ttqq

infrared 16 to 8

http://kh.google.com/movl?ov=51&t=ttqr

Moon 16 to 11 (10- is cheese)

http://moon.google.com/kh?v=2&t=tqrt

(careful - it's cheese all the way down)

16,0,0,11 is cheese free

Note to self: need (diff) sat test?

sounds.txt
Place your sound files into the sounds directory named as following: message00N.mp3 (message001.mp3 ... message999.mp3), note that the mp3s need to be over one second (you may want to test them on your PSP first).

sounds.txt is a CSV that has the message number followed by the words it corresponds to.

the first line will be used for waypoints that do not correspond to anything else (but not for MIDPOINTS).

sounds.txt is read sequentially, so if you have 4,left then 5,left message005.mp3 will get used for directions containing left.

it is not indexed, so 4,left then 4,gauche is valid.

Note: you'll have to copy the message00N.mp3s to old map directories manually, and obviously any directions files will have to be rerun.

Working
Whatever is in GMDL, pretty much anything that matches the google tile projection, see: http://mapki.com/wiki/Satellite_Tile_Layout (something like that, except with x,y,z addressing)

MapABC (the map source used by google.cn) seems to be significantly offset from Google Earth (this may be due to a different projection/grid in China, that was not converted correctly). http://www.in7ane.com/psp/posts/MapABC.kml

Custom maps via specifying the URL with parameters
http://www.stanford.edu/hpcgi/map/index.pl

http://www.stanford.edu/dept/ucomm/map/tiles/base_$x$_$y$_$17-z$.png

http://research.microsoft.com/mapcruncher/Gallery/NWBike/

http://s3.amazonaws.com/MapCruncher/WashingtonBikeV4/Layer_MostMaps/$0123$.png

(there are a few more overlays at http://research.microsoft.com/mapcruncher/Gallery/ )

Requests
Note: if you have found an online map that you think may be usable, add it here

www.maps.az Map of Baku city, Azerbaijan. No alternatives on the web at all! Please add this map

www.multimap.com

http://www.geolabels.com

Tiles are compatible, URL looks reasonably straight forward

http://map.ivolga.ru/saratov/?m=8&dx=8960&dy=11270

Not GPS compatible but could be manipulated into giving 256x256 tile stack

http://ivolga.ru/cgi-bin/map.cgi?id=3&xs=256&ys=256&m=8&dx=8960&dy=11270&fs=8

www.apontador.com.br

More precise source for Brazil

Not Working
Note: please give a reason (e.g. sample tiles that do not coincide)

http://kart.sesam.no/

Projection not compatible

http://www.comfort.kiev.ua/spravka/map/odessa.php

Projection not compatible, tile addressing is a two part system

http://rmt.vnetgis.com/?map=odesa&uamap_cuid=cm46a5bf3db2d41&log=0&rq=get_map&l=ru&st=19

uamap_cuid=cm46a5bf3db2d41 -- session id that requests map

st=19 -- number of map requested

http://map.bigmir.net/kharkov/

Projection not compatible, tile addressing is a two part system (same as http://www.comfort.kiev.ua/spravka/map/odessa.php above)

http://rmt.a.vnetgis.com/?uamap_cuid=46a5c04166d70&map=kharkov&rq=get_map&st=3

http://mapy.cz

Incompatible tile projection (256x256 tiles so could pull non-gps)

Not true anymore. Czech developer Kexik has already managed to create a modified version of GMDL + updated MapViewer http://kexik.7thsquad.com/index.php?entry=entry070906-221310

http://mapserver.mapy.cz/base/10_7ec0000_8180000

http://mt3.google.com/mt?n=404&v=w2.56&x=2212&y=1387&zoom=5

http://mt3.google.com/mt?n=404&v=w2.56&x=1106&y=693&zoom=6

http://mapa.targeo.pl

200x200 tiles

incompatible projection

http://mt2.google.com/mt?n=404&x=34&y=20&zoom=11

http://m0.targeo.pl/Tile.html?i=0&z=9&PHPSESSID=ab7a3d1980963e7cb6be2518418bd276&tmk=TargeoMap&k=ODY2NzI1YjgzOWFlMWM4YjM5Zjc2N2U5MTAzNjY1Y2Q5MTE2ODA0NQ==&vn=1_5

http://www.trafficnet.nl

Map is rendered on request as a 500x500 image

http://www.reperion.com

Can't find the map

Garmin

As far as I know the maps are stored in vector form, and there is no way to export them as a single image

http://www.map24.com

Vector Java based maps

Non-Java version ( http://www.map24.com/businessMap24/index.php?mid=BME000094072&maptype=reload&offset=10&&action=EAST, right? ) does not have compatible tiles (not even square)

http://www.freemap.co.il/map

Incompatible tile projection

http://mt3.google.com/mt?n=404&x=76&y=51&zoom=10

http://www.freemap.co.il/map/tile.php?map=israel&t=-3584&l=3584&s=3000000&g=all&i=png24

http://www.hvor.no

Incompatible tile projection, watermarked when accessed directly (referrer/session id check?)

http://mt1.google.com/mt?n=404&x=16&y=9&zoom=12

http://webcache.gisline.no/?x1=0&y1=6291456&z=524288&s=0&l=2

http://www.streetdirectory.com

Incompatible tile projection

Pre-rendered 430px ? 555px maps

http://www.viamichelin.com

Incompatible tile projection, encoded URLs

http://mt0.google.com/mt?n=404&x=7&y=5&zoom=13

http://m1.viamichelin.com/mapsgene/dm/mapdirect;d29oXzAwNDVtX3IwMg==;MDAwMDAwMDAwNTAwMDAwMDAwMDc=

Mac How

http://www.geothrottle.com

Incompatible tile projection

http://r2.ortho.tiles.virtualearth.net/tiles/r132232022.png?g=66

http://www.geothrottle.com/mapguide/mapagent/mapagent.fcgi?OPERATION=GETTILEIMAGE&VERSION=1.0.0&SESSION=01bb6d3e-0000-1000-8001-001422fec144_en&MAPNAME=Malsing_v2&BASEMAPLAYERGROUPNAME=Base%20Layer%20Group&TILECOL=1&TILEROW=3&SC=8

GMDT's map data incompatible with xGPS on iPhone - fixed as of 0.5.10b (but may break if xGPS changes its database format again)

Hardware: iphone 3G/16Gb/international/jailbreaked

Software: xGPS 1.2.7

xGPS force quit to sprinboard when loading map data

= GeoData.DAT =

As of GMDL 0.4.4b the GeoData creation app is now part of GMDL, requiring pre-processed USGS TIGER or StatCan RNF files, a full set (550MB or 30MB) of which can be downloaded from http://www.in7ane.com/psp/mirrors.html

USA
Covered via USGS TIGER.

Canada
On version 2.

Covered via StatCan RNF and NRC GNSS.

Sweden
Appears to be done as of GMDL 0.4.17a on July 1, 2007 - I would really appreciate some bug reports on this though.

You will need the .PBA files and lktab.txt if you want city names (101 files all together) - more details on that in the app.

1. Open GMDL

2. Click GeoData

3. Select the Sweden (PBA) tab

4. Set the directory containing the .PBA and the lktab.txt files

5. Click Process

6. Wait, and it will tell you where the geodata.dat was generated, place that into your map directory on the PSP

Where to get the files (once you got the Kartex app)

PBA files can be found on the Kartex CD:

Kartex\Tatorter\CITY NAME\CITY NAME.pba

It is probably a good idea to just search for *.pba and copy all 100 of them into a directory.

lktab.txt gets created after you install Kartex, and can be found in [C:\Program Files\ I think] Stadkart\lktab.txt

Technical notes:

The PBA files have RT90 coordinates (converted to lat lon via PROJ.4 in GMDL), however within the PBA files the coordinate data is mixed with some sort of index (looks like they wanted to get an even spread, probably due to the search algorithm that they are using). The format is roughly ENCODED.#CODE where ENCODED is the encoded RT90, # is redundant, and CODE is a code that translates into a DIVISOR to get RT90:

x: RT90 = 6098185 + ENCODED * 2 / DIVISOR y: RT90 = 1098185 + ENCODED * 2 / DIVISOR

DIVISOR can be generated by using 4 (probably less, but will take longer, scan i up to 2000 for the 4 seeds below) seeds, as following: seed_code * i, take the last 3 digits, if they match the code, make a note of i, seed_divisor * i, take the last 3 digits - that's the divisor.

seed_code   seed_divisor 374         2 61           3 435          5 809          7

UK
Postcodes only, from various public sources, semi abandoned at this point.

Custom
Appears to be done as of GMDL 0.4.17a on July 3, 2007 - I would really appreciate some bug reports on this though.

Get your data into a CSV with the following format (with column names by default, or you can uncheck that in GMDL):

Mandatory (this is so you can convert the same CSV into a POI file):

lon,lat,name

Optional (extra columns, after city, are ignored for POI conversion):

lon,lat,name,city (description),min number,max number

Note: city (description) is what the geodata file will be segmented by (it should be a geographical area, it is fine being the same for all rows if you have a reasonably small set), if it's not specified rounded lat/lon will be used

'''Note: If your CSV is delimited by ; instead of, (e.g. if the decimal point is a decimal coma, like in French, German, Russian, etc.) check the CSV is delimited by ;... checkbox'''

For example (the NZ txt extract), open Excel, open the txt, leave the import on Delimited, with Tab, and Finish, select all cells except the header row, and sort AtoZ (this eliminates the empty rows). Re-arrange the columns as follows: LONG, LAT, FULL_NAME and delete the others. Save-as a csv (Yes to keeping in the CSV format).

Open GMDL, click GeoData, select the Custom (CSV) tab, set the file and click process, place the resulting geodata.dat into your map directory.

Sample source: http://earth-info.nga.mil/gns/html/cntry_files.html

Creating GeoData.DAT for an existing map
1) Click GeoData (top left) 2) Select the StatCan RNF tab if you are adding Canadian geodata 3) Click 1/3 - Select map and select the map 4) Click 2/3 - Select for map 5) Click 3/3 - Save geodata.dat 6) Wait, and that's it.

title: Global Map Download Tool


text:
Futurebasic/Language/Reference/autoclip

Statement
✔ Appearance ✔  Standard  χ Console

Syntax
autoclip [=] booleanExpr

Description
If  evaluates as "false" (zero), this statement turns off the "autoclip" flag for the current output window. If  evaluates as "true" (nonzero), this statement turns on the "autoclip" flag for the current output window, unless the window was created with the   attribute.

If a window's autoclip flag is "on," things like buttons, edit fields and picture fields are excluded from the window's "clipping region." This exclusion means that such object are "protected"—drawing commands won't draw over such areas, and the  command won't erase them. While leaving autoclip "on" is normally a good idea, it can slow down the execution of drawing commands, especially on older Macs.

Any FB window will have its autoclip flag "on" at the time it's created, unless the  attribute is set in the   statement that creates it.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Futurebasic/Language/Reference/autoclip


text:
Futurebasic/Language/Reference/beep

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
beep

Description
This statement produces a system beep as defined by the Sound control panel. Useful for alerting the user that the application needs attention.

Example
for count = 1 to 5 beep  'exciting five-beep mono-melody next

title: Futurebasic/Language/Reference/beep


text:
Futurebasic/Language/Reference/begin enum

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
begin enum [start [,inc]] _constName1 [= staticExpression1] _constName2 [= staticExpression2] _constName3 [= staticExpression3] _constName4 [= staticExpression4] end enum

Description
This statement begins a block of "enumerated constant" definition lines. The block must be terminated with the  statement. All of the constants defined in this block are global, regardless of where in the program the block appears.

The  block is "non-executable," which implies that it won't be repeated or skipped if it appears within any kind of "conditional execution" block, such as ,  ,  , etc. (but it can be conditionally included or excluded if it appears inside a   block).

Each  represents a symbolic constant name that has not previously been defined, and each   represents an integer expression which consists only of:  integer literal constants; previously-defined symbolic constant names; operators (like +, -, *, /, >, =); parentheses  (In particular, it can't contain variables, nor function references.) The  block assigns values to each of the   symbolic constants as follows:  If the  is followed by , then   is assigned the value of  ; If the  is not followed by , then   is assigned the value of the   in the line above it, plus the value of  ; If the very first  is not followed by , then it's assigned the value of.  The  and   parameters, if included, must each be a static integer expression. The default value of  is 0, and the default value of   is 1.

Example
In the following, the dwarves are assigned values of 1 through 7;  is assigned the value 100, and   is assigned the value 101. begin enum 1 _docDwarf _sneezy _grumpy _sleepy _dopey _happy _bashful _snowWhite = 100 _thePrince end enum


text:
Futurebasic/Language/Reference/begin globals

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
begin globals [statements including variable declarations] end globals

Description
The  and   statements indicate the beginning and end, respectively, of a section of global variable declarations. A global variable is one which is "visible" to all parts of the program: that is, it maintains its value when local function are entered or exited. By judicious placement of  statements, you can also create variables which are considered "global" to some local functions but not to others.

and  are "non-executable" statements, so you can't change their effect by putting them inside a conditional execution structure such as. However, you can conditionally include or exclude them from the program by putting them inside a  block.

You may include any number of  pairs in your program, although typically global variables are all defined within a single section near the beginning of the program. You may also include  pairs in local functions. They must occur in matched pairs when they occur within a local function, and should normally be in matched pairs when they occur in the "main" part of your program (the "main" part consists of those lines which are outside of all local functions). When you include a  section in "main," it should not enclose any local functions, or variables may be scoped in unpredictable ways.

When a variable's first appearance within "main" occurs within a  section, that variable is declared as global to all local functions which appear below that section. All other variables in "main" are local to "main." Important: FB places an "implicit"  statement at the beginning of your program. That means that, by default, all variables declared in "main" are global. You must include an  statement in "main" if you want any of the variables declared in "main" to be local to "main."

When a variable's first appearance within a local function occurs within a  section, that variable is declared as global to that function and to all local functions which appear below that function. That variable is also global in "main," if its first appearance in "main" occurs below the function in which the variable was declared global. All other variables in the local function are local to that function, unless they were declared global in some preceding  section.


text:
Futurebasic/Language/Reference/begin record

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
begin record typeName recDefnBlock end record

Revised
July 19, 2000 (Release 3)

Description
Begins the definition of a "true" record type (as opposed to a pseudo-record type, which is defined using the  statements). The record type definition must end with an  statement.

A  block is non-executable, so you can't change its effect by putting it inside a conditional execution structure such as. However, you can conditionally include or exclude it from the program by putting it inside a  block.

The record type defined in the  block is global in scope, and can be used anywhere below where the block appears. is a name that identifies the record type. This name must be unique among all defined record types in your program. is a block of one or more  statements. These  statements have a syntax which is identical to that of an ordinary   statement. However, instead of declaring variables, these  statements declare the names and types of the fields in this type of record. The field names do not need to be unique to this type of record (that is, a different record type could use some of the same field names as this record type). A field can be of any data type, including a previously-defined record type. A field may also be an array of elements of any type. You can also use the following "leading dot" syntax within the record definition block, to declare "empty" space; that is, some bytes within the record which are not identified by any field name: DIM .constant ...where  is an integer literal, or a symbolic constant name (without its leading underscore character). This declares the specified number of bytes as being "nameless."

You can also use the "semicolon" syntax after the definition of a field name, in order to specify how many bytes should be skipped between the beginning of this field and the beginning of the following field. You can use this either to insert "nameless" bytes within the record, or to make fields overlap in memory. See the  statement for more information about the semicolon syntax.

After a record type has been defined using, it can be used just like any other data type. This means:  You can declare variables as having type ; You can declare arrays as having type ; You can declare fields in other record types as having type .  Anywhere below the  statement, you can use the   statement, along with the   keyword, to declare a variable, array or field of type. For example, if you have defined a record type called, then you can do the following: dim myHouse as Address, yourHouse as Address dim relatives(15) as Address begin record EmployeeInfo dim 50 name$ dim 9 socSecNo$ dim 20 hobbies$[9] dim empAddress as Address end record After you have declared a variable of a given record type, then you can use the "embedded dot" syntax to refer to individual fields within the record. Using the above example: dim mySecretary as EmployeeInfo mySecretary.socSecNo$ = "456-78-9999"

Arrays of records and arrays of fields
When you use arrays of pseudo-records, you always write the array subscript at the end of the expression, whether the expression indicates an entire record or one of its fields. For example, if we have a pseudo-record array called, then   refers to element #7 in the array. If this record type has a field called, then we represent the   of   as: game.score(7)    'pseudo-record Example: begin record StudentInfo dim 20 firstName$ dim 20 lastName$ dim 1 finalGrade$ end record dim myStudents(35) as StudentInfo 'This represents the final grade of myStudent #14: myStudents.finalGrade$(14)= "B"

Arrays inside of true records
True records have the ability to hold arrays inside of each record. This special embedded array is designated by using a bracket instead of a parenthesis for individual elements. The brackets are used for both dimensioning and accessing the sub-elements.

Example: begin record StudentInfo dim 20 firstName$ dim 20 lastName$ dim grades[100] end record dim myStudents(35) as StudentInfo myStudents.grades[1](5) = 96 In the final line of this example, the grade element number 1 of student number 5 is set to 96.


text:
Futurebasic/Language/Reference/begin union

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
begin record recordName dim statements... begin union dim statements end union end record

Description
A union is used to set aside space in a record that may potentially contain more than one size variable. The following example sets aside two equal offsets within a record for variables of differing sizes: begin record RecordWithUnion dim beforeUnion begin union dim inUnion1` dim inUnion2$ end union end record dim myTest as RecordWithUnion myTest.inUnion2$ = "COW" print myTest.inUnion1 The variable  is a single byte which occupies the same space as the first byte in the string. In this case,  happens to be the length byte of the string and the   statement will produce "3". Such an overlap is not necessary and the two values may have no relation to one another except that they start at the same location in memory.

When FB encounters a  statement, all  s up to the   statement are examined and the largest item in the union determines the amount of space set aside by the compiler. In the example above, the union would occupy 256 bytes since the largest element in the union is a 256 byte Pascal string.


text:
Futurebasic/Language/Reference/beginassem

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
BeginAssem assembly_statements EndAssem

Description
Marks the beginning of a block of assembly-language statements. The block must be terminated with the  statement. The statements are assembled directly into the compiled program and executed when the program is run.

Each line in the  block should be in this format:

Note that there should be at least one space character separating each of the four fields of this line. In particular, if  is omitted, you must include at least one leading space in front of. But if  is included, then there should be no leading space to the left of label. To make a nicely formatted listing, use the TAB key to separate the fields.

You can also create assembly-language statements without using the  and   statements, by preceding each assembly statement line with a “grave accent” character (that’s the character to the left of the “1” on the keyboard. It looks like a “backwards” apostrophe:  ):

This method has the disadvantage that you can’t specify a cpuType for each group of lines: assembly lines that begin with the “ ” mark are always assembled according to the “preferred CPU,” using the rules given above. It’s important that you understand which CPU your assembly statements are being assembled for, and that your statements are appropriate for that CPU. You can use the  statement to exclude your assembly statements from inappropriate compilations.


text:
Futurebasic/Language/Reference/binstring

Function
✔ Appearance ✔  Standard ✔  Console

Syntax
binString$ = bin$( expr )

Description
This function returns a string of zeros and ones representing the binary value of, in "two's-complement integer" format (this is the native format in which integers are stored in FB). If  is in effect, an 8-character string will be returned. If  is in effect, a 16-character string will be returned. If  is in effect, a 32-character string will be returned.

Example
The chart below shows the results of  on some integer values. (If a non-integer  is used,   converts it to an integer before generating the string.) The chart assumes that   is in effect. The chart below shows the results of  on some integer values. (If a non-integer  is used,   converts it to an integer before generating the string.) The chart assumes that   is in effect. 1    -1     256     -256 To convert a string of binary digits into an integer, use the following technique: intVar = val&( "&X" + binaryString$ ) can be a (signed or unsigned) byte variable, short-integer variable or long-integer variable. Byte variables can handle a  up to 8 characters in length; short-integer variables can handle a   up to 16 characters in length; long-integer variable can handle a   up to 32 characters in length.


text:
Futurebasic/Language/Reference/bit

Function
✔ Appearance ✔  Standard ✔  Console

Syntax
bitValue = bit( bitPos )

Description
This function returns an integer whose binary representation has the bit in position  set to "1", and all other bits set to "0". Bit positions are counted from right to left: a  value of zero corresponds to the rightmost ("least significant") bit. The maximum allowable value for  is 31, which corresponds to the leftmost bit in a long-integer value. is useful in conjunction with "bitwise operators" like  and , for setting and testing the values of particular bits in a quantity.

Example
The following expression evaluates as  (-1) if bit "n" is set in  : ( testValue& and bit( n ) ) <> 0 The following assignment sets bit "n" in  to 1: testValue& = ( testValue& or bit( n ) ) The following assignment resets bit "n" in  to 0: testValue& = ( testValue& and not bit( n ) )

title: Futurebasic/Language/Reference/bit


text:
Futurebasic/Language/Reference/blockmove

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
BlockMove sourceAddr&, destinationAddr&, numberBytes&

Description
Copies a range of bytes which begin at address, to the address range that begins at address. The  parameter specifies the number of bytes which are to be copied. The copying works correctly even if the source and destination ranges overlap.

Example
dim src%(79999), dst%(79999)           '80000-element arrays 'Copy one array to the other: BlockMove @src%(0), @dst%(0), 160000


text:
Futurebasic/Language/Reference/box

Statement
✔ Appearance ✔  Standard ✔  Console

Syntax
box [fill] [h, v] to h1, v1 [to h2, v2 ...]

Description
Draws a rectangle which has diagonally opposite corners at coordinates and. The rectangle's frame is drawn using the current pen size, mode, pattern and color for the current window or printer. If the  clause is specified, then the rectangle is filled with the current window pattern.

If the  keyword is specified more than once, then several rectangles are drawn, each using  as one corner, and the coordinates following   as the diagonally opposite corner.

If the  and   parameters are omitted, then the rectangle's originating point is set to one of the following:  The coordinates of the most recent   statement (in any window) that actually specified the   and   parameters; The last point specified in the most recent  statement (in any window); (0,0), if no  statement has yet been executed, and no prior   statement that specified   and   has yet been executed.

Console Behavior
When you use the Console,  always switches to the Graphics Window before drawing. You can't use  to draw a box in the Text Window, or on the printer; use the Toolbox procedures   or   instead. Alternatively, you can activate the graphics window and select Print from the File menu.

title: Futurebasic/Language/Reference/box


text:
Futurebasic/Language/Reference/button function

= Layout Template (remove this line) =

Statement Function Operator or Other? (update the checkmarks below)
✔ χ Appearance ✔ χ Standard ✔ χ Console

Syntax
code syntax goes here and is pre-formatted (plain text)

Revised
date & release (remove this section if no date)

Description
Description goes here.

Example
Sample code goes here (remove this section if no sample code)


text:
Futurebasic/Language/Reference/button close

Statement
✔ Appearance ✔  Standard  χ Console

Syntax
BUTTON CLOSE [#]btnID BUTTON CLOSE [#]-btnID

Revised
May 5, 2000 (Release 3)

Description
The button or scroll bar specified by  is removed from the current output window. This is one of two ways you can dispose of a button: the other way is to close the window, which automatically closes all the buttons and scroll bars in it.

If  uses a negative , the area previously occupied by the control is not erased or invalidated. No update event will occur as a result of close a button with a negative.

Example
BUTTON CLOSE #1 BUTTON CLOSE #_radioBtn2 BUTTON CLOSE -1


text:
Adventist Youth Honors Answer Book/Outreach/Literature Evangelism

1. From the Bible and writings of Ellen G. White, write a summary, at least 250 words in length, on the importance of the use of literature in leading people to Christ.
In Acts 20, Paul indicates that he operated by going house-to-house, as does the colporteur:

For Ellen White comments, see Testimonies for the Church, Volume 6, pp 321-340.

2. Name five essential qualifications of a colporteur.

 * 1) A calling to the ministry.
 * 2) Passion for the work of Literature Evangelism.
 * 3) Perseverance.
 * 4) Faith.
 * 5) Courage.

3. How is the colporteur supported?
The term "colporteur" is an alteration of French comporter, "to peddle" as a portmanteau or pun with the word col (Latin collum, "neck"), with the resulting meaning "to carry on one's neck". Porter, is from Latin portare, "to carry." It could also be interpreted to mean "to carry one's neck" which is not far from accurate. The colporteurs are self-supported, meaning that no money is provided to them by the church. Their income comes from the literature they sell.

4. What four steps are taken in the sale of a book or magazine?

 * 1) Prayer.
 * 2) Opening - the colporteur introduces himself/herself and tells the recipient (person being evangelized) what they are doing in that area.
 * 3) Information - the colporteur tells the recipient about the material.
 * 4) Close - the colporteur tells the recipient the average donation accepted for the books they have been given and where the proceeds would go.

5. Briefly outline how to arouse an interest in purchasing a book or magazine?

 * Know your material: One of the easiest ways to arouse interest is to know what your talking about. A good way of doing this is to read one of the books for your devotion every morning.
 * Be observant: This is helpful because if you are observant you may notice things such as a small child's toys (indicating they most likely have a small child) or if you smell something cooking it might be a good idea to show them one of your cookbooks. And it doesn't stop there! While you are talking to them always be on the lookout for any hints that would show you which books they would be most interested in.

6. Know how to meet objections to purchasing a book or magazine.
The most common objection that you will hear is "I'm not interested". Most people have no other reason to be "not interested" except that they want you off their porch! Here are a couple of ways to get around that objection:
 * 1) Be flexible. For instance, if I handed a potential recipient one of the books and they said that they're "not interested" I can apply that to the book that I handed to them and transition into another book by saying something like, "well maybe you'll be more interested in this book instead".
 * 2) Ask them why they are not interested. Now this way is a little bit more forward and you would want to be VERY CAREFUL in asking them that because you DO NOT want to offend them.

a. Maintain a literature rack for four months, keeping a log of which books are the most and least popular.
The first thing you must do is decide where you will place your literature rack. Laundromats, taxi waiting rooms, subway stations, bus stops, and doctor's offices are all good options, because these are places where people wait. You must then get permission to put your rack there. Most private operations (doctors, laundromats, etc.) will welcome the addition of the rack, as it provides their patients with something to read at no cost to them. They may already have a rack that they will let you use, or they may require that you provide one. If you provide the rack, they may wish to approve of it (to ensure it does not clash with their other furnishings, for example).

Then you will be ready to stock the rack with literature. Record a complete inventory when you do this. Return weekly (at a minimum) and take inventory and to restock. The reason for tracking which publications are the most popular is so that you may provide more of them. You are there to meet the people's needs!

Be sure to speak with the proprietors and thank them every time.

===b. Do a project of house-to-house or mail distribution of literature in your community for ten hours. Include in the literature a response card for additional literature, Bible studies, and/or a Bible correspondence course. === The Review and Herald offers several editions of Ellen G. White's Steps to Christ at a price that facilitates large purchases (under $1.00 per copy). This book is available with a number of covers, and you should select one that you think will have the best effect in the community in which you intend to distribute it.

Determine how many copies you will need, then raise the funds to purchase the books. You may use other literature other than Steps to Christ as well, but this book has a proven track record. The next thing you must decide is whether you will distribute the literature door-to-door or via a mass mailing. Door-to-door is by far the cheaper option. You will probably not get the literature into as many homes as with mailing because each home must be visited, and some people will refuse to take the literature. However, those who do take it will have the opportunity to meet you and evaluate your character. For the receptive soul, this can make all the difference.

For mass mailing, contact your local post office for instructions. They will tell you their requirements and even provide you with information necessary to send a mailing out to every address in a given zip code (including how many addresses there are).

If you choose to distribute the literature door-to-door, assemble the literature into plastic bags which can be easily hung from a door knob. Do not hang the literature on any mailbox or put it inside one. Doing so is a federal offence! Don't forget to include the response card so that if the literature arouses an interest, the person will know how to get in touch with your church.

Before setting out, rehearse what you will say.

When you arrive, approach the house and knock on the door. Do not walk on the grass unless there is no other option, and be mindful of flower beds. If no one answers, place the literature where they will find it. This usually means you must select the door they are likely to use rather than the "visitor" door that they may rarely open. If someone does answer, you will have already practiced what to say. Be polite, even if the person is rude to you. If they tell you to leave, do so as politely as you can. Remember that you are an ambassador for Christ! Maintain a cheerful attitude throughout your day, even if you think no one is watching — they might be!.

c. Engage in selling Seventh-day Adventist books and/or magazines during a period of at least five weeks, for at least 20 hours each.
The main difference between this activity and the one described in section b above, is that you will be selling the literature instead of giving it away. Even so, everything covered there applies here as well. In addition, you must use the skills you learned in the rest this honor (remembering the essential qualifications, knowing the four steps in making a sale, knowing how to meet objections, etc.). Above all, be kind and polite at all times!

We highly recommend that rather than attempting this on your own, you look into the Magabooks program. From their website,
 * It is an evangelistic program that will give you the opportunity to work as a student missionary with a group of 15 to 25 youth.

Magabooks is a concatenation of the words Magazine, and Books. This program will provide all the training you need, and will provide you with a source of income for the summer.

f. Make a project of supplying a year’s subscription to Liberty magazine to the judges and/or lawyers in your community. Raise the money or get contributions for the gift subscriptions.
Contact the editors of Liberty magazine at http://www.libertymagazine.org/ (look for the "contact us" link). You will also need a list of judges and lawyers in your community. Lawyers will be listed in the Yellow Pages or in the business section of your local phone book. Contact your local courthouse to get a list of judges.

Once you know how many lawyers and judges are in your community, you will be able to determine the cost of the subscriptions. Then set a goal to raise enough money to cover them. Here are some ideas for fundraising:
 * Car wash
 * Yard Sale
 * Bake Sale
 * Recycle ink cartridges
 * Rent a Pathfinder

For more fundraising ideas, see the fundraising section of the NAD Pathfinder forum.

===g. Make a project of sending literature and/or Bibles to the mission field. Part of this project is collecting the literature and/or Bibles, determining where to send the material and packaging and sending the material.=== Before collecting any material, figure out where you are going to send it. Your local conference office should be able to put you in touch with a missionary. Contact them first, not only to get a shipping address, but also to ask what types of literature they can and cannot use. Some countries limit the types of literature that can be imported, so it is important to check before you send anything. You would not want all your hard work to be wasted by having your literature destroyed at the border of the country you are sending it to.

Once you have made contact with the missionaries and have a list of things they can use, then begin assembling the literature.

Historical Notes
This honor was introduced in 1928 with the name "Colportage". The name was changed to “Literature Evangelism” 1956.


text:
Futurebasic/Language/Reference/call

Statement Function Operator or Other? (update the checkmarks below)
✔ χ Appearance ✔ χ Standard ✔ χ Console

Syntax
code syntax goes here and is pre-formatted (plain text)

Revised
Date & release (remove the Revised section if no date)

Description
Description goes here.

Example
Sample code goes here (remove the Example section if no sample code)

title: Futurebasic/Language/Reference/call


text:
User talk:Dim i as myself

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 00:32, 2 February 2008 (UTC)

title: User talk:Dim i as myself


text: User:Whiteknight/Count Ticker/2008/February


text:
Chess Strategy/The positions of the kings

King positions
King position is one of the most important things in chess (technically, it is the most important thing in chess). This is for the simple reason that no matter how much material advantage you have, no matter how much central control you have, no matter how weak your opponent's pawns are, if you are checkmated, all of these advantages are moot. King position is also the thing that amateurs constantly pay attention to, never seeming to understand the ideas behind queenside expansion, or a central pawn center. They always either become irrationally nervous about their own king, or they completely ignore the other part of the board, going all out for the attack.

The castled king position
The castled king position is one of the most effective defenses against attack. It is strongest when the king is covered by three pawns in a row, on (for Black) f7, g7, and h7 on the kingside, or a7, b7, and c7 for the queenside. This is because there is really no weakness for the opponent to focus on, and he will have to advance his pawns or sacrifice material to create weaknesses there, so that he can attack. The king can stay behind his wall of pawns, safe in the knowledge that the opponent will never get to him there.

On attacking the king in general
In the early days of chess, when Romanticism dominated, attacking the king was the most important idea of all games. There would often be a series of brilliant sacrifices to draw the king out from its cover. This all changed when an American master named Paul Morphy came along and crushed the opposition using positional principles, much in the way that Steinitz would thirty years later. However, today such attacks, known informally as "barry", are rarely seen. Back in the 19th century, defensive chess was not yet well-known, and sacrifices would often work. Today, many defensive tactics are well-known, such as returning material in order to halt an attack.

The king in the center
Often it is suicidal to keep one's king in the center. Why? Look at it this way. The center is the most important part of the board. Logically, if one can gain influence in the most important areas, one will have an advantage. However, to get active play in the center, one has to open files there. And with the center of the board opening up, the king will feel very uneasy, as he is a sitting duck for all of the enemy pieces bearing down on him on the open lines.

Not only does the king itself become weak, but the squares around it become weak. You may notice, for example, that f2 (or f7 for Black) is the weakest square in the original position because it is only protected by the king. Piece sacrifices on this square are very common. Take for example, the game at right, Retí—Wolf, Teplitz-Schönau 1922.

Here Black exploited the semi-open nature of the center and the fact that the king was stuck there with the shot 15...Nxf2! Black exposes White's king position. 16.Bh7+ If 16.Kxf2 then ''16...Ng4+ 17.Ke1 Qxe3+ 18.Ne2 Bf5! 19.Bxf5 Qf2+ 20.Kd2 Rxe2+ 21. Kc3 Qxc5+'' and Black wins. 16...Kh8 17.0-0 Nfg4 18.Nxa8 White decides to grab material to compensate for the poor position he has acquired—but Black has seen more deeply into the position. 18...Nxe3 19.Qe2 Nxf1 20.Bb1 Nxh2 21.Nb6 Nef3+! White must have overlooked this sacrifice. 22.gxf3 Qg5+ 23.Kxh2 Rxe2+ 24.Nxe2 Qe5+ 25.Ng3 Qxb2+ 26.Rc2 Qxb1 27.Re2 Be6 28.f4 g6 29.Na8 h5 30.Nc7 h4 31.Nh1 Qd3 32.Rf2 Bf5 and White resigned. Black has a decisive material advantage and a continuing attack.

In addition to the way the attack was conducted, one must also realize that the sacrifice was purely intuitive, backed up by a few short-term calculations. At the grandmaster level, there are many cases of such speculative sacrifices. The point is that grandmasters, with their great experience and extremely useful intuition, can easily evaluate a key strategic point of an attack, something that computers will never be able to do. Grandmaster intuition is a fantastic guide, and helps the masters play moves like 15...Nxf2! Also, note that Black was not playing for mate. If an attack leads to the win of material then you must call it a success. Don't just keep lashing out; regroup your material and then use your advantage in force, which will win the game.

The necessary preconditions for an attack
Before the attack is conducted in full, one or more conditions must be fulfilled. This was the mistake that the Romantics and amateurs alike made: the conditions are not always fulfilled. In general, two or more of the following requirements must be met to conduct a successful attack on the king:
 * 1. Control of the center, or else that it is closed, so that the defender cannot land a counterblow there.
 * 2. A general space advantage in the area where the enemy king resides.
 * 3. General weaknesses in the opponent's king position.
 * 4. The number of attackers is more than the number of defenders.
 * 5. Open lines to the king.
 * 6. The majority of your army is posted in the king's sector, or if not, your army can easily get there with speed and efficiency.

Without these prerequisites, the defender will either have excellent chances for a successful counterattack or a successful defense. Note that most combinations of material will suffice to attack a king; in a game Reti—Alekhine, Baden-Baden 1925, Alekhine successfully attacked White's king even while the queens were swapped off.

The pawn storm
A pawn storm is the use of an avalanche of pawns to bust holes in the king's castled position. This is the slowest, but usually the most accurate, way to attack the king. For example, if you have a piece attack against a king, the only way to get in against a strong castled king position is by sacrificing material, or else inducing him to create weaknesses in the position. Pawn storms are usually good for the following reasons:
 * 1. They induce weaknesses in the king's position.
 * 2. The exchange of these pawns will create open lines for attack.
 * 3. They can support the attacking pieces.
 * 4. They can drive away enemy defenders of the castled position.
 * 5. Near the end of an attack, a pawn may promote after reaching the back rank to help continue the attack.

For example, the "career" of an h-pawn, as regards the attack, as described by Vladimir Vukovic in his classic, The Art of Attack in Chess, goes as follows:
 * 1. h3 A pawn drives a piece away from g4, so as to support another pawn or piece coming to g4 for the attack (supporting the "little bayonet").
 * 2. h4 The h-pawn becomes part of an attacking formation in conjunction with a knight on g5 and a rook on h1.
 * 3. h5 The pawn goes to h5 to either drive away a defending piece on g6, or else exchange itself for a pawn on g6, weakening the king's position and opening lines for attack.
 * 4. h6 The pawn drives a wedge into the kingside dark squares, forcing ...g7-g6 and allowing his pieces to exploit the weakened dark squares.
 * 5. h7(+) The pawn checks the king, creating an immediate threat to Black's position.
 * 6. h8(Q) The pawn promotes and continues the attack as a queen.

Open lines in the attack against the king
Open lines to the king are like highways. Your pieces can travel easily and efficiently down them to reach their goal. That is why it is essential that the king castle as soon as possible in an open position. The opponent can exploit these highways with his rooks, queen, and bishops, which will make attacking your king all the easier.

Take a look at it this way. Is it easier to attack a king on g8 that is surrounded by pawns on f7, f6, and h7, or f7, g7, and h7? The first one, of course, becomes a rook shifting to the g-file followed by the queen coming in will quickly mate. In addition, these pawns lose their defensive value as they advance, because the further advanced pawns are, the easier it is for pieces to get behind them. Pawn sacrifices to get to an enemy king are not rare, either, because no price is too high to pay as long as your last pawn delivers mate.

The position at right was excellently played by someone on everyone's list of "greatest attacking players of all time", Alekhine. Amongst Tal, Morphy, and Kasparov, Alekhine was a rare bird who was a natural attacking player. As fourth World Champion, it was said that to beat Alekhine you had to beat him three times: once in the opening, once in the middlegame, and once in the endgame. In fact, it was Alekhine who established the tradition of extensive opening preparation that is a hallmark of the world's top GMs today. It seemed as if one only needed to give Alekhine a lime and he could make lemonade.

The first thing Alekhine took into account when looking at this position were the possibilities for attack. Black is cramped, and his bishop pair is quite meaningless in this closed position. He also noted that his knight was strongly posted on e5, and Black has no play on any part of the board. Perhaps if Black could open up the position, his two bishops would become meaningful in a central counterattack, discussed on the previous page. However, Alekhine also notices that such action is impossible in this position. Thus, he decides not to rush the attack, but to begin by advancing a pawn. 27.h4! White plans to set up a battery of queen and bishop on the b1-h7 diagonal, threatening mate. The h-pawn advance discourages defense with ...g7-g6 because then White could answer with h4-h5. 27....Raa8 28.Bb1 h5 The threat was 29.Qc2 g6 30.h5. 29....f7-f5 would not be good, as it would leave Black with a permanent weakness on e6, upon which White could direct his pieces. '''29.Qf3 g6 30.g4! hxg4 31.Qxg4''' White has successfully used a pawn storm to break open lines on the kingside for attack. In addition, the pawn advance has created weaknesses on the kingside, which White can exploit with his knight and queen. 31....Bg7 32.Ba2 32.h5 was stronger, although this move is also good, preventing Black from moving his f-pawn for lateral defence of the kingside. 32....b4 33.Bc4! Black's last move was a bid for active play, which of course White refuses. 33....bxa3 34.bxa3 Qa5 35.Qe4 If 35.Nxg6 immediately, then 35....Rxd4. 35....Qc7 36.Qf4 Rab8 37.h5! Opening the g-file for the rooks. 37....gxh5 38.Kh1 Rb7 39.Rg1 Qe7 40.Rxg7+ Kxg7 41.Rg1+ Kh7 42.Nxf7! Black resigns because of 42....Qxf7 43.Bd3+ Qg6 44.Qf8!!.

When playing over this game, note not only how Black was denied all counterplay, but also how the pawn advances opened up lines to the enemy king. In this manner, White could slowly create weaknesses in Black's position. After a certain point, it was too much for Black to handle, and he could not survive it.


text:
User:Δ

wikipedia:User:Betacommand

title: User:Δ


text:
Talk:Find Employment/Cover Letters

Cover Letters read after Resumes
Whenever I have taught about resumes in my vocational computer class for adults, I always ask if any of my students have done hiring previously, and I try to obtain feedback from them to make sure that I am teaching correct information, since truly every business does the hiring process differently. One common trend I found from them, and from my own past experience in hiring people is that usually the resume is read first and then the cover letter. I think this needs to be included in this article. I'm only putting it here for discussion, because I know this goes against "traditional wisdom". But it makes sense that most people hiring read resumes, because they need to take a stack of potential employees, and quickly filter them, and the resume is the place that they look for key attributes that they know they want, and then after they have filtered out those who don't have those attributes, they start to look at the resume deeper, and then ultimately the cover letter. If anyone wishes to make an argument, or has had different experience, please speak up. If I don't get any counter opinions, I'll be bold and post my ideas. --Jacob Walker (talk) 04:55, 2 February 2008 (UTC)

title: Talk:Find Employment/Cover Letters