
by Alex Feldstein (noreply@blogger.com) at July 24, 2008 04:00 AM
Just recently upgraded the site to WordPress 2.6, using the Automatic Upgrade plugin. It went well, until the very last step when it couldn’t log me back into the web site. Shutting down and restarting the web browser seemed to fix that. Next time I went to log into the administrative site, some funky PHP errors appeared that appeared to be caused by blank lines at the ends of the PHP files provided by the Automatic Upgrade feature. I edited the files, removed the last (blank) line, restarted the web server and all is well. Stay tuned.
by Mike Feltman (noreply@blogger.com) at July 23, 2008 05:13 PM
I have been playing around a bit with NetExtender by eTechnologia from Colombia, these guys do some nifty work if it comes to opening the .Net framework for vfp users, it also enables us, VFP addicts, to share some of the datapower of the fox with those poor guys and galls who are so sick to use .NET as is.
One of the pretty features I found is that it is possible to send an email with basically 5 lines of code.
It could use a bit of tweaking to make it a bit more robust, but here are the lines:
omail = clrCreateObject("system::net::mail::mailmessage", ;
"MailaddressOfSender",;
"MailaddressOfReceiver",;
"Subject",;
"text to send")
This one line creates a mailmessage object. I found that adding the 4 parameters, while creating the mailmessage object, is the simplest way to create such a mailmessage.
The next line makes clear that this message is in HTML format,
omail.isbodyhtml = .t.
The next line is this:
osmtp = clrCreateObject("system::net::mail::smtpclient", ;
"URLToTheMailServer", 25)
This line creates the smtp client, it takes two parameters, the first one is the URL to the mailserver.
It should look like mail.yourserver.com or smtp.YourServer.com
The second parameter is the port of the server.
If your server requires authentication to send e-mails you need to use the following code:
ocred = clrCreateObject("system::net::NetworkCredential",;
"YourUserNameOnTheServer", "YourPassword")
Then you need to add the credentials to the smtpclient object, here is the rocket-science line for it:
osmtp.Credentials = ocred
OK, maybe you need to sit back for a moment. The hardest line is this:
osmtp.send( omail )
![]()
The clrCreateObject() function I used in the code is one of the function provided by eTechnologia. There are a few more. I will show them, and their usage, in following blogs.
I will keep on playing with the NetExtender.
I will keep you bugging with short notices on useful things I found.
You didn't really think you could get rid of me that easy? NO WAY! ![]()
NetExtender really is very affordable. 120 dollars is not much at all, for those in the Euro zone, this comes down to about EUR 75.
By buying the package you not only get the NetExtender for VFP but also the Net Compiler for VFP, It turns VFP code into .NEt assemblies, executables and, since the latest update, it also enables you to use foxcode behind your aspx pages.
The product has now a bit more than 50% of the VFP features implemented and the progress of the work is going on and on. In my opinion this initiative, along with Graig Boyd's VFP Studio makes the fox stronger than ever. Foxes never die, they re-incarnate in new bodies. (Hmmm, or is this a cat in a cloaking device, meaning this fox/cat should have 9 lifes.)
What I see happening here is that due to the support from our own community an interesting development started. MS let us off the leash. At least now we know for sure that there will be no marketing around the best product ever at least from the side of MS. (Not that they ever did much, but that is common knowledge.) Due to the community itself the fox lives on, in another form maybe, but still as productive and fast as we are so used to. With these developments we can blow other developers right out of the water.
By default if you open a new window in Tab based browsers like FireFox 3 or IE 7 new windows pop up in new tabs. In most situations this is the desirable behavior, but sometimes it's in fact required to get a new window to pop up on the desktop and get it activated immediately.
I ran into this situation today in a complex Intranet application that basically allows editing of several sets of related data simultaneously to content in the 'main' window. While I fully agree with the the school of thought that believes too many windows in Web UIs are evil, in this situation I really couldn't see good alternatives. Alternatives are opening in Tabs (not acceptable if more than one window gets opened at a time) or using DOM internal pop up windows (ala HoverPanel). The latter also isn't really acceptable as the pop up forms are rather complex and page management would get increasingly complex to manage in a single page especially since often times the SAME forms are popped up with different data.
So in the end I decided separate windows are probably the best choice. It's been a while since I had last thought about this so I figured a quick window.open() would be all that's needed but as I found out, that only opens new tabs. How do you 'force' windows to open as windows rather than in a new tab?
As it turns out it's quite simple to do - you can specify a few parameters in the window options to effectively force the window to pop up as a window instead of loading into a tab:
var childWindows = [];
function showApplet(appletName,id){var win = window.open( String.format("applet.aspx?applet={0}&id={1}",appletName,id),
"_blank",
"resizable=yes,scrollbars=yes,width=800,height=600,status=yes" ); win.focus(); // force active childWindows.push(win); // save for later release}
Any time window.open() specifies parameters that are explicitly attributable to a 'window' - like resizable, scrollbars or height or width - the window does in fact get popped up as a window. Omit any of these window specific parameters and the window loads using the browser's default settings. Note the win.focus() which is useful in forcing the new window to be activated. This is especially useful if you create only one new window and repeatedly load content into it as these windows generally do not come to the top of the desktop window stack.
Speaking of default settings, window loading can also be controlled via the browser settings. In FireFox you can specify whether to open windows in tabs or in a new window:
Other browsers have similar options.
However, the above code snippet allows overriding these settings so there really should never be a reason to choose the Open in New Window option.
Note that when building your own applications and forcing windows to pop up it's often also important to remove windows again when you're done with your page, or after an operation has completed. In my app scenario for example I had to close a window after some action occurred in the child window or a final Save operation occurs in the main window for example.
So it's useful to keep track of windows opened in a page and then maybe even automatically close the child windows when the page is navigated off of. You'll notice in the code above that windows are stored in a childWindows array, which is done for precisely this reason. To close out all windows the following code is used:
function unloadChildWindows(){ for (var x=childWindows.length-1; x > -1; x--)
{ var win = childWindows.pop();win.close();
win = null;}
}
$(document).ready(function(){$(window).unload( unloadChildWindows );
});
which runs through each of the child windows and closes them. If you want to automatically close all windows when the page is closed or navigated off of you also hook the window.unload event and fire this function - here using jQuery to fire the event and route it to the function.
All that said, it shouldn't be often that you need to pop up windows on a Web page. It's a bad Web UI practice in general, but in those occasions that you must it's usually a requirement that can't be worked around. Hopefully this will be useful to you in those rare circumstances.
After over a year’s hiatus, Chapter 7 of Diane Duane’s self-published-over-the-net novel, The Big Meow, has finally been released to subscribers! Check out the first six chapters, posted for free, and hopefully, you’ll decide to become a subscriber. After the year that Diane has apparently had (multiple family losses, multiple medical issues including gall bladder), a few extra subscribers would be a good thing.
My biggest remaining problem is getting OA2007 to talk to Outlook and ideally run on my machine. If the one person that has read this far knows any OA experts, I'd love to get their advice.
by noreply@blogger.com (Steve Bodnar) at July 22, 2008 12:52 AM
The native New Property and New Method dialogs in VFP have many shortcomings, including being modal, non-resizable, and not supporting MemberData so the case you type for the member isn't preserved. Fortunately, VFP 9 makes it possible to replace native dialogs with our own. VFPX has a project, New and Edit PropertyMethod Replacement Dialogs, that replaces these dialogs with versions that work much better.
I created a 4-minute video showing the features and benefits of these replacement dialogs. Once you start using them, you won't go back.
by Doug Hennig (noreply@blogger.com) at July 21, 2008 02:22 PM
If you've been visiting here for a while, you may have noticed that the advertising on this Web log has been cut down quite a bit recently. At the beginning of the month I decided to switch off from the mish mash of advertising that I was running previously, which included Google Adsense, Steve Smith's Lake Quincy Network, James Avery's The Lounge Network network and some of my own ads. Advertising here has brought in a small amount of side income that has roughly covered the hosting of the site and a little bit extra. While it's not been a lot of money it's always been enough to make me teeter on the side of the $ signs to put the ads onto the site, but it required the mish mash to provide even this small stream of revenue . At the same time the amount taken in seemed small in comparison to the amount of content that is actually provided here - it's hard to gauge the worth of ad space of course, but I was actually considering turning off advertising altogether at some point because of the whole disproportion between ad payout and what the Ad services charge advertisers and what gets paid back to publishers (especially Google and Adsense which is an abomination - Google is getting rich of both advertisers and publishers because of it).
So a couple of months ago I started talking with Steve Smith about advertising and some of the pain points for publishers and advertisers alike and started throwing some ideas around about a few different approaches to serving ads. Steve's really the guy with the ideas, but there was a bit of back and forth and I liked what I was hearing. I've been frustrated with the advertising publishing I've been doing for a variety of reasons and was in fact thinking of just dropping the whole thing. However after talking with Steve a bit I decided to see what he'd come up with.
The end result is what now has become DevMavens which is a highly focused and somewhat exclusive advertising arrangement that serves ads to only a few member sites that are part of the DevMavens network and includes only a small number of advertisers at any given month. The concept of this type of specialized network isn't new (in fact, The Lounge used a similar model), but what is different for me at least is that the payback for the publishers is a bit larger than the typical CPM network. For me, the payment arrangements result in a significantly higher payback for running ads and as a bonus it requires only a single, relatively small ad on each page of the Web log.
I hope you'll agree that this single ad format is much less distracting than the 6 or so ads that were running previously on all the pages here, so hopefully this won't be just a boon for me but also for those of you who kindly come to visit this Web log frequently and actually click through into the site either from the RSS feed or from search results. I'm also glad to be working with Steve, who's been great to work with in the past for ad tuning and pinging on advertising issues in general, as well as just being a good developer friend I talk to from time to time about dev issues anyway.
Advertising for me is a love/hate issue and it's ironic because I tend to think of advertising as the root of a lot of problems on the Web. So in a way it's a bit hypocritical to whore space on this site to advertising. But yet the lure of some recurring side income is always very enticing. The reality is that a lot of effort has gone into the nearly 1000 posts that have made it into the Web log and there's a certain amount of profit potential there even as the content keeps growing. It seems a waste to throw that away and the income is maybe an added incentive to keep at it, especially on those stretches when writer's block or very busy schedules seem to get in the way.
There's no telling whether the DevMavens campaign will continue to pan out, but for the moment this definitely is a big improvement on all fronts as it simplifies things, makes for a cleaner layout and doesn't hurt the bottom line. Woot.
by Rick Schummer (noreply@blogger.com) at July 20, 2008 06:52 PM
by Rick Schummer (noreply@blogger.com) at July 20, 2008 05:23 PM
by Alex Feldstein (noreply@blogger.com) at July 20, 2008 04:07 PM

by noreply@blogger.com (Andrew MacNeill) at July 20, 2008 02:24 PM
When I first heard Jason Calacanis’ announcement about retiring from blogging last week I thought (like many) it was a joke. After all, he’s had considerable involvement in blogs over the years (cofounder of Weblogs Inc, etc). And leaving blogs to go to… email – well hello?
But no, it seems he’s serious, so it made me stop and think. Perhaps, he’s on to something. Personally I’ve noticed that my own blogging has dropped in the last few months – maybe it’s indicative of a wider trend…
If my blog writing is down, what about my blog reading? My blog reading stats back in April had an unread count of over 50,000:
Here’s my stats in July. You’ll notice more feeds (and items), but less unread.
Now, admittedly in April I was getting a little behind in my reading, but in general my unread count is always going up.
My reading habits haven’t changed (in general I read blogs for about 1.5 hours per day - 30 minutes going into work on the train, 30 minutes coming home, and an additional 30 minutes at night.)
So with similar reading habits, and being subscribed to more feeds, why are there less unread items?
Are the posts getting shorter? Am I less interested? Am I reading quicker !?
No.
To me it’s clear that the reason is: the frequency of posting is decreasing. People are blogging less.
So what’s caused this?
The main reason has to be the increased uptake of social networking tools, predominantly (in the technology space) Twitter and its variants. People are no longer blogging about stuff, they are Twittering about it. (More on this later)
(Note, I consider blogging and micro-blogging to be two totally different outlets)
The question then is: does this mean blogging is on the way out?
Are we perhaps witnessing the early stages of the death of blogging?
My answer: No, in fact just the opposite.
But first, let’s quickly agree on what a blog is…
It’s always easy to pick on throw-away comments on Twitter, and this one caught my eye (from one of my favourite Twitterers btw).
Summary: blogs without comments aren’t blogs – they’re just web sites.
That’s one definition. But I personally think blogs are really only about one way communication.
Yeah, it’s easy to get sucked into the whole ‘need for community’ side of blogging. “It’s about a conversation”, “The comments are the content”, “Some of the best gems come from the comments”, etc. But let’s take a step back and consider this.
Where did blogs come from? They started as online diaries – an outlet for (usually boring) musings by uni students. They became popular due to their ease of publishing. Anyone could have their own regularly updated website. Putting up ‘content’ was simple, and spreading the word was standardised (in as much as RSS is a standard). Thus: Blogs are web sites. That’s the point of them.
Let’s break down what the main components of blogging are these days (at least in the technology sphere I inhabit):
Many posts have great content – perhaps original, perhaps added-value, perhaps entertaining – but information.
There are posts will all the personal stuff (what I’ve read, watched and listened too, where I’ve been, what I’ve been up to, etc)
And then there’s the link posts – pointing to another post or article, and usually not offering much original content. At best some added value.
Finally there’s the comments where people interact - sometimes helpfully, sometimes not - on the content of the post. More on this later.
(I’ve deliberately left Advertising, Widgets and other so-called ‘content’ out of the discussion)
All of these components are valid (I’m not saying otherwise) and my own blogs have had all these elements to various degrees. But I think the Signal-to-Noise Ratio (SNR) is an important concept when it comes to blogs.
Here’s how we see SNR in the blogosphere:
Ideally we want the SNR to be high, with lots of useful, original content.
To be honest I hardly ever read comments. The reason being, when I do I’ve noticed the following general categories:
Do your own analysis, and let me know if I’m wrong (via the comments please :-)).
Yes, there may be some gems, but here’s my point: Comments are predominantly noise.
Twitter has gained massive traction in the last year. And as I alluded to earlier people’s blogging habits have changed as a result.
What we’ve seen is all the Personal Stuff, Linking, and to a large extent, Comments, move to Twitter and other Social networking utilities.
The net effect: Blogs are much higher on Signal. The quality of blogs has improved.
Not withstanding Scoble’s often misquoted post - Blog comments are dead (he’s talking about comments residing on blog platforms, not comments about the blog post contents) - the best we can hope for is that the quality of comments improve.
However, that’s unlikely to happen. If (as I contend), the Google Juicers are the majority of commenters, then they won’t be moving to Twitter any time soon (since there’s no SEO benefit). Sadly, we’ll likely see the % of Google Juice comments rise.
So here’s what’s happening. People are realising that blogs aren’t the best medium for valuable interaction (note: social media strategists have been saying this for years!) and they are moving those interaction bits to other platforms. In addition, all the Personal stuff and Link blog posts are moving to Twitter (and its variants) as well.
So, far from Twitter being the death of blogging, it’s the exact opposite.
The result: Blogs are left with just the Content. The SNR is getting higher and the value of the blogs is increasing.
So back to Jason retiring from blogging. Has he seen something we’re missing? Is he mistaken?
Jason has his reasons (which he articulates well in his blog post – eg his response to Allen Stern), and for a person in his shoes they are probably relevant.
But for the rest of us – blogging will be of growing importance.
Thanks to Twitter the Signal in blogs is increasing and an opportunity to be heard above the Noise is opening. You’ll no doubt have dozens of different social networking outlets, but you’ll probably only have one or two blogs. Make sure you don’t neglect the value they hold.
by blog.nospam@nospam.craigbailey.net (craig bailey) at July 20, 2008 07:18 AM
It's time to retire my existing Web Server which is going on 7 years now. The box that this site is running on currently is an old style 2ghz Pentium 4 box with 1 gig of memory and it's starting to creak at the edges pretty hard with a few off and on failures to power and the system board components (lthe clock seized to work a few weeks ago). As of late the box has been locking up on a few occasions - and in fact just as I started writing this post today it just locked up again. Thankfully the lockups are not hardware fatal and the machine keeps on ticking after being rebooted by the ISP staff, but clearly this box is reaching the end of its hardware life cycle and usefulness.
I've been meaning to upgrade the box for a while, but frankly there's really not been a compelling reason to do so until recently. Even with the fairly large and various amount of stuff running on this server including the WebLog, our message board, a large variety of sample applications, my West Wind Web Store (in various different versions actually <s>) and a bunch of smaller internal applications, it never seizes to amaze me that this underpowered box does as well as it does. The other reason I'd been holding out as long as I had has been waiting for Server 2008. I wanted to wait for the new OS to update to save myself from an update in the future and having more synchronicity between Vista on the desktop and the 2008 server on live site.
Anyway, it's time to get a new box and I'm kind of torn between the choices on what to get. The last box was a home built box that cost me somewhere around $500 to build at the time. It was an emergency replacement box swapped in for a slowly failing server at the time and it just somehow worked out as the permanent replacement. I'd say for the years of services it's done that was a good price to value effort. The old box was basically a desktop box that my ISP at Gorge Net in Hood River has been kind enough to co-locate for me.
The question now is though what to get for a new box. I've been leaning towards just building another box with an Intel Core Quad processor and a gobs of memory, plus some high performance drives for best performance, but things have changed with processor designs significantly over the last few years with chips running super hot. So I'm seriously wondering whether a desktop processor is a good idea for an always-on server environment. Additionally I'm really pressed for time as I have a two week window to get the components, build the box, run a burn in and then move everything from the old server onto the new box while I'm actually in Hood River with physical access to the box. Finally, I'm not all that keen on building my own boxes anymore especially in regards to getting those monster processors installed and properly set up for cooling and optimal tuning. My last home brew installation of an internal office server took me way longer than I care to admit to get the machine into stable operation and while that kind of experimentation was fine for a desktop box I can fuck with anytime, I don't have that privilige with a server at a (somewhat) remote location.
So, I guess I'm asking for a some experienced advice amongst you, my dear readers.
Some of the choices I've been toying with are:
Build my own
If I build my own box the price is probably the lowest and I get exactly what I want, but as I mentioned above I am a little worried about component overheating and life time. Pricing for what I'm looking at looks to be around $600 or so for a Intel Core Quad with 4gig and two SATA drives plus a new box and a beefy power supply. The price is right but I'm not sure if this is still a good idea.
Another option is to buy a bare bones, pre-installed system that has Box and CPU mounted and ready to go. But in briefly looking around I didn't find a lot of choice in this space from most of the component vendors, so this is probably not an option.
Get a Desktop Box from Dell or some other Vendor
Pricing a box that has similar components (minus extra drive and maybe additional memory) from Dell costs roughly the same, but there's less control over the components. It's amazing how cheap boxes have become. Effectively the pricing doesn't seem too much more than home build but I'd probably have to do some component swapping to get the high end drive and memory upgrades still. The advantage for me though is that I don't have to wait for components to show up and build the box and hopefully get a reasonably tuned box that I can just install the OS on and be done with.
Here's with what I came up with at Dell:
Dell Inspiron 530
Intel Core 2 Quad Processor Q6600 (8MB L2 cache,2.4GHz,1066FSB), Genuine Windows Vista® Home Premium Service Pack 1
Unit Price
$728.00
Genuine Windows Vista® Home Premium Service Pack 1 (will be dumped)Memory
4GB Dual Channel DDR2 SDRAM at 800MHz- 4DIMMsKeyboard and Mouse Bundles
Dell USB Keyboard and Dell Optical USB MouseMonitor
No MonitorVideo Cards
ATI Radeon HD3650 256MBHard Drives
500GB Serial ATA Hard Drive (7200RPM) w/DataBurst Cache™Floppy Drive and Media Reader
3.5in Floppy DriveMouse
Mouse included with Keyboard purchaseNetwork Interface
Integrated 10/100 EthernetOptical Drive
16X DVD+/-RW DriveSound Cards
Integrated 7.1 Channel AudioWarranty & Service
1Yr In-Home Service, Parts + Labor, 24x7 Phone SupportSub total:$728.00
Looking over prices what it would cost me to build a box with similar components it's not going to be any cheaper, even if I end up replacing the drive with something faster later on. <shrug>
The question again is just how much can you trust a desktop box (especially from Dell and Inspiron) to last in a server environment today? I've had good luck with non-server boxes in the past with all of them lasting close to 5 years before they got obsolete.
Get a Server Box from Dell or some other Vendor
While at Dell I also checked out the servers and prices there also seem reasonably decent for a mid range non-rack server. For a quad core 2.5ghz Xeon with a similar configuration (plus 2 drives unfortunately) I'd end up with something like this:
PowerEdge T300
Quad Core Intel® Xeon® X3323, 2.5GHz, 2x3M Cache, 1333MHz FSB, No Operating System
$1,666.00 Save $688 on select PowerEdge™ T300 servers through Dell Small Business.Memory
4GB DDR2, 667MHz, 2x2GB Dual Ranked DIMMsPrimary Hard Drive
250GB 7.2k RPM Serial ATA 3Gbps 3.5-in Cabled Hard Drive2nd Hard Drive
250GB 7.2k RPM Serial ATA 3Gbps 3.5-in Cabled Hard DriveHard Drive Configuration
Onboard SATA, 1-4 Drives connected to Onboard SATA Controller - No RAIDFloppy Drive
No Floppy DriveNetwork Adapter
On-Board Dual Gigabit Network AdapterCD/DVD Drive
16x DVD-ROM Drive, Internal, SATASystem Documentation
Electronic Documentation and OpenManage CD KitChassis Configuration
Chassis with Cabled Hard Drive and Non-Redundant Power SupplyHardware Support Services
3Yr Basic Hardware Warranty Repair: 5x10 HW-Only, 5x10 NBD OnsitePower Cords
Power Cord, NEMA 5-15P to C13, wall plug, 10 feetTOTAL:$978.00
which seems reasonable for a server. Components as a whole seem a little less powered than the desktop counterparts, but I suspect the Xeon processors are better optimized for server operation and heat dispersion for running in always on scenarios.
Unfortunately in various configurations I haven't been able to get exactly the config I'd like to see so I probably have to call Dell to fine tune a little bit if possible or at least ditch the third drive for a 10k boot drive.
Looking for Feedback
The environment will be almost purely for hosting my own Web applications, mostly ASP.NET applications running SQL Server as a data backend all local in this case plus a few older COM based Web applications. There are obviously more expensive solutions available especially in rack mount form but I'm incined to think that most of the server boxes are just badly overpriced for what performance they provide. Am I totally off my nut on that or does that seem reasonable at all?
I thought I'd take advantage of the vast pool of folks out there and I would love to hear some thoughts on what's worked for you in small shop server installs focused purely on Web Servicing for small to medium level Web load.
I was interviewed last week by Canadian Developer Connection: http://blogs.msdn.com/cdndevs/archive/2008/07/17/mvp-insider-q-a-with-doug-hennig.aspx
by Doug Hennig (noreply@blogger.com) at July 19, 2008 05:59 PM
by Alex Feldstein (noreply@blogger.com) at July 19, 2008 09:28 AM
IF e_no = 2088 AND 'ID'$UPPER(er_mess)
RELEASE m.id
on error do err_prg with ;
error(), ;
program(), ;
lineno(), ;
message(), ;
message(1)
RETRY
ENDIF
by Toni M. Feltman (noreply@blogger.com) at July 18, 2008 05:32 PM