Quote of the Day

Friday, November 30, 2007

Coincidence? I think not...


Thursday, August 09, 2007

De-Crappify part 2

As a follow-up to my last post, here are a couple utilities to aid in cleaning out the crap from XP:

My Dad told me about this one: Startup Inspector - user friendly alternative to msconfig. There is a "consult" button that goes out and pulls back info from a knowledgebase about known startup items, whether they are good, bad or ugly.

And a co-worker told me about this: Crap Cleaner - Cleans out the crap from your registry, temp files, cookies, etc. Knows about different browsers, etc.

So, with a little bit of regular housekeeping using these utilities as well as spyware scanning (ie. Adaware, etc.), virus protection and Windows updates you can keep your XP machine very happy and running lean and mean.

Friday, August 03, 2007

De-Crappify Your Windows XP PC

Video tutorial on turning off non-essential background programs, cleaning up spyware, cleaning your registry, etc. Most of this I knew already (I am usually pretty anal about what I install to begin with) but was a good refresher and is motivating me to doing this stuff again as my PC's seem to be getting a little doggy lately. Anyway, just ran across this and thought some of my non-Vista friends and colleagues might get some use from this. Enjoy!


Click here to view the screencast

Thursday, June 28, 2007

Xiine - All You Can Read



Just read about this on Claudio's blog and thought I'd check it out. I must say I am very impressed with this piece of software. I have been a long-time user of Zinio and subscribe to a couple of zines on that platform. Although I have not done a thorough side by side comparison I will say that Xiine definitely has some features that I like. The zooming is better. You can rotate the zine in case your on a portrait monitor or tablet PC. Many options for layout if you don't like split pages you can read in a scrollable fashion, etc. I was able to pull in several back issues of CoDe from my subscription. Although, it only goes from Sept 2003 up to July/August 2004 for some reason... (I better check my current subscription status although I'm sure if it lapsed it was recent...)
Anyway, kudos to the EPS team for creating this slick application using some of the latest technology. Make sure to check it out and read more on Markus' blog.

Monday, May 21, 2007

Business Decision Regarding VFP?

Mike Feltman just posted on his blog a counter-point to Microsoft's announcement. He brings up some very interesting points as to whether this was truly a "business" decision based on facts. I have been ranting for years (ask the people I work with) about the lack of respect VFP got from within Microsoft and the development community as a whole. I mean seriously, VB (pre .NET) was their idea of a data-centric programming language? And what about the horrible IDE called Visual Studio that it was packaged in. Ugh! If you ask me, they should have re-branded Visual Studio along with VB and those tools would probably be doing much better in the market place.
Andy hit the nail on the head when he talked about "the perception of the uninformed, marketing and buzz-word driven, benighted people who wouldn't dream of considering or using VFP anyway". Microsoft helped to feed that perception, in my opinion, or at least did NOTHING to refute it. Perhaps an internal memo educating their own people in the development tools division might have done something.
So yes, business decision it was, but I agree with Mike that this business decision was made long ago.

So, no more Visual FoxPro. Now what?

Great blog post by Andy Kramek on Microsoft's recent announcement concerning VFP. Andy's thoughtful insight is always refreshing.

Friday, May 04, 2007

It's a Good Day for Foxpro, etc.

Well, after all the hand wringing and gnashing of teeth the past few weeks over Microsoft's announcement I've had a pretty good week business wise.

First, we're being asked to help another software shop stabilize some legacy VFP code in some existing apps. Not too glamourous, but it's work and it's VFP. A re-write is not in the works due to $$$ but they are successfully deploying under the VFP9 Sp1 runtime.

Second, I just did some really cool enhancements to an existing app that gets data through an ASP.NET web service. In the same app I just added the Desktop Alerts Beta program from VFPx using a timer object to fire it off. - the best experience I've had with beta software in a long time. Client is very happy.

Third, Tod McKenna announced on his blog that their shop just purchased 5 new VFP9 licenses.

And, the icing on the cake, we just got sign-off on our first significant .Net application. We're going to try standardizing on StrataFrame which I will be giving a small demo with at the upcoming Chicago FUDG user group next Tuesday.

So business is pretty good at the present moment, VFP development included.

Not to mention, several MVP's have recently signed the MasFoxpro petition, which I agree, will probably not change Microsoft's position, but it sends a message that VFP is still a great tool and they are going to continue supporting the community and their clients.

Tuesday, April 17, 2007

Exploring VFP on Rails

My friend Brian Marquis recently showed some samples of his early concept design for VFP on Rails at the Chicago Foxpro User Group. Although the samples themselves were something you could do pretty easily with pure ASP or other web scripting tools, the underlying framework that he is creating is very intriguing.

As the name implies, he is attempting to follow the same tenets and design patterns of the very popular Ruby on Rails framework. The main RoR description states "Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern".

I am not a web developer (not even close!) and I have not used RoR, but I am a fan of well designed frameworks that make my job easier, which in turns makes my clients happier, etc. That's why most of my VFP applications have been developed with the Visual FoxExpress framework, which happens to be a very well designed framework with full nTier architecture and implements several design patterns in a very elegant way.

So, just as an experiment, I decided to put VFP on Rails to the test and see how quickly I could create a search demo (based on Brian's simple customer search demo) that does not go directly at a VFP table, but rather requests data through an existing VFE business object through COM. I mean, why shouldn't I be able to have access to the business objects I've already created from the web? It turned out to be incredibly easy.

First, I created a new folder under Views to keep my VML files separate from the other samples. (VML is the extension Brian has assigned to the "view" or presentation layer scripts, not to be confused with VFP views.) Then, I compiled one of my clients VFE apps as a DLL and registered it. (This app happens to have it's data in SQL Server)

I then copied Brian's VML files and edited them to be specific to my search:

Search.VML - Changed "say" in this line of code to "agents"

Ajax.Request("<<fullurl(oDispatchContext,'/agents/list')>>", {


List.VML - just changed the cursor (alias) name and only display active records.

<table>
<%
SELECT CurAgents
SCAN
If Not CurAgents->Inactive
%>
<tr><td>
<<CurAgents->Ag_Name>>
</td></tr>
<%
Endif
ENDSCAN
%>
</table>
<%
IF oDispatchContext.hasErrors()
FOR EACH error in oDispatchContext.errors%><<error>><br />
<%
ENDFOR
ENDIF
%>


Agents.Prg - This is in the Controllers folder.


DEFINE CLASS agents AS Custom
greeting = ""
HIDDEN oAgent
oAgent = .NULL.
HIDDEN oApp
oApp = .NULL.
lDestroyInProgress = .F.

PROCEDURE Destroy
This.lDestroyInProgress = .T.
IF VARTYPE(This.oAgent) = "O"
This.oAgent.Release()
this.oAgent = .NULL.
ENDIF
IF VARTYPE(This.oApp) = "O"
This.oApp.Cleanup()
This.oApp = .NULL.
ENDIF
ENDPROC

HIDDEN PROCEDURE oAgent_Access
IF NOT This.lDestroyInProgress AND VARTYPE(This.oAgent) <> "O"
This.oApp = CREATEOBJECT('ptrak.ptrakapplicationobject')
This.oAgent = This.oApp.oBizObjs.Add("AgentsViewBizobj")
ENDIF
RETURN This.oAgent
ENDPROC

PROCEDURE hello
LPARAMETERS user
this.greeting = "Hello " + user
ENDPROC

PROCEDURE search
ENDPROC

PROCEDURE list

LOCAL loAgent, ;
lcXML, ;
lcCurrentDirectory

loAgent = This.oAgent

IF NOT EMPTY(this.criteria)
* Set operator to contains (defaults to "Begins With")
loAgent.oCursor.Parameters.Item(2).cOperator = "Contains"
loAgent.SetParameter("VP_AG_NAME",this.criteria)
ENDIF
loAgent.Requery()
lcXML = loAgent.GetXML()
XMLTOCURSOR(lcXML,"curAgents")
loAgent = .NULL.
ENDPROC
ENDDEFINE


I then just navigated to http://localhost/WebRoot/Default.aspx/agents/search and it works!

Naturally, it's a bit more code to go at a COM server vs. native VFP data, but the point is, it was do-able using VFP on Rails. I'm still a LONG way from being able to write a complete usable web application with full CRUD features, but at least I know I don't have to worry about the business and data tier since I can use my favorite tool for this: VFP. When it's time to get serious I can either learn some presentation layer tools or farm that part out to experienced web developers while I focus on the business logic.

Brian is focusing on trying to keep the implementation and configuration as simple as possible. Currently, it's as simple as creating a new web share in IIS and registering a single COM server. No other configuration is required. Controller classes can be deployed without stopping the web server and I think there will be a new "autocompile" feature added soon so that you don't have to remember to compile PRG changes during development.

I am aware of at least 4 other VFP based web tools. I'm not sure how this compares with those as I've not had the opportunity to try them. Of course, this is in the very early stages and Brian is hoping to generate some interest from other developers before submitting to VFPX on CodePlex.