Sunday, September 25, 2005

Downloads from PDC 2005

Downloads

Thanks to jMM' . for the tip.

Wednesday, September 14, 2005

LINQ - Language INtegrated Query

As has been rumored C# and VB.NET are being enhanced to include native data access within the language -- along the lines of SQL in VFP.

Read more here


Wednesday, July 27, 2005

Google Toolbar for Firefox

Gmail, Desktop search, BlogThis, News, Spell Check in HTML forms (except for the BlogThis popup).

Good stuff, maybe I'm ready to come off of my accidental blogging sabbatical...

Monday, June 13, 2005

SpeakEasy DSL

We just moved (part of the reason posts have been so few and far between lately) - so I called SpeakEasy.net to cancel my DSL service at the old place.

To cancel the contract is $300.

Looking over my original paperwork, it appears I paid $150 for hook-up. So it's not like they are trying to recoup those costs.

Of course they are willing to transfer my service to a new location. But service is already setup there -- and it would no doubt mean that I'd be starting my year all over again.

As goes cell-phones providers, so goes cable and now DSL.

Wednesday, May 18, 2005

Google Maps + Craigslist = HousingMaps

Yet another super cool thing you can do with Google Maps.

Now they just need to get it work with Pocket PCs...

Wired article here

Tuesday, May 17, 2005

The Jeff Pulver Blog: E911/VoIP: Death of the Broadband Parasite in the USA?:

Upcoming FCC rulings may kill independent VOIP by requiring 911 service.

"...Strange as how it sounds, even Canada looks to be a more fertile ground for continued technology innovation than the US, if E911 becomes mandated for VoIP, including nomadic VoIP offerings. If VoIP was the first great driver of broadband, I fear that America will drop even further down the ranks of the countries in broadband penetration and that will further sink the US economy for many decades to come.

Unless something was totally misunderstood with regards to the FCC immediate intentions, 2005 may go down in history as the time we saw both the rise and fall of the unaffiliated VoIP service provider..."

more

Monday, May 16, 2005

UML for BioHacking...

We are rapidly moving into a world where biology can be as manipulable as data. After all, DNA is code; life is information. The new tools and methods we're developing for bioengineering reflect this parallel, and the philosophies underlying the "hacker" ethic (in the original sense of someone devoted to exploration, invention and discovery) are being absorbed by the biological disciplines.

more...

Don't miss the link to Biomodeling.


Monday, May 09, 2005

CSLA .NET

CSLA .NET is the architecture and framework described Expert Visual Basic .NET Business Objects and Expert C# Business Objects books from Apress

CSLA .NET

Friday, May 06, 2005

Groove Virtual Office - Virtual office software for sharing files, projects and data.

Microsoft has purchased Groove

It looks pretty slick from the overview. Don't forget to check the Rapid Solutions section.

Integrates with SharePoint, seems more powerful than Infopath, I could see it being used as a Team Studio lite...

Wednesday, April 27, 2005

PlateSpin Products - PowerP2V

100% Automated Conversions between Physical and Virtual Machines are the claims made by this tool.

Sunday, April 24, 2005

The Fox Show

Andrew MacNeill has thrown himself in the Podcasting ring with The Fox Show.

He has a great read on the pulse of the Fox community, the show covers a broad range of topics. Enjoyable and informative!

Thanks Frank Burcaw from the ProFox list.

Tuesday, March 29, 2005

Project Documenting Machine

Document your Visual FoxPro projects with this tool.

Thursday, March 24, 2005

What runs when Windows starts?

Silent Runners - script documentation

VB script that interrogates the windows registry for programs that run at startup.

Great for identifying adware, malware, and those lame programs that HP and Epson install etc to tell you all about your printing process...

Foxite.COM Community Weblog

There is a new VFP blog in town, and I'm now a part of it.

This may cut down on my posts here at Musings, certainly related to VFP -- but head on over and checkout the FoxCite.com blog -- maybe consider starting one of your own!

Wednesday, March 23, 2005

FoxCast

FoxCast

"FoxCast.org supports user groups by providing top VFP speakers, presenting from locations around North America and abroad. User groups can connect to the live, interactive monthly meetings or replay recordings of past events at their monthly meetings."

Registration and most (if not all) seminars are free, great resource.

Monday, March 14, 2005

Developers Report on Power, Productivity and Extensibility of New Visual FoxPro 9.0

A Press Release about developers and tool vendors adopting VFP9.

"Visual FoxPro 9.0 is the biggest upgrade since the product was first released," - Doug Hennig

We couldn't agree more, this *is* the version to move to. Look for future postings "99 Reasons to Move to Visual FoxPro 9" on this blog.

Tuesday, March 08, 2005

VFP: Call Report Writer from COM

We needed to move a number of existing VFP reports to the web quickly. One technique is to issue REPORT FORM ASCII TO from a COM object.

After digging around and testing we found that it was possible. There are two things to keep in mind.

1) COM objects cannot raise UI events.
The commands to ensure this are:
SET NOTIFY OFF
SET TALK OFF
REPORT FORM myRepo NOCONSOLE ASCII TO myrepo.txt

2) COM objects must be compiled as OUT OF PROCESS (EXE) not IN-PROCESS (DLL).
(Special thanks to Malcolm Greene of ProFox for this tip)

Here is the code we used to test the premise:


* run as is, assumes you have a FOXUSER file in use
***************************************************
* clear prior runs, create report from FOXUSER
CLEAR
CLOSE ALL
CLEAR ALL
ERASE myrepo*.*
USE SET("RESOURCE",1) AGAIN IN 0
CREATE REPORT myrepo FROM ALIAS()

* create main program with COM class
TEXT TO cMain NOSHOW
DEFINE CLASS myRepo AS Custom OLEPUBLIC
PROCEDURE DoReport(tlTest)
SET NOTIFY OFF
SET TALK OFF
SET SAFETY OFF
IF m.tlTest
STRTOFILE("This is a test","myrepo.txt")
ELSE
REPORT FORM myRepo NOCONSOLE ASCII TO myrepo.txt
ENDIF
SET SAFETY ON
RETURN FILE("myrepo.txt")
ENDPROC
ENDDEFINE
ENDTEXT

* write out the main program
SET SAFETY OFF
STRTOFILE(m.cMain, "myrepo.prg")

* add to project, compile EXE (not DLL)
CREATE PROJECT myrepo NOWAIT NOSHOW
_VFP.ACTIVEPROJECT.FILES.ADD("myrepo.prg")
BUILD EXE myrepo FROM myrepo
RELEASE WINDOWS PROJECT
SET SAFETY ON

* call without com
SET PROCEDURE TO myrepo.prg
o=CREATEOBJECT("myrepo")
TryMyRepo(o)
RELEASE o
SET PROCEDURE TO

* call with com
o=CREATEOBJECT("myrepo.myrepo")
TryMyRepo(o)

PROCEDURE TryMyRepo(o)
TRY
? o.DoReport(.T.)
? o.DoReport()
CATCH TO oExc
? oExc.MESSAGE
ENDTRY
ENDPROC

Sunday, February 27, 2005

What Great .NET Developers Ought To Know

"How many years .NET experience did you say you have?"

Thursday, February 17, 2005

Regular Expression Library

Regular Expression Library: "Welcome to RegExLib.com, the Internet's first Regular Expression Library. Currently we have indexed 898 expressions from contributors around the world."

An execellent website, thanks to Stuart Dunkeld via ProFox for pointing it out.

Wednesday, February 16, 2005

VFP 9 & opportunistic locking

A reader sent in the following:

“We recently discovered that our VFP8 app was encountering corrupt databases (error 2091) regularly and have determined the cause to be opportunistic locking on the server and workstations. We have been unable to find any reference to opportunistic locks or their impact on VFP RDBMS in any of the VFP documentation from vfp5 through 8.”

The resolution is related to how the OS is disk caching.

Windows XP SP2 / Win2k*:

Cut and paste the following into a file called woplocks.reg and run it on the workstations:



REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]
"EnableOplockForceClose"=dword:00000001
"EnableOplocks"=dword:00000000
"UseOpportunisticLocking"=dword:00000000


Cut and paste the following into a file called soplocks.reg and run it on the server

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"EnableOplockForceClose"=dword:00000001
"EnableOplocks"=dword:00000000


Novel settings are:

Opportunistic Locking set off
Cache Rights set off
Delay Rights set off
Packet Burst set off
True Commits set ON

Wednesday, February 09, 2005

Malicious Software Removal Tool

New tool from Microsoft, deals with malicous programs.

This tool scans for and cleans malicious software associated with the following security threats:
• Berbew
• Blaster
• DoomJuice
• Gaobot
• Korgo
• Mydoom
• Nachi
• Netsky
• Randex
• Sasser
• Zafi
• Zindos

Tuesday, January 25, 2005

EMS Professional Software and Specialty Services

Looking for a copy of old software manuals, or the install disks themselves? Check out EMS Old Software Exchange from here.

Also links to shareware, IQ testing, survival publishiing and build-it-yourself reading primer templates.

A golden find, thanks to Dave Bernard via the ProFox list.

Friday, January 21, 2005

Sleep Fox

Put VFP in a minimum resource wait state, but still pay attention to the internal event loop:


PROCEDURE DoSleep
LPARAMETERS tnSeconds
LOCAL lnSeconds
DECLARE Sleep IN WIN32API integer

lnSeconds = SECONDS()
DO WHILE SECONDS() - m.lnSeconds <> m.tnSeconds
    SLEEP(m.tnSeconds*100)
    DOEVENTS
ENDDO
CLEAR DLL SLEEP


Thanks to late night buddy
Garrett who has a recent post on using SourceGear Vault with VFP Project Manager. The single user version is free (as in beer).

Thursday, January 20, 2005

Named References in VFP-SQL

VFP allows us to use named references for fieldnames, tablenames, filenames, etc with its various commands. But, not always with the SQL sub-language...

This works:

REPLACE ALL (crsUpdates.FieldName) ;
    WITH (crsUpdates.NewValue);
    FOR PrimaryKey = (crsUpdates.PK)

but not this:

UPDATE table1;
    SET (crsUpdates.FieldName) = (crsUpdates.NewValue) ;
    WHERE table1.PrimaryKey = (crsUpdates.PK)

or any of these...

UPDATE table1 ;
    SET &crsUpdates..FieldName = (crsUpdates.NewValue) ;
    WHERE table1.PrimaryKey = (crsUpdates.pk)

UPDATE table1 ;
    SET EVALUATE(crsUpdates.FieldName) = (crsUpdates.NewValue) ;
    WHERE table1.PrimaryKey = (crsUpdates.pk)

However, if you hard-code the SET field, it works:

UPDATE table1 ;
    SET MyField = (crsUpdates.NewValue) ;
    WHERE table1.PrimaryKey = (crsUpdates.pk)

I'm sure it's been this way forever -- I've just don't recall running across it before.

Thursday, January 13, 2005

Joel on Software at Crossroads, Tues Jan 18th

Joel on Software Dinner: Bellevue WA Jan 18th

"I'm planning to come to Seattle in January to speak at an Amazon.com developer's conference. While I'm there, I thought it would be fun to meet some readers over dinner, so if you're going to be in the area, I hope you will be able to come!

I suggest we meet at the food court at the Crossroads Mall, at 7:30 PM Tuesday, January 18th, 2005."

Monday, January 10, 2005

Automating Telnet with Expect

As long as Telnet has been around, I was suprised to find that there is no native way to automate it.

I need a process on a Wintel box to access a TSX system remotely and kick off a process. Manually I can Telnet to the box, provide user/pass and then start the process. But when trying to automate the process I find there is no native way to respond to a password prompt from Telnet.

Enter "Expect". Written for *nix in TCL there is a port that runs on Wintel. The documentation is a bit sketchy, but I got it to work.

You can call Expect with -f and provide an input file. The input file for the whole process looks like this:


spawn telnet 1.0.2.24
expect "Logon please:"
send "myusername\r"
expect "Password:"
send "mypassword\r"
expect "32sys>"
set timeout 1000
send "c:\\bin\\myscript\r"
expect "32sys"


The \r is the return control, notice double back-slash for the directory name. The package comes with TCL source and its own version of telnet. The expect "32sys" lines have expect looking for the command line prompt.

Whatever you are calling on the remote side should have limited output, when working with TSX I get a minimum of 2 lines of control characters that look like garbage. Originally the remote process was reporting progress on exporting data... this made for too much information for Expect to ... well, expect.

Wednesday, January 05, 2005

Execscript kicks the Lama's ass

Andrew Ross-MacNeil turned me on to some interesting ideas with EXECSCRIPT at Devcon this year. I've always had a little program to set hot keys to clear my environment , build a project, ala Tom Rettig's CA.prg.

Writing conditional code from execution in a hotkey was always a bit limiting, but with EXECSCRIPT this is no longer true!



ON KEY LABEL f5 EXECSCRIPT ;
( ;
[ CLOSE ALL ] + CHR(10) + ;
[ CLEAR ALL ] + CHR(10) + ;
[ CLEAR ] + CHR(10) + ;
[ SET SYSMENU TO DEFAULT ] + CHR(10) + ;
[ BUILD APP myapp FROM myapp RECOMPILE ] + CHR(10) + ;
[ IF FILE("myapp.err") ] + CHR(10) + ;
[ MODIFY FILE myapp.err NOWAIT ] + CHR(10) + ;
[ ELSE ] + CHR(10) + ;
[ DO myapp ] + CHR(10) + ;
[ ENDIF ] ;
)

Tuesday, January 04, 2005

Visual FoxPro 9 Goes Gold / BetaNews babbles on incoherently...

A weak article with bad information about VFP9 release here.

Some mention of the extended report writer and …
“…FoxPro 9.0… embeds SQL in the FoxPro language, and is more extensible, allowing developers to introduce code that benefits their end user applications.”

How about the *native* SQL syntax has been extended to include virtually unlimited tables, joins, sub-queries and unions; projections, derived tables and enhanced correlation support?

How about new data types, new index types, enhanced data adaptors for cursors and xml?

How about more granular control on how tables are opened, records are refreshed, transactions are implemented?

How about Rushmore enhancements (especially the late breaking improvements to query optimization)?

How about language additions like CAST() and ICASE()?


If you’re gonna try to write an article based on a press release, at least get it fact checked.


Of course, the comments add salt to the wounds…1 Comment on the article entitled "Fox is Dead", then 4 comments on that comment defending the product.