Skip to content

Ecce Signum

Immanentize the Empathy

  • Home
  • About Me
  • Published Works and Literary Matters
  • Indexes
  • Laboratory
  • Notebooks
  • RSS Feed

Category: Programming

Crime Map Updated

2007-04-15 John Winkelman

I just updated the crime map with fifteen new incidents, including a fight involving nearly a hundred girls, a rash of pizza store robberies, and a couple of drive-by shootings, one of which happened just down the street from my girlfriend’s house.

Argh.

Posted in ProgrammingTagged crime map, Grand Rapids comment on Crime Map Updated

Another Update

2007-01-19 John Winkelman

I just updated the crime pages. The crimes are now broken out by year, as well as type, month, zip code and quadrant. Five ways of looking at the city.

The first murder of the year happened last night, which puts 2007 ahead of 2006 by about two months. Yay us.

Posted in ProgrammingTagged crime map, Grand Rapids comment on Another Update

More Crime

2006-12-16 John Winkelman

I just finished updating the Grand Rapids Crime Map here at es.o. There are 14 new incidents, bringing the total to 64. After a relatively quiet early autumn, things are back in full swing here in the Big City with the Small Town Feel

Posted in ProgrammingTagged crime map, Grand Rapids comment on More Crime

Social Responsibility

2006-08-30 John Winkelman

Well, I have been picking away at this project for a couple of weeks now, and I think I am ready to unleash it upon the world at large:

Announcing the Interactive Map of Grand Rapids, Michigan Criminal Incidents.

I first began toying around with this idea last October when someone broke into my car and stole my radio. As the week progressed at least half a dozen other cars on my block were broken into, quite probably by the same person. It got me thinking: If we could get some idea of the general time of the incidents, and find all car break-ins in the surrounding blocks, then the information could be used to catch the bastard.

I let this idea gestate for a while as other things — house, school, tai chi — took precedence.

A couple of months ago I grabbed a user key from Google Maps and started playing around with the API, exploring what could and could not be done, and how. I also started looking online for reports of the various crimes which happen in Grand Rapids every day. I was surprised (and quite disappointed) to see that there was practically no useful information about criminal activity available online. Statistics are out there, but those are cold numbers, with nothing like specific date, time, location and type of crimes.

As I continued to look I discovered that WOOD TV’s website was the only place in the whole of the worldwide web which consistently reported crime and — more importantly — archived the stories. So the WOODTV archives became my data set.

There are currently 47 incidents on the map. They were all I could find reported in 2006. They represent, I suppose, the worst of the crimes committed, but they also represent the least common crimes. News outlets don’t report when someone’s car is robbed, or when someone is mugged with no bloodshed. So assuming that the extremes of antisocial behavior are the result of day-to-day pressures the map gives a fairly accurate view of what is going on in Grand Rapids.

But it is not enough. At a rough guess, this is perhaps 10 percent of the activity in the city. The smaller incidents affect more people, and so ultimately they are the more important data. A friend has promised to connect me with a GRPD officer who may be able to provide me with the data I need. When that happens you will see a sharp jump in the number and variety of incidents pegged on the map.

HOW TO USE THE MAP:
Each colored icon represents a crime as reported at woodtv.com.
Different crimes are represented by different colors.
Click on the icons to see the associated details.
Use the dropdown menus above the map to filter the crimes by type, date, zip code, and city quadrant. Hit the “RESET” button to reset all of the filters.
Use the tool in the upper-left corner of the map to zoom in and out, and to scroll in the four cardinal directions. You can also click-and-drag anywhere on the map to move it around.

And most important — let me know what you think of my efforts. If you would like to see additional features, or if you know of additional sources of information, or anything else, please let me know.

Posted in ProgrammingTagged crime map, Grand Rapids comment on Social Responsibility

My Other Home

2006-06-20 John Winkelman

A little over a week ago I signed up for the yearly GameDev.net Four Elements contest. Over the next five-and-a-half months, in my free time, I will attempt to build a trading simulation game based in the Ukraine in the year 1000AD. Updates here have been sparse because I have been posting in my developer’s journal.

If anything significant happens over there, I will provide a link to it here. Otherwise, if you like deeply technical stuff, are interested in Flash and/or game programming or the medieval Black Sea region, feel free to stop in from time to time.

Posted in ProgrammingTagged game development comment on My Other Home

Creating a Sensory Input-Based Monster AI, Part I

2006-05-30 John Winkelman

As a thought experiment I am putting together a generic artificial intelligence which I can use for bad guys/NPCs in a variety of different games. There are myriad paths I could follow in creating AI, so for right now I am going to concentrate on two inter-related tasks: awareness and morale. In other words, when does X become aware of another entity, and what does X do in response to that awareness?

For the purposes of this essay there will be two entities: a deer and a wolf. I will discuss the reactions of the deer.

The first step is to create a triggering event. In this case, proximity. Using whatever senses are available to it, somehow, at some point as the wolf approaches, the deer becomes aware of it. This could be something like a twig snapping, or movement in shadows, or wolf-smell on the wind. In any case, the first level of this system is Awareness.

Once the deer is aware that Something is out there, the next step is to determine what that thing is. It could be another deer, or a faun, or a human, or the wolf. Without making that determination the deer cannot react appropriately. It might run in terror from the faun, or stand still while the wolf attacks. So the second level of the system is Recognition.

Once the approaching entity is recognized, the deer can take the appropriate action; in this case, run in terror from the wolf. Or if the deer is protecting a faun, move to attack/distract the wolf while the faun flees. This level of the system is Reaction.

So: Awareness to Recognition to Reaction. Think of them as concentric rings centered on the deer. As the wolf enters these rings its proximity triggers different responses. These distances can be displayed as a sequence of numbers; for instance [20/10/5]. [Awareness/Recognition/Reaction].

Awareness will always be the largest number. Without being aware of something, the deer cannot either recognize or react to it.

Either recognition or reaction may be the next largest number, or they may be equal. In any case, neither of them may be larger than the Awareness number, although they may be equal to it.

So: [10/5/10] would be a “legal” description, but [5/10/5] would not.

Using this system a wide variety of behaviors may be put into place with little effort. The following are some examples:

[10/5/2] — Long-range awareness, medium-range recognition, short-range reaction. A semi-tame, slow-moving, not-too-bright animal. A farm cow, for instance. Knows you are there, knows who you are, doesn’t much care.

[10/5/10] — Long-range awareness and reaction, medium-range recognition. Guards at a gate. Something is out there, so immediately set out after it. Once they are close, it may be recognized and perhaps another action performed.

[10/5/1] — Long-range awareness, medium-range recognition, extremely short-range reaction. A bored, disaffected clerk at a store. Knows you are there, knows who/what you are, doesn’t do anything until you actually poke him in the shoulder.

[10/1/10] — Long-range awareness and reaction threshold, contact-range recognition. A rhinoceros during mating season, which charges anything it detects, and only stops when it recognizes “Ooh! That’s a train!”, or something of the like at extremely short range. Basically this is an unthinking reaction to the presence of another entity.

It occurs to me that this could be made less “broad” and more “deep” by changing to a two-level “awareness/reaction” and “recognition/reaction” system. For the purpose of simple- to medium-complexity games I like the three-level approach. In particular playing around with the distance between “recognition” and “reaction”, allowing for simulating different levels of intelligence or bravery, and startle-reactions, such as an enemy suddenly appearing well within the “reaction” threshold, causing a panic reaction; or a particularly slow-witted (think “drunk”) critter standing around gob-smacked while being charged by a bull.

Note that this AI system is for an “initial contact” situation, where another entity is first entering into awareness range, or has been outside of awareness range long enough that the “deer” has forgotten the entity was there. Reactions when actually interacting with another entity will be discussed in an upcoming essay.

Posted in ProgrammingTagged artificial intelligence, game development comment on Creating a Sensory Input-Based Monster AI, Part I

Flash 8: Height Map With Color

2006-03-17 John Winkelman

Minor change to the previous experiment. This one, obviously, performs color substitution as it is rendering the 3d-ish version of the bitmap. Click to launch the Height Map.

Posted in ProgrammingTagged Flash, game development comment on Flash 8: Height Map With Color

Flash 8 Experiment: Topographic Map

2006-03-13 John Winkelman

[Requires the Flash 8 player. Click on the image to render the height map. Hit your browser’s “refresh” button to render it again]

During my oh-so-few free hours I have been playing around with the BitmapData object in the new Flash 8 player. This is what I have come up with most recently: A height map.

The possibilities for this kind of tool are quite exciting: 3d tiled terrain, height maps and data displays are just the beginning.

Right now the heightmap tool only works with grayscale images. I have a plan for performing real-time color substitution, but that will come with version 1.0. This is still a beta, somewhere around .6 or .7. When I feel comfortable with the completeness of this thing I will post some code. But first, a day or two without staring at this thing into the wee hours of the morning.

Click to launch the height map

Posted in ProgrammingTagged Flash comment on Flash 8 Experiment: Topographic Map

Flash 8 Stress Test

2005-12-09 John Winkelman

This is my most recent Flash 8 experiment. I used it to see what some of the possible limits of rendering might be; specifically, multiple levels of alpha transparency rendering over a complex background.

It works like this: A .jpg (the background) and a .png with alpha transparency (a Green Floating Chad Head) are loaded at runtime. I copy the .jpg and the Chad Head into Bitmap objects, then run a simple math algorithm to copy 100 instances of the Chad Head onto the background, then clone that bitmap onto the one which is displayed in the Flash player. This combines two concepts known as blitting and double buffering, which help to speed up otherwise lengthy and/or processor-intensive rendering jobs.

SkaBoom, 100 objects moving at a high rate of speed with, in effect, 100 levels of alpha transparency displayed at once. All combined into a single 480 pixel square bitmap.

Thanks to the folks over at Bit-101’s forums for help with some of the new functionality.

Click to launch the Flash 8 stress test.

Posted in ProgrammingTagged Flash comment on Flash 8 Stress Test

My First Flash 8 Experiment

2005-11-05 John Winkelman

Flash 8 plugin required.

After a couple of hours of hacking around learning the ins and outs of the new BitmapData class, this is what I have come up with. My version of the “Hello World” program.Click here to see it.

Posted in ProgrammingTagged Flash comment on My First Flash 8 Experiment

Posts navigation

Older posts
Newer posts

Personal website of
John Winkelman

John Winkelman in closeup

Archives

Categories

Posts By Month

June 2025
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930  
« May    

Links of Note

Reading, Writing
Tor.com
Locus Online
The Believer
File 770
IWSG

Watching, Listening
Writing Excuses Podcast
Our Opinions Are Correct
The Naropa Poetics Audio Archive

News, Politics, Economics
Naked Capitalism
Crooked Timber

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

© 2025 Ecce Signum

Proudly powered by WordPress | Theme: x-blog by wpthemespace.com