Wednesday, October 31, 2007

Pretty Cool

My mother forwarded me this, it is a pretty creative.

Animator vs. Animation by *alanbecker on deviantART

The Office Does Second Life

In contrast to Electric Sheep's romanticized and non realistic version of Second Life for CSI:NY, NBC's The Office included Second Life in an episode last week as well. The Office used Second Life just as it is for their plot line rather then trying to romanticize or misrepresent what Second Life is all about like CSI:NY's plot line did. I think The Office used Second Life to much greater success though their effort was less hyped.

Read more and compare the two approaches [HERE].

CSI:NY and Second Life Tank

In case you didn't know, CSI:NY decided to do an episode dealing with Second Life. I don't watch the show (though I love the original CSI series based in Las Vegas), but I hope the normal episodes are much better then the Second Life one, which the 10 minutes of it I saw were painful to watch. Electric Sheep, a company that hawks the buggy Second Life program as the next internet to big corporate clients, convinced CBS to setup a massive Second Life presence to tie into the CSI:NY Second Life episode.

Well the effort tanked. The snake oil salesmen at Electric Sheep failed to capture any sort of significant user presence with their 440 (yes 440) CSI:NY Second Life Sims. The Second Life Herald reports that CBS shut down 408 out of 440 CSI:NY Second Life Sims (Virtual Islands). Virtual layoffs abound.

I understand the Electric Sheep's enthusiasm, but they knew better.

Read more [HERE].

And below is another promo video.

P.S. One thing the video above states that I didn't know is that Electric Sheep is owned now by CBS. Interesting. Those guys at Electric Sheep have been bought out, and just like the silicon pirates of the internet in the 90ies they will all ditch before people get a clue that virtual worlds need to be developed out more (especially Second Life) before they hit the prime time. Oh well, good for them.

Friday, October 26, 2007

Programmable Matter

This is wild. My Father forwarded this one to me, a request by a DoD agency to begin researching "programmable matter". Apparently some pretty smart people think this is feasible. The future is here...just a while ago I believe I blogged on teleportation. I guess they have teleported molecules small distances, and I also read about a successful light bending technique used for invisibility the other day. The technology is in its very early stages, but on a molecular level they have succeeded in a "2-D" invisibility screen in front of particles.

So now we have on the horizon faster then light communication and computation, teleportation, invisibility, electromagnetic screens/armor, and now programmable matter.

Looks like Scotty one day will be able to whip up some Scottish meal out of thin air in the mess hall of the future.
Read more about the solicitation for RND in programmable matter [HERE].

Thursday, October 25, 2007

CSI:NY Boon to Second Life's....Sex Industry?

This is awesome. The Second Life Herald reveals that a bunch of porn vendors in Second Life are using the CSI:NY keyword to direct searchers to their various venues.

If you haven't heard, CSI:NY just had an episode where they hunted a killer both in "Real Life" as well as "Second Life". So, it is reasonable to think that after seeing the show, a bunch of people might be interested in checking out Second Life, and more specifically Electric Sheep's (I company that does a lot of Second Life stuff) CSI:NY areas. Well, looks like the Second Life porno industry thought a little bit ahead of CSI and Electric Sheep.

I'm kind of sick of hearing about Electric Sheep and Millions of Us. Good for them that they are riding a wave. Yet they are snake oil salesmen. Second Life has potential, but it isn't the metaverse, and these guys know that, yet they are selling it to big corporate clients as it is such, which is dishonest. I'm glad the porno folks hijacked one of ES's projects in a small way. This makes me grin.

Read more [HERE].

Tuesday, October 23, 2007

Robot Chicken's Spoof of the 300.

Robot Chicken did a spoof of the 300 that is pretty funny. It is entitled, in blood of course, 1776.

Check it out.

Dennis Kucinich: Next Stop Atlantis?

Well, it looks like now that Dennis is back from Syria, maybe his UFO riding ascended masters can direct his next trip.

Read more about Dennis and the claims of a close family friend, a crazy UFO lady, about Dennis's close encounter [HERE].

Well Dennis, as much as I am making fun of you, life is stranger then we think. If you did see a UFO, you are in trouble Bro. As the same things moving the UFO's about are the same things that Jesus cast out of people back in the day. More on that later.

Space Heats Up: China to Test Sat Killer Tech

Yes, our good friends the Chinese, with most favored nation status, are once again plotting to eliminate our military's hi tech advantages. What our rich trading capital moving elitist friends here at home and in Europe once again fail to realize is that China is a communist dictatorship. Helping China's economy will produce a really strong communist dictatorship, not a European style democracy. But that myth is pushed so certain groups of people can live the dream of obtaining wealth in China. More on that later.

Remember, 10% of all of Walmart's purchases today will fund you grandchildren's death tomorrow! What a deal!

Read about China's "peaceful" moon mission [HERE].

Monday, October 22, 2007

CSI NY's Second Life Episode

It looks like CSI New York is going to do an episode relating to Second Life. From watching the trailer below it looks like the CSI version of Second Life is a little more cooler then the real one. If you have been "in world" you will know what I mean.

Anyway, check out the trailer.

And check out CSI New York on Wednesday October 24rth.

New Life for the .45

It looks like Transformational Defences Industries, Inc is offering a new submachine gun for law enforcement and special operations forces based on the .45 round.

The new submachine gun has a new blowback system that could potentially be used to reduce blowback in other weapons as well.

Read more [HERE].

Thursday, October 18, 2007

Jews Advised to Leave Iran

Why am I not seeing this on the main stream news? Libs not wanting to flame the fires of war? Who gives them the right to filter my news?

Anyway, Jews are being advised to leave Iran "without delay". We are going to end up going to war. And not because of Bush's policy blunders in Iraq. It will be because Ahmadinejad, or however you spell that fool's name, if crazy, and he will just keep on pushing things.

Pray for the people in Iran, that their oppressive, terrorist exporting government would go.

Read more [HERE].

The Age of Robotics

Ok, I'll be the first to do it. This century, the 21st century, will be known as the age of robotics. I am reading more and more articles about UCAV's (Unmanned Combat Air Vehicles), UAV's (Unmanned Air Vehicles), USV's (Unmanned submersible vehicles), and on and on. And we are only in the first decade. So me, as a wanna be historian, I declare this century to be the age of robotics. And, I will begin focusing this blog a little bit more on robotics then I have been.

Wednesday, October 17, 2007

Video Lessons I've Learned

Hi, I'm fairly new to online video, but here are a few tips that I've painfully learned dealing with three projects. The first project was video composting 3D footage, the next was a composite of a lecture and slides, and the third was recording a seminar. I will combine lessons from all three.

Before You Shoot
  • If you are shooting live video, think about placing your camera where you can get as much of a straight on shot as you can. Sounds like common sense, but sometimes due to various factors you won't be able to do a straight on shot of say a screen. If you can't, try to get the media that will be displayed on the screen and composite that back in over the trapezoided screen you will film.
  • Talk to the lighting guys. When people are talking and there is no slides or video being presented, have the light guys up the lights as much as possible. True, you don't want to have the lights going up and down all the time, so this might take a little bit of pre planning and coordination.
  • Think about your workflow. Video rendering is very time consuming, so run a few small test end to end of extracting to video from the camera to final screen presentation. It is good to work out kinks before timelines are established. Get a good realistic feal for how long things will take, then use 2.5x that amount of time for an estimate of completion.

If you are rending digital video, here are a few tips.

  • If you are using programs like 3D Max, Max likes to crash sometimes. Render your output as images rather then video, so if Max crashes at frame 700, you can pick up rendering again at frame 700. If your rendering is taking 2 minutes a frame, you will be saving yourself quiet a bit of time. Editors like Adobe Premier allow you to drag and drop folders of images in the timeline.
  • Only render the parts of scenes that are changing. In Max, there is a setting (it has been about two years so I'm a little foggy as to where) where you can have Max just render a small section of the screen. If you render one frame as a background, Max will render the full frames, but only update the part of the frame that you are worried about. Again, a huge time saver if render speeds are low.

General Tips

  • Generally you are talking about three steps. Getting source video, composting and editing source video, rendering an output video. Often times you will need a fourth step for web video, rendering to Flash (although youTube is an option worth checking out, they do it for you). Generally with the exception of the composting and editing phase, you want to be doing something else productive while these steps are taking place as each of these phases takes anywhere from 1/4 to 3/4 the time of the desired length of your end video. So depending on your hardware setup, you definitely want one machine available for you to work on other projects while the other machine(s) are trudging along.
  • Expect problems. Don't get frustrated. Just start again.
  • On low end cameras like mine, you end up pulling the video off of a tape in a lossy format. You can bring some of the color back when editing. The more you manipulate your video, the more color and detail will be lossed. You can use different codec's like DivX, but generally you want to keep your video as lossless as possible until you generate for the final presentation layer. Use a lossless codec like Lagarith. Unfortunately that means you will need a lot of disk space.
  • Make sure interleave each frame is checked. It will take a bit longer to render things, but the height in quality is worth it.
  • If you are outputting for the web, remember that most video will come off your camera slightly rectangular at a .9 height to width ratio at (720 x 480). Usually for my final render if I'm going to the web after the edits are done I go to square pixels and then cut the size down to 320x240 or 640x480. I might drop the frame rate down by half to if I'm low on disk space or time. The Flash video encoder seems to do a better job at making things a little less choppy if you set a custom video frame rate when encoding then the video software I've used (Vegas and Adobe Premier Pro 2). But if the extended render time is a big hit and the slight improvement in quality isn't that big a deal, render your final output at half NTSC.

Encoding for Flash

  • I've had pretty good luck in filming at NTSC speeds (29.97 fps, or something like that) and then halving that ( fps) when I'm encoding to Flash. For 320x240, 300 kb a sec seems to always do the trick. You might be able to go down lower if you don't have a lot of red colors nor a lot of movement. Maybe run a few quick test (in Flash itself you don't have to encode the whole video when importing, just import a chunk, render, test, adjust).
  • For Audio, I've used Stereo 16kbs. You might want to buff that up to 32kbs, which might in turn cause you to buff up your streaming a little over 300kbs.

Well, most of these tips are commons sense, but it is good to be reminded of them.

Tuesday, October 16, 2007

Burning John Paul says hi from the Grave?

I really, really doubt it, but the flames do sort of match the old Pope's bent over stance. Would you really want a pope saying hi from the grave as a burning figure? What, catholics don't believe in hell anymore?

Anyway, [HERE] is the article.
As the first commentor on the article states,
When someone gets in there and shakes his hand, that would be a story, this makes all concerned look idiotic.

- Peter, London

Originally posted on

Friday, October 12, 2007

Classic ADO Constants

Just so I have 'em in one place.

' Microsoft ADO
' Copyright (c) 1996-1998 Microsoft Corporation.
' ADO constants include file for VBScript

'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3

'---- CursorOptionEnum Values ----
Const adHoldRecords = &H00000100
Const adMovePrevious = &H00000200
Const adAddNew = &H01000400
Const adDelete = &H01000800
Const adUpdate = &H01008000
Const adBookmark = &H00002000
Const adApproxPosition = &H00004000
Const adUpdateBatch = &H00010000
Const adResync = &H00020000
Const adNotify = &H00040000
Const adFind = &H00080000
Const adSeek = &H00400000
Const adIndex = &H00800000

'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4

'---- ExecuteOptionEnum Values ----
Const adAsyncExecute = &H00000010
Const adAsyncFetch = &H00000020
Const adAsyncFetchNonBlocking = &H00000040
Const adExecuteNoRecords = &H00000080
Const adExecuteStream = &H00000400

'---- ConnectOptionEnum Values ----
Const adAsyncConnect = &H00000010

'---- ObjectStateEnum Values ----
Const adStateClosed = &H00000000
Const adStateOpen = &H00000001
Const adStateConnecting = &H00000002
Const adStateExecuting = &H00000004
Const adStateFetching = &H00000008

'---- CursorLocationEnum Values ----
Const adUseServer = 2
Const adUseClient = 3

'---- DataTypeEnum Values ----
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
Const adChapter = 136
Const adFileTime = 64
Const adPropVariant = 138
Const adVarNumeric = 139
Const adArray = &H2000

'---- FieldAttributeEnum Values ----
Const adFldMayDefer = &H00000002
Const adFldUpdatable = &H00000004
Const adFldUnknownUpdatable = &H00000008
Const adFldFixed = &H00000010
Const adFldIsNullable = &H00000020
Const adFldMayBeNull = &H00000040
Const adFldLong = &H00000080
Const adFldRowID = &H00000100
Const adFldRowVersion = &H00000200
Const adFldCacheDeferred = &H00001000
Const adFldIsChapter = &H00002000
Const adFldNegativeScale = &H00004000
Const adFldKeyColumn = &H00008000
Const adFldIsRowURL = &H00010000
Const adFldIsDefaultStream = &H00020000
Const adFldIsCollection = &H00040000

'---- EditModeEnum Values ----
Const adEditNone = &H0000
Const adEditInProgress = &H0001
Const adEditAdd = &H0002
Const adEditDelete = &H0004

'---- RecordStatusEnum Values ----
Const adRecOK = &H0000000
Const adRecNew = &H0000001
Const adRecModified = &H0000002
Const adRecDeleted = &H0000004
Const adRecUnmodified = &H0000008
Const adRecInvalid = &H0000010
Const adRecMultipleChanges = &H0000040
Const adRecPendingChanges = &H0000080
Const adRecCanceled = &H0000100
Const adRecCantRelease = &H0000400
Const adRecConcurrencyViolation = &H0000800
Const adRecIntegrityViolation = &H0001000
Const adRecMaxChangesExceeded = &H0002000
Const adRecObjectOpen = &H0004000
Const adRecOutOfMemory = &H0008000
Const adRecPermissionDenied = &H0010000
Const adRecSchemaViolation = &H0020000
Const adRecDBDeleted = &H0040000

'---- GetRowsOptionEnum Values ----
Const adGetRowsRest = -1

'---- PositionEnum Values ----
Const adPosUnknown = -1
Const adPosBOF = -2
Const adPosEOF = -3

'---- BookmarkEnum Values ----
Const adBookmarkCurrent = 0
Const adBookmarkFirst = 1
Const adBookmarkLast = 2

'---- MarshalOptionsEnum Values ----
Const adMarshalAll = 0
Const adMarshalModifiedOnly = 1

'---- AffectEnum Values ----
Const adAffectCurrent = 1
Const adAffectGroup = 2
Const adAffectAllChapters = 4

'---- ResyncEnum Values ----
Const adResyncUnderlyingValues = 1
Const adResyncAllValues = 2

'---- CompareEnum Values ----
Const adCompareLessThan = 0
Const adCompareEqual = 1
Const adCompareGreaterThan = 2
Const adCompareNotEqual = 3
Const adCompareNotComparable = 4

'---- FilterGroupEnum Values ----
Const adFilterNone = 0
Const adFilterPendingRecords = 1
Const adFilterAffectedRecords = 2
Const adFilterFetchedRecords = 3
Const adFilterConflictingRecords = 5

'---- SearchDirectionEnum Values ----
Const adSearchForward = 1
Const adSearchBackward = -1

'---- PersistFormatEnum Values ----
Const adPersistADTG = 0
Const adPersistXML = 1

'---- StringFormatEnum Values ----
Const adClipString = 2

'---- ConnectPromptEnum Values ----
Const adPromptAlways = 1
Const adPromptComplete = 2
Const adPromptCompleteRequired = 3
Const adPromptNever = 4

'---- ConnectModeEnum Values ----
Const adModeUnknown = 0
Const adModeRead = 1
Const adModeWrite = 2
Const adModeReadWrite = 3
Const adModeShareDenyRead = 4
Const adModeShareDenyWrite = 8
Const adModeShareExclusive = &Hc
Const adModeShareDenyNone = &H10
Const adModeRecursive = &H400000

'---- RecordCreateOptionsEnum Values ----
Const adCreateCollection = &H00002000
Const adCreateStructDoc = &H80000000
Const adCreateNonCollection = &H00000000
Const adOpenIfExists = &H02000000
Const adCreateOverwrite = &H04000000
Const adFailIfNotExists = -1

'---- RecordOpenOptionsEnum Values ----
Const adOpenRecordUnspecified = -1
Const adOpenOutput = &H00800000
Const adOpenAsync = &H00001000
Const adDelayFetchStream = &H00004000
Const adDelayFetchFields = &H00008000
Const adOpenExecuteCommand = &H00010000

'---- IsolationLevelEnum Values ----
Const adXactUnspecified = &Hffffffff
Const adXactChaos = &H00000010
Const adXactReadUncommitted = &H00000100
Const adXactBrowse = &H00000100
Const adXactCursorStability = &H00001000
Const adXactReadCommitted = &H00001000
Const adXactRepeatableRead = &H00010000
Const adXactSerializable = &H00100000
Const adXactIsolated = &H00100000

'---- XactAttributeEnum Values ----
Const adXactCommitRetaining = &H00020000
Const adXactAbortRetaining = &H00040000

'---- PropertyAttributesEnum Values ----
Const adPropNotSupported = &H0000
Const adPropRequired = &H0001
Const adPropOptional = &H0002
Const adPropRead = &H0200
Const adPropWrite = &H0400

'---- ErrorValueEnum Values ----
Const adErrProviderFailed = &Hbb8
Const adErrInvalidArgument = &Hbb9
Const adErrOpeningFile = &Hbba
Const adErrReadFile = &Hbbb
Const adErrWriteFile = &Hbbc
Const adErrNoCurrentRecord = &Hbcd
Const adErrIllegalOperation = &Hc93
Const adErrCantChangeProvider = &Hc94
Const adErrInTransaction = &Hcae
Const adErrFeatureNotAvailable = &Hcb3
Const adErrItemNotFound = &Hcc1
Const adErrObjectInCollection = &Hd27
Const adErrObjectNotSet = &Hd5c
Const adErrDataConversion = &Hd5d
Const adErrObjectClosed = &He78
Const adErrObjectOpen = &He79
Const adErrProviderNotFound = &He7a
Const adErrBoundToCommand = &He7b
Const adErrInvalidParamInfo = &He7c
Const adErrInvalidConnection = &He7d
Const adErrNotReentrant = &He7e
Const adErrStillExecuting = &He7f
Const adErrOperationCancelled = &He80
Const adErrStillConnecting = &He81
Const adErrInvalidTransaction = &He82
Const adErrUnsafeOperation = &He84
Const adwrnSecurityDialog = &He85
Const adwrnSecurityDialogHeader = &He86
Const adErrIntegrityViolation = &He87
Const adErrPermissionDenied = &He88
Const adErrDataOverflow = &He89
Const adErrSchemaViolation = &He8a
Const adErrSignMismatch = &He8b
Const adErrCantConvertvalue = &He8c
Const adErrCantCreate = &He8d
Const adErrColumnNotOnThisRow = &He8e
Const adErrURLIntegrViolSetColumns = &He8f
Const adErrURLDoesNotExist = &He8f

Const adErrTreePermissionDenied = &He90
Const adErrInvalidURL = &He91
Const adErrResourceLocked = &He92
Const adErrResourceExists = &He93
Const adErrCannotComplete = &He94
Const adErrVolumeNotFound = &He95
Const adErrOutOfSpace = &He96
Const adErrResourceOutOfScope = &He97
Const adErrUnavailable = &He98
Const adErrURLNamedRowDoesNotExist = &He99
Const adErrDelResOutOfScope = &He9a
Const adErrPropInvalidColumn = &He9b
Const adErrPropInvalidOption = &He9c
Const adErrPropInvalidValue = &He9d
Const adErrPropConflicting = &He9e
Const adErrPropNotAllSettable = &He9f
Const adErrPropNotSet = &Hea0
Const adErrPropNotSettable = &Hea1
Const adErrPropNotSupported = &Hea2
Const adErrCatalogNotSet = &Hea3
Const adErrCantChangeConnection = &Hea4
Const adErrFieldsUpdateFailed = &Hea5
Const adErrDenyNotSupported = &Hea6
Const adErrDenyTypeNotSupported = &Hea7

'---- ParameterAttributesEnum Values ----
Const adParamSigned = &H0010
Const adParamNullable = &H0040
Const adParamLong = &H0080

'---- ParameterDirectionEnum Values ----
Const adParamUnknown = &H0000
Const adParamInput = &H0001
Const adParamOutput = &H0002
Const adParamInputOutput = &H0003
Const adParamReturnValue = &H0004

'---- CommandTypeEnum Values ----
Const adCmdUnknown = &H0008
Const adCmdText = &H0001
Const adCmdTable = &H0002
Const adCmdStoredProc = &H0004
Const adCmdFile = &H0100
Const adCmdTableDirect = &H0200

'---- EventStatusEnum Values ----
Const adStatusOK = &H0000001
Const adStatusErrorsOccurred = &H0000002
Const adStatusCantDeny = &H0000003
Const adStatusCancel = &H0000004
Const adStatusUnwantedEvent = &H0000005

'---- EventReasonEnum Values ----
Const adRsnAddNew = 1
Const adRsnDelete = 2
Const adRsnUpdate = 3
Const adRsnUndoUpdate = 4
Const adRsnUndoAddNew = 5
Const adRsnUndoDelete = 6
Const adRsnRequery = 7
Const adRsnResynch = 8
Const adRsnClose = 9
Const adRsnMove = 10
Const adRsnFirstChange = 11
Const adRsnMoveFirst = 12
Const adRsnMoveNext = 13
Const adRsnMovePrevious = 14
Const adRsnMoveLast = 15

'---- SchemaEnum Values ----
Const adSchemaProviderSpecific = -1
Const adSchemaAsserts = 0
Const adSchemaCatalogs = 1
Const adSchemaCharacterSets = 2
Const adSchemaCollations = 3
Const adSchemaColumns = 4
Const adSchemaCheckConstraints = 5
Const adSchemaConstraintColumnUsage = 6
Const adSchemaConstraintTableUsage = 7
Const adSchemaKeyColumnUsage = 8
Const adSchemaReferentialConstraints = 9
Const adSchemaTableConstraints = 10
Const adSchemaColumnsDomainUsage = 11
Const adSchemaIndexes = 12
Const adSchemaColumnPrivileges = 13
Const adSchemaTablePrivileges = 14
Const adSchemaUsagePrivileges = 15
Const adSchemaProcedures = 16
Const adSchemaSchemata = 17
Const adSchemaSQLLanguages = 18
Const adSchemaStatistics = 19
Const adSchemaTables = 20
Const adSchemaTranslations = 21
Const adSchemaProviderTypes = 22
Const adSchemaViews = 23
Const adSchemaViewColumnUsage = 24
Const adSchemaViewTableUsage = 25
Const adSchemaProcedureParameters = 26
Const adSchemaForeignKeys = 27
Const adSchemaPrimaryKeys = 28
Const adSchemaProcedureColumns = 29
Const adSchemaDBInfoKeywords = 30
Const adSchemaDBInfoLiterals = 31
Const adSchemaCubes = 32
Const adSchemaDimensions = 33
Const adSchemaHierarchies = 34
Const adSchemaLevels = 35
Const adSchemaMeasures = 36
Const adSchemaProperties = 37
Const adSchemaMembers = 38
Const adSchemaTrustees = 39
Const adSchemaFunctions = 40
Const adSchemaActions = 41
Const adSchemaCommands = 42
Const adSchemaSets = 43

'---- FieldStatusEnum Values ----
Const adFieldOK = 0
Const adFieldCantConvertValue = 2
Const adFieldIsNull = 3
Const adFieldTruncated = 4
Const adFieldSignMismatch = 5
Const adFieldDataOverflow = 6
Const adFieldCantCreate = 7
Const adFieldUnavailable = 8
Const adFieldPermissionDenied = 9
Const adFieldIntegrityViolation = 10
Const adFieldSchemaViolation = 11
Const adFieldBadStatus = 12
Const adFieldDefault = 13
Const adFieldIgnore = 15
Const adFieldDoesNotExist = 16
Const adFieldInvalidURL = 17
Const adFieldResourceLocked = 18
Const adFieldResourceExists = 19
Const adFieldCannotComplete = 20
Const adFieldVolumeNotFound = 21
Const adFieldOutOfSpace = 22
Const adFieldCannotDeleteSource = 23
Const adFieldReadOnly = 24
Const adFieldResourceOutOfScope = 25
Const adFieldAlreadyExists = 26
Const adFieldPendingInsert = &H10000
Const adFieldPendingDelete = &H20000
Const adFieldPendingChange = &H40000
Const adFieldPendingUnknown = &H80000
Const adFieldPendingUnknownDelete = &H100000

'---- SeekEnum Values ----
Const adSeekFirstEQ = &H1
Const adSeekLastEQ = &H2
Const adSeekAfterEQ = &H4
Const adSeekAfter = &H8
Const adSeekBeforeEQ = &H10
Const adSeekBefore = &H20

Const adCriteriaKey = 0
Const adCriteriaAllCols = 1
Const adCriteriaUpdCols = 2
Const adCriteriaTimeStamp = 3

Const adPriorityLowest = 1
Const adPriorityBelowNormal = 2
Const adPriorityNormal = 3
Const adPriorityAboveNormal = 4
Const adPriorityHighest = 5

Const adRecalcUpFront = 0
Const adRecalcAlways = 1



'---- MoveRecordOptionsEnum Values ----
Const adMoveUnspecified = -1
Const adMoveOverWrite = 1
Const adMoveDontUpdateLinks = 2
Const adMoveAllowEmulation = 4

'---- CopyRecordOptionsEnum Values ----
Const adCopyUnspecified = -1
Const adCopyOverWrite = 1
Const adCopyAllowEmulation = 4
Const adCopyNonRecursive = 2

'---- StreamTypeEnum Values ----
Const adTypeBinary = 1
Const adTypeText = 2

'---- LineSeparatorEnum Values ----
Const adLF = 10
Const adCR = 13
Const adCRLF = -1

'---- StreamOpenOptionsEnum Values ----
Const adOpenStreamUnspecified = -1
Const adOpenStreamAsync = 1
Const adOpenStreamFromRecord = 4

'---- StreamWriteEnum Values ----
Const adWriteChar = 0
Const adWriteLine = 1

'---- SaveOptionsEnum Values ----
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

'---- FieldEnum Values ----
Const adDefaultStream = -1
Const adRecordURL = -2

'---- StreamReadEnum Values ----
Const adReadAll = -1
Const adReadLine = -2

'---- RecordTypeEnum Values ----
Const adSimpleRecord = 0
Const adCollectionRecord = 1
Const adStructDoc = 2

Thursday, October 11, 2007

Good But Not Enough: Gates Increases The Army's Size Max By 65,000 reports that Defense Secretary Robert Gates rose the maximum troop level ceiling for the Army in 2010 by 65,000.

Considering the U.S. Army has a Teeth to Tail ratio of about 12:1, that equates to about 1 combat regiment, or about a third of a division. A good start, but far from sufficient. The initial Quadrennial Defense Review under Bush senior suggested that we have a standing Army of about 12 divisions. For political reasons Clinton brought that down to below 10, with many of those divisions failing to meet the Army's top rating for readiness. So, if that QDR was really non partisan, we are still about 2 1/2 divisions short of where we need to be to even think about occupying a country right.

I fear we will pummel Iran, and they will hit back, and then we will not have enough troops to really deal with a big war, and the edges of American Global Security arrangements will start fraying giving rise to all sorts of problems (North Korea making moves, Russia becoming more aggressive, loss of value in the U.S. dollar, just to name a few bad things we face). Stuff that we are seeing now, just on a bigger and more dangerous scale.

Read more about Gates's plan [HERE].

Tuesday, October 09, 2007

Cool But Scary: Insect Sized UAV's Spotted in New York

It looks like the Man already has insect sized UAV's and is testing them out on the streets of New York, if [this] wired article is to be believed.

Awesomely cool, unless you are one of those civil rights freaks that is worried that it is becoming easier for the government to constantly survey it's citizens, from where you web surf, to how they spend their money, what they watch on TV, and now real time video surveillance. What's to worry about? Actually much, not so much now, but down the road. Like it or not, we are headed to and in many ways are already in a surveillance society. Watch your data shadow...but make sure you have one, because if you don't that comes up too.

It is good to see the guys at the wired defense blog are blogging about something interesting instead of their usual whining about Blackwater.

Protecting Images on a Web Site

Ultimately, anything that displays on a digital screen can be copied, but here are a few tips that I picked up for protecting images on a website.

1) Use javascript right click disablers. I won't list the code here, but do a search on web sites like dynamic drive and they are pretty easy to find.

2) Wrap images in anchor <a> tags. Even if the don't point anywhere, it will stop people from dragging images off your site to the desktop.

3) Put your image as a background of a div or place another div over your image. This also prevents right click and drag.

4) You can use an overlapping div with a see through image as water mark to protect people from screen shotting images (or at least if they do they will have to get rid of the water mark somehow).

5) Lastly, and this is the technique that I'm working on right now, is to use AJAX to dynamically load javascript that in turn dynamically loads image URL's. This will cause the image URL's to not show up in your view source.

Some webmasters go so far as to use stenography/cryptography techniques to embed a digital signature into images as well, so that if images are copied the digital signature will give the thief away. A good idea, but once images are even slightly edited, that signature goes away so I think this might be going a bit far.

Ultimately, there is no full proof way to protect images, but using any one or a combination of the above five methods will cut down on image loss and make your users who want to post photo galleries on sites that you run feel more secure about their images. For legal reasons though, as well as setting realistic limitations, I would make users understand that nothing is full proof.

Monday, October 08, 2007

Rumor: Russian Staff at Iranian Nuclear Site Scram in a Hurry reports that some Russian nuclear techs working in Iran left in a hurry. This hasn't been confirmed by any other source, but if it is true, speculates that trouble could be coming.

Read more [HERE].

Jihadist Pick Hillary

Yep, our islamo-fascist friends want Hillary to be our president in '08.

Read more [HERE].

Saturday, October 06, 2007

640 Gig Flash Drive?

4sysops reports that a Utah based startup (yes...Utah) will release 640 gig flash memory drives next year. They will be about 100x more expensive then conventional hard drives when they initially come out, but expect that price to drop.

I'd say we are about 5 years out before flash memory drives become standard.

Read more [HERE].

Pentagon BS: National Guard Unit Gets No Benefits

Bean counters in Washington decided to extend a Minnesota National Guard unit's tour to 729 days, 1 day short of the 730 days required for the National Guard unit's members to receive additional GI benefits. The unit's 729 day deployment, however, was one of the longest deployments of any unit in Iraq.

So, some people are calling B.S. on this, and so am I. It is not helpful to the war effort when bull sh*t like this pops up. The Bush administration needs to act speedily to correct this.

Read more [HERE].

Awesome List of Free and Free Trial Online RPG's

Check out this list of completely free and free trial rpg's.

The list is [HERE].

10 Magic Tricks Revealed

Here is a link to 1o videos on how to perform simple magic tricks.

Read more [HERE].

The Beautiful People: Turns Out Aren't So Beautiful

Here is a great link to that shows what the Hollywood icons really look like.

Read more [HERE].

Media Bias: Military Analyst Resigns Due to Leftie Slant

This is old, but still worth noting. Ken Allard bails MS NBC due to the networks leftie bias.

Read more [HERE].

UFO Archive: Chicago Airport

This was an UFO interesting sighting because it was reported by multiple witnesses.

Read more [HERE].

Friday, October 05, 2007

Simpsonize Yourself!

A friend of mine from work just found this site,, which is kind of neat. Upload a photo and see how you would in the world of the Simpsons.

Brought to you by Burger King (Do I get any money for saying that? Reference Idiocracy...the funnest movie I've seen in a long time).

Thursday, October 04, 2007

Target Targetted.

I guess there is a big class action lawsuit against Target for not making its site accessible to blind people. The American Disabilities Act may apply here. To me, they are a private company, and it is a technology issue, not a disabilities issue. Companies have limited budgets, and to make web pages viewable to all technologies take time and money. Is it discrimination that maybe some pages on Target's website don't work in Safari 1.2? Is that Mac hating? Is Mac hating a crime?

Anyway, decide for yourself by reading more [HERE].

For that matter, do blind people really shop at Target? Should target have audio readers so as you walk by each item an audio player yells out what the item is? This is ridiculous. The lawyers here, if they expect to be paid and are not doing this out of the kindness of their hearts, as well as the Berkley student who brought on the law suit, should be forced to renounce their citizenship and get out. We don't need people abusing the legal system here, and they are just adding more dead weight to our society.

UC Berkley Post Lectures on YouTube

Interesting...UC Berkley put up a 300 hours of video taped lectures on youtube.

Check tem out [HERE].