Re: [NF] Seeking well-equipped laptop recommendations

2019-08-16 Thread Ken Dibble





So modernity expects a person like me to be happy with 256 GB. But 
I've always been a fan of over-provisioning because the 
unpredictable and the unexpected is an everyday thing in my life.


 What is unexpected about needing more memory and disk space on 
a computer?  


Oh, Gene, Gene, Gene.

Don't you see? We don't actually need *any* memory or disk space on 
our computers at all anymore. It's all done in the cloud! Sooo 
secure, and reliable, and everything is just taken care of for you, 
so you don't need to worry your little head about it! In fact, we 
should thank the IT powers that be for condescending to even allow 
our localized devices to continue to work for a few more years, so we 
can have time to adjust to the brave new world.




Ken


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Seeking well-equipped laptop recommendations

2019-08-16 Thread Ken Dibble




One of the coolest FoxPro apps I ever shipped worked on 2 Gb 10"
tablet-network hybrids with 32Gb SSD storage. Taken into the field for data
gathering and docked in the home office to upload data to the mothership
and gather tomorrow's assignments. If they dropped one out of their truck
onto the driveway, we had to spend another $129 to replace it.


Hm.. tablets. I don't know if this is applicable to your case, but MS 
is permitting vendors to ship devices with 32 GB SSD HDDs and 
full-blown Windows 10 on them. First time somebody is confronted with 
an MS forced "upgrade", the thing tanks, because there isn't enough 
extra space to handle the downloading/unpacking etc etc. After many 
weeks of struggling, the intrepid Susan Bradley (the "Patch Lady" for 
those who know her) finally figured out how to get an upgrade 
installed by plugging in a USB drive for extra storage and fiddling 
around with it (I can't remember the details but she may actually 
have had to temporarily merge the USB with the SSD as one logical 
partition; not something your typical user is gonna do). As she said, 
it shouldn't be that hard, and MS never should have permitted those 
vendors to ship those machines.




> Windows 10 now requires 32 GB of space for itself (build "1903").
> That means you need 64 GB in order to cope with the
> download/installation/cleanup process for those eventual feature
> "upgrades" that we, as mere pawns in MS's marketing game, are no
> longer allowed to ignore. And some people have been speculating that
> the OS space is likely to double to 64 GB in the near future. That
> would mean a 128 GB HDD would have no room left at all for anything else.
>

128 Gb (billions of bytes! sheesh!) was a minimum, absolutely. You spec'ced
machines without customizing. More is better, nearly always.


Well, a 256 GB SSD HDD seems to be one of the most common 
configurations in off-the-shelf laptops these days.




> So modernity expects a person like me to be happy with 256 GB. But
> I've always been a fan of over-provisioning because the unpredictable
> and the unexpected is an everyday thing in my life.
>

Sure. Are these field machines you expect to be beaten to death in a couple
of years or long-term cubicle machines as investments you plan to keep
alive for 4-5 year? And what do you run on them? That would guide you to
pick between workaday Inspirons vs. high-performance Lattitudes for
example, sticking with Dell as a f'rinstance.


We've been able to get 5-7 years out of most of our ASUS and Acer 
machines up to now. I have one guy who, though he never leaves his 
office, insists on using a laptop instead of a desktop because he 
refuses to allocate more space. He's had three hard drives fail on 
three laptops over the last 9 years. But he also periodically throws 
tantrums at equipment and has been known to physically break pretty 
good-quality scanners and even big ol' copiers. So who knows? Maybe 
he picks up the laptop and flings it at the wall on occasion.


We have around 40 laptops (and around 100 desktops). Somewhere 
between 15 and 20 of the laptops travel constantly; the rest are at 
the main office and used occasionally for presentations, or by 
traveling staff who come into the office to do "paper" work on them 
on a regular basis.


I had one of the traveling laptops die due to a controller failure a 
couple of years ago. But that's about it. We replaced a bunch of them 
with newer models about the same time as that one, not because there 
was anything wrong with them, but because New York State, in its 
infinite wisdom, gave us a bunch of money and told us we had to buy 
new laptops for that particular contract. Which was good because the 
old ones were i3 and dog slow for anything other than web browsing, 
and we replaced them with i7s.


Some of these older more-or-less stationary i3 laptops are also 
dog-slow running my agency-wide Foxpro app. Travelers who need to use 
that app get to it via RDP, where it is actually quite snappy, 
because it lives in a VM on a massively-overprovisioned 
hypervisor/SAN cluster. We'll see if that continues to be the case 
after we put a VPN on the RDP channel (another one of those fun NYS 
requirements).


As for HDD size (as Arlo Guthrie might say, "Remember HDD size? It's 
a song about HDD size.") although some of these travelers are 
fervently believed by the state Health Department not to need to 
store any highly sensitive PII or PHI on the machines, in fact they 
do it all the time; hundreds of downloaded partially-completed PDF 
insurance forms. And we have nurses who do field assessments using an 
offline system that stores a lot of local data until they can get 
internet access and synch it with a website. And people in general 
are packrats. I can tell them to delete stuff they don't need until 
I'm blue in the face, to little or no effect. I'd rather let them 
accumulate in peace than have them constantly pester my help desk 
guys with complaint

Re: [NF] Seeking well-equipped laptop recommendations

2019-08-16 Thread Ken Dibble



A plug for a new MacBook Pro running Windows in a VM. My MacBook Pro 
is 6 years old and looks and performs like new. Best purchase I ever 
made. A shout-out to Ed and others for making this recommendation 
many years ago.


Is that a user-friendly thing? As in, the user should be able to 
start it up and never have to take any extra steps to get to a 
Windows desktop beyond what s/he would do if it was running Windows 
natively. These machines are for field workers who don't know, or 
care, anything about computers as a thing in themselves.


But we also have to maintain these devices, and nobody on my staff 
has any significant Mac maintenance experience, so it might not be a 
prudent option for us anyway.


Thanks.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Seeking well-equipped laptop recommendations

2019-08-16 Thread Ken Dibble




Can you elaborate on your resistance to HP and Lenovo?  The last few
Lenovos that I have had the opportunity to work with have been slick units.


I have boycotted all HP products since they adopted their policy, 
many years ago, of deliberately breaking perfectly good printers (as 
well as not-empty ink cartridges) after some period of time in order 
to force people to buy new ones. I had already read about this policy 
in several places on the single day when six HP inkjet printers of 
the same exact model, which I had bought all on the same day at the 
same place, all suddenly had mechanical failures.


I've never bought a Lenovo machine, but their little rootkit episode 
a few years back convinced me that they are not to be trusted.


Ken



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Seeking well-equipped laptop recommendations

2019-08-15 Thread Ken Dibble




SSDs make a lot of sense for speed, weight and less noise and if
everything's on the network or the internet, 128 Gb SSD is just as good as
a 1TB HDD.


Thanks Ted.

"Everything's on the network or the internet" seems to be a common 
assumption and is apparently the reason why it's pretty hard to find 
larger HDDs on laptops that also have the other stuff I want. Weight 
seems to be a major consideration for marketers, but it isn't for me. 
We do not keep stuff on the network or the internet here, with some exceptions.


Windows 10 now requires 32 GB of space for itself (build "1903"). 
That means you need 64 GB in order to cope with the 
download/installation/cleanup process for those eventual feature 
"upgrades" that we, as mere pawns in MS's marketing game, are no 
longer allowed to ignore. And some people have been speculating that 
the OS space is likely to double to 64 GB in the near future. That 
would mean a 128 GB HDD would have no room left at all for anything else.


So modernity expects a person like me to be happy with 256 GB. But 
I've always been a fan of over-provisioning because the unpredictable 
and the unexpected is an everyday thing in my life.


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[NF] Seeking well-equipped laptop recommendations

2019-08-15 Thread Ken Dibble

Hi folks,

I'm finding it's getting really difficult to find a non-customized 
laptop that meets my agency's requirements. Granted, I'm pretty 
picky, though I am somewhat flexible on the potential trade-offs involved.


Many of you use quite nifty hardware so I thought you might have some ideas.

I need it to be non-customized because I'm being required to purchase 
through a MWBE vendor. (This is New York State,  USA.) These vendors 
generally refuse to provide customizations; in fact, most of them 
just buy stuff off the rack from established electronics retailers 
and mark it up (don't get me started)


First, I won't do Lenovo or HP or Surface.

I prefer ASUS or Acer, as I've had good experience with them. I'd 
rather not do Dell but if that turns out to be the only way to 
accomplish this I might accept that.


I need (won't compromise on):

Windows 10 Pro 64-bit
i7 processor or better (I don't know what the AMD equivalent would be 
but I don't object to AMD chips)

At least 15.6" screen
At least 8 GB RAM
At least 512 GB HDD (I don't care if it's SSD or mechanical, but I 
want all of that space)

LAN cable port
WiFi
At least 3 "old school" USB ports (some mix of USB 2 and USB 3; USB C 
is nifty and all, but I'm not looking to replace my peripherals or 
get a bunch of adapters).

HDMI port
VGA port (I have some old projectors and external monitors that I 
don't want to spend $$ to replace; I probably could be convinced to 
drop this requirement, at least for some users, if absolutely necessary)
Must have a TPM chip and UEFI BIOS (the latter seems to be standard 
now but the former is often optional); these devices have to be 
full-disk encrypted using Bitlocker


I would prefer the processor speed to be 2.2 GHz or faster, but a 1.8 
GHz i7 is minimally acceptable.


I would like an internal optical drive but it's not required.

I don't care how much it weighs or how long the battery lasts or any 
of that other stuff.


I'm not going to be super picky on price, because the whole MWBE 
thing is based on inflated prices anyway.


(And BTW, I am not opposed to MWBE set-asides in principle, but I am 
opposed to the situation that has been created, in which, because the 
state mandates that we purchase from these companies, the companies 
effectively face no competition and can therefore set absurdly high 
prices for largely inferior products.)


Thanks for any thoughts any of you may have.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Inadvertent Movement of Documents Folder

2019-07-25 Thread Ken Dibble

Thanks to you and others who responded.

Ken

I guess depending on the size of the files and the speed of the 
PC/drives involved you may get the notification window showing files 
being copied.


Frank.

Frank Cazabon

On 22/07/2019 03:47 PM, Ken Dibble wrote:
Presumably, though, if you did that with a folder that contains, 
say, a few hundred MB of data, you'd get the Windows copy/move 
dialog and a progress bar, wouldn't you?


Thanks.

Ken

Nope, I can drag move my Downloads folder somewhere else (to 
another drive) and I don't get any warning. Note that dragging 
within the same drive does a move, dragging within the same drive 
while holding Ctrl down does a copy, dragging to a different drive 
holding Shift down does a move. (at leats I think those are the 
corresponding keys to move or copy)


Frank.

Frank Cazabon

On 22/07/2019 03:33 PM, Ken Dibble wrote:



Hey Ken,

you can move a folder using drag and drop if you hold down the 
Ctrl key while dragging and dropping.


I have known experienced users to do this by mistake. I've even 
done it a couple times, thankfully I realised quite quickly that 
I had moved the wrong folder.


Thanks Frank.

If you try it with a Windows "special" folder like My Documents 
does it warn you at all?


Ken

[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Inadvertent Movement of Documents Folder

2019-07-22 Thread Ken Dibble
Presumably, though, if you did that with a folder that contains, say, 
a few hundred MB of data, you'd get the Windows copy/move dialog and 
a progress bar, wouldn't you?


Thanks.

Ken

Nope, I can drag move my Downloads folder somewhere else (to another 
drive) and I don't get any warning. Note that dragging within the 
same drive does a move, dragging within the same drive while holding 
Ctrl down does a copy, dragging to a different drive holding Shift 
down does a move. (at leats I think those are the corresponding keys 
to move or copy)


Frank.

Frank Cazabon

On 22/07/2019 03:33 PM, Ken Dibble wrote:



Hey Ken,

you can move a folder using drag and drop if you hold down the 
Ctrl key while dragging and dropping.


I have known experienced users to do this by mistake. I've even 
done it a couple times, thankfully I realised quite quickly that I 
had moved the wrong folder.


Thanks Frank.

If you try it with a Windows "special" folder like My Documents 
does it warn you at all?


Ken

[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Inadvertent Movement of Documents Folder

2019-07-22 Thread Ken Dibble




Hey Ken,

you can move a folder using drag and drop if you hold down the Ctrl 
key while dragging and dropping.


I have known experienced users to do this by mistake. I've even done 
it a couple times, thankfully I realised quite quickly that I had 
moved the wrong folder.


Thanks Frank.

If you try it with a Windows "special" folder like My Documents does 
it warn you at all?


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Inadvertent Movement of Documents Folder

2019-07-22 Thread Ken Dibble




On Mon, 22 Jul 2019 at 15:20, Ken Dibble  wrote:
> The user's device is a Windows 7 Pro laptop. He moved the folder to a
> share on a Windows 2012 server. The only other unusual thing about
> this machine is that it's lost trust with the domain a couple of
> times in the last few days. But his documents folder first appeared
> on the network share weeks ago.

Has a roaming profile been enabled on the domain?
I forget where you do this as I never use this feature!


Nope, we never use that feature either.

Thanks.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[NF] Inadvertent Movement of Documents Folder

2019-07-22 Thread Ken Dibble

Hi Folks,

I'm asking you guys about this because, frankly, it's the only group 
of people I have to ask questions. :) I'm hoping that one of you can 
suggest something based on a deeper understanding of Windows than I have.


Some weeks ago what I *thought* was a _copy_ of somebody's entire "My 
Documents" folder appeared in a network share that is only used for 
my Foxpro database system.


Since I have people accidentally, and apparently unknowingly, 
dragging and dropping folders from where they should be to where they 
shouldn't all the time here--in some cases moving enough data to 
cause a Windows file copy/move dialog to appear, and stay visible for 
quite some time--my assumption is that is what happened in this case.


However, there are some points in this case that are confounding:

1. The user is not a typical computer illiterate. I did not expect 
him to be capable of such a mistake.


2. The folder was not just copied, it turned out to have been 
_moved_, which is not do-able by drag-and-drop without some user 
interaction, yes?


3. The folder was the user's official designated "My Documents" 
folder, which also should not be movable without a whole lot of user 
interaction, right?


The user's device is a Windows 7 Pro laptop. He moved the folder to a 
share on a Windows 2012 server. The only other unusual thing about 
this machine is that it's lost trust with the domain a couple of 
times in the last few days. But his documents folder first appeared 
on the network share weeks ago.


So if any of you would like to amuse yourself by positing suggestions 
of how this could happen without the user being aware of it, please 
respond here.


Thanks.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message: https://leafe.com/archives/byMID/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Still No Messages Since August 2

2018-08-29 Thread Ken Dibble



>> But the effort it takes to spoof a direct reply to the listserv 
should indicate how much I love

ProFox.

> I'd be curious to know what you did with that post. It was 
received without a Message-ID: header,

which means that the link in the footer doesn't work.

Oh, all I did was copy the Subject line and the quoted text from the 
archive, inserting greater-thans as appropriate, then sent a fresh 
message to ProFox.


More effort than it takes to hit "Reply" in an email client (which is 
currently not an option for me), but not that much more, actually...


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Still No Messages Since August 2

2018-08-29 Thread Ken Dibble



>In the meantime I'm reading the list in the archives.

  You just can not leafe this list alone.

Well, maple* I can, and maple I can't...

But the effort it takes to spoof a direct reply to the listserv 
should indicate how much I love ProFox.


Ken

* In honor of Gene's beautiful flag 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Still No Messages Since August 2

2018-08-28 Thread Ken Dibble

Folks,

Thanks to those who responded. This pretty clearly seems to be a case 
of my email provider suddenly blocking everything coming from 
leafe.com. Ed contacted me directly and I am trying to follow up with 
the email provider.


In the meantime I'm reading the list in the archives.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[ADMIN] Still No Messages Since August 2

2018-08-27 Thread Ken Dibble

I see conversations ongoing in the archives.

I emailed Ed at his leafe.com address several days ago and received 
no response.


I'm sending this to see if it arrives in the archive, to rule out the 
possibility that leafe.com is failing to accept and deliver any 
messages from me.


I suppose if I don't hear from Ed on this in a few days, I'll 
unsubscribe from this address, and try an address at a different 
domain with a different mail provider.


Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: [ADMIN} No Messages Since August 2

2018-08-14 Thread Ken Dibble
This is not an actual reply to an email thread; I've only been able 
to see the messages with this Subject line in the archives.


So I didn't get my own message, or Paul's reply to it.

I am no email guru, but I have observed that messages may be rejected 
by some email systems if the physical domain host is not the same as 
the physical email server host, but both hosts use the same domain 
name, and there is no reference to the correct email host in the SPF 
record for the domain host. Not all email systems have SPF rejection 
enabled. If they do, they probably should issue a bounce explaining 
what they did. Just a thought....


Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[ADMIN] No Messages Since August 2

2018-08-14 Thread Ken Dibble
By checking the archives I see that there has been traffic here at 
least up to August 9 (that's five days ago, itself a matter of some 
concern). However, the last message I received was at 5:25 am August 
2, 2018, from Alan Bourke ("Re: Determining Text File Encoding").


There is nothing in my spam folder. I have all spam filtering turned 
off on my email account.


On the assumption that I had somehow been unsubscribed, I subscribed 
again at about 2 pm EDT today. I did not receive a confirmation email 
(not sure if you're actually using those or not).


Any thoughts?

I'll check the archives to see if this message arrives or if there is 
any response.


Thanks.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN ] Duplicate messages from Ken Dibble

2018-06-29 Thread Ken Dibble

I'm only sending to ProFox. And I only get one copy of my own messages.

Ken


Hi Ken Dibble and all

I am getting duplicate messages on the list from Ken Dibble - one 
seems to be via ProFox and the duplicate via ProFoxTech.  Is anybody 
else seeing this and can anything be done about it?  Ken, are you 
sending your messages to both?


Thanks

Paul Newton


[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] "Modern Standby", Win 10, and Bitlocker with Azure

2018-06-28 Thread Ken Dibble

Thank you.

It's not my fear. We have taken on a subcontract to provide Help Desk 
support for another organization that is supplying these laptops. We 
were told the laptops would have "full disk encryption", so that's I 
what I expected to find when I received them. I did not find what I expected.


When I think "full disk encryption", I think that means that when the 
user turns the machine on, s/he has to enter some credentials before 
s/he even sees the OS login screen. In other words, the entire disk 
outside of the master boot record must be manually unlocked before 
any use can be made of it, no matter where that disk is or who is 
trying to use it. Having successfully done that, I then expect the 
user to have to enter another set of credentials at the OS login 
screen before s/he can use the machine.


(Two factor authentication would not work in legitimate situations 
where there is no internet or phone service, a very common situation 
in my rural part of the country.)


That is what you get if you set up "full disk encryption" using 
VeraCrypt on a Windows 7 machine. We don't do this very often. I 
prefer simply to create a separate data partition and encrypt that so 
the user doesn't need two sets of credentials if s/he isn't going to 
do anything but, say, run a web browser to access encrypted websites.


We don't use BitLocker for this because our laptops are Win7 Pro, not 
Ultimate. You have to have Ultimate to set up Bitlocker encryption in 
Win 7 (you only need Pro to read a Bitlocker-encrypted device, like a 
USB memory stick).


So apparently there are two completely different definitions of "full 
disk encryption" out there in the wild. Both will protect you if 
somebody steals the device and pulls the HDD out of it. (However, I 
also thought that ordinary Windows encryption, present in XP and 
perhaps earlier, would do that.) One of them will protect you if 
somebody steals the device and one set of credentials; they other one won't.


I will point out that I'm not the only person who saw it this way; 
both of my assistants, who are experienced computer guys and not 
relying on me, had the same definition of "full disk encryption" in 
their heads.


Since the organization that is paying us has the responsibility for 
complying with federal NIST security standards, and not me, I will 
shrug this off even though I don't believe that what you have 
described--and what the organization has done--actually complies with 
the standard in question.


Anyway, thanks for your help.

Ken


BitLocker will only prompt for a recovery key if it detects the device that
the hard drive is in has changed. It's inconspicuous in day-to-day use (and
it has nothing to do with being connected to the Internet or in Modern
Standby mode).

The purpose is to protect the data when the drive is removed and put into
another machine to be read. If someone steals your entire machine and knows
the local login credentials, well you're on your own. If that's your fear
maybe enable two-factor authentication (e.g. Windows Hello and a PIN).

Eric


On Wed, Jun 27, 2018 at 11:53 AM, Ken Dibble  wrote:

> Perhaps someone here can answer this question.
>
> I have a Windows 10 Pro laptop. It is part of an Azure AD domain, in which
> InTune is being used for a variety of management functions. It is supposed
> to have Bitlocker full disk encryption enabled, and the Bitlocker key is
> stored in InTune.
>
> I do not connect any cables to this laptop. I simply turn it on. I do not
> manually connect it to any wireless internet source. The machine displays a
> standard Windows 10 login screen. Having local admin credentials, I log in
> and get full access to the machine.
>
> What is wrong with this picture?
>
> As I understand Win 10 Bitlocker disk encryption, I don't need to supply
> pre-boot credentials if the computer can see the internet, or if the
> machine has "Modern Standby" enabled. I understand the latter to mean that
> the laptop has never been fully turned off since somebody unlocked the
> encryption.
>
> If I am correct, since I did not connect the laptop to any internet
> source, yet I still am able to get into the machine using only the local
> admin credentials, if Bitlocker full-disk encryption is actually
> implemented, then the machine must be in "Modern Standby".
>
> I don't use Windows 10 but to me this situation is analogous to having set
> up full disk encryption on a Win 7 box, submitted a PIN to get to the login
> screen, and then closed the lid to force hibernation mode. If I open the
> lid I don't need to put in the pre-boot PIN again but I have to log into
> Windows.
>
> As I see it, if somebody steals this laptop as well as the local admin
> credentials, the al

[NF] "Modern Standby", Win 10, and Bitlocker with Azure

2018-06-27 Thread Ken Dibble

Perhaps someone here can answer this question.

I have a Windows 10 Pro laptop. It is part of an Azure AD domain, in 
which InTune is being used for a variety of management functions. It 
is supposed to have Bitlocker full disk encryption enabled, and the 
Bitlocker key is stored in InTune.


I do not connect any cables to this laptop. I simply turn it on. I do 
not manually connect it to any wireless internet source. The machine 
displays a standard Windows 10 login screen. Having local admin 
credentials, I log in and get full access to the machine.


What is wrong with this picture?

As I understand Win 10 Bitlocker disk encryption, I don't need to 
supply pre-boot credentials if the computer can see the internet, or 
if the machine has "Modern Standby" enabled. I understand the latter 
to mean that the laptop has never been fully turned off since 
somebody unlocked the encryption.


If I am correct, since I did not connect the laptop to any internet 
source, yet I still am able to get into the machine using only the 
local admin credentials, if Bitlocker full-disk encryption is 
actually implemented, then the machine must be in "Modern Standby".


I don't use Windows 10 but to me this situation is analogous to 
having set up full disk encryption on a Win 7 box, submitted a PIN to 
get to the login screen, and then closed the lid to force hibernation 
mode. If I open the lid I don't need to put in the pre-boot PIN again 
but I have to log into Windows.


As I see it, if somebody steals this laptop as well as the local 
admin credentials, the alleged Bitlocker "full disk encryption" will 
do absolutely nothing to prevent the thief from gaining full control 
of the machine.


Is this correct, or am I, as is often the case, missing some crucial 
piece of information.


Thanks for any help.

Ken Dibble
www.stic-cil.org



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[ADMIN] Filter Redux

2018-06-27 Thread Ken Dibble
Message sent 12:53 PM EDT. Not received by 3:04 PM EDT, and not in 
the archives.


Ed? Please check the filter again.

Thanks.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Nothing like a cryptic error to start the work week!

2018-06-25 Thread Ken Dibble




VFP9SP2, Win7Pro, MySQL backend
Screenshot:  https://www.screencast.com/t/QKA2etzLnW
I've searched frmEditJob.scx in the Code References for any text of
IMG and it found nothing.  Ugh.  Now how to track down this new
mystery?


Ooops...wrong screenshot!  Here's the right one:
https://www.screencast.com/t/qdzgy9RnGF


Mike,

As I recall, you use business objects in your projects.

The VFP error handler will sometimes appear to kick in on the wrong 
line of code. There is probably nothing wrong with your DO FORM line, 
but there is probably something wrong in the form's initiation chain 
of events, which probably calls your BO code. I would put SET STEP ON 
in the form's Load() event and step through until the actual error occurs.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-25 Thread Ken Dibble

Frank,

Just to close out this discussion:

The code you provided worked perfectly. I've also 
demonstrated that if the user wants results for 
Consumers with more than one option for Current 
Status (ie, those who are "approved" or "on 
hold"), I can simply add a UNION clause with the 
same query and that works just fine.


Thank you very much for this.

Ken

PS: The jumble below is what happens when people 
use Outlook's proprietary HTML code to send email 
to people who don't use Outlook. Sending in plain text fixes this problem.


Content-Transfer-Encoding: base64You just need 
to change the first line of the query to this:


SELECT COUNT(Status.ConFK) AS ConsCount, SUM(LastHours.AppHours) AS HoursSum;


Frank.

Frank Cazabon

On 22/06/2018 01:04 PM, Ken Dibble wrote:



Maybe this will do what you want:

€£M1

PMхÑÕ̹
½¹,°1…ÍÑ!½ÕÈs.AppHours;

FROM Status ;
INNER JOIN (SELECT ConFK, MAX(Date) AS MaxDate;

0¨0¨0¨0¨0¨0¨0¨”€OM Status;
ˆ0¨0¨0¨0¨0¨0¨0¨Ô“ÕT­HÛۑ’ÊHHӈÝ]\ˀConFK = 
M.ConFK AND Status.Date = ˆK“X^]Hƒâ**  AND Type = "Approved";

ˆQ•“ÒSˆ
ÑSPÕÝ\œËÛۑ€K, Hours.AppHours;
0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨”“ÓHÝ\œÎ€>> 
INNER JOIN (SELECT ConFK, MAX(date) AS MaxHoursDate;

0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨FROM Hours;

ˆ0¨0¨0¨0¨0¨0¨0¨0¨0¨0€   GROUP BY ConFK) MH ;
0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0à°¨0¨0¨0¨0¨ÓˆÀurs.ConFK 
= MH.ConFK AND Hours.Date =

MH.MaxHoursDate ) LastHours ;
ON Status.ConFK = LastHours.ConFK

Y\Ë\Ú[™ÈH]HH›ÝšYY
[™ which you assembled into tables),

this gets:

CONFK   APPHOURS
1   .NULL.
3   12

ˆH]Y\žH]Ù[ˆÙ\Àn't sum anything, but I assume I can convert
NULLs to 0 and sum the APPHOURS column, and use 
_TALLY or RECCOUNT() to provide a total of approved Consumers.

[šÀ you very much!!!
Ù[‚€¥¶W†6W76—fRV÷F­ær&VÖ÷fVB' server]


[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-22 Thread Ken Dibble

Frank,

 You're responding here to my response to Ted's code, not yours.

Your code runs fine, and I responded to that separately.

Ken

Content-Transfer-Encoding: base64Did you run it 
as part of the first set of code that I gave you?


It runs here with no errors in VFP9 with the latest hot fix and SPs. ;)

What error is it giving you? Maybe a line split 
somewhere due to the email formatting?


This is the full code:

CREATE CURSOR Consumers;
(ConPK int)

INSERT INTO consumers (ConPK ) VALUES (1)
INSERT INTO consumers (ConPK ) VALUES (2)
INSERT INTO consumers (ConPK ) VALUES  (3)
*!*1
*!*2
*!*3

*!*Status
CREATE CURSOR Status;
(StatPK int,;
ConFK Int,;
Date date,;
Type c(10))

INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (1,1,{^2018/1/15},"Pending")
INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (2,1,{^2018/4/15},"Approved")
INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (3,2,{^2018/6/1},"Closed")
INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (4,2,{^2018/4/15},"Approved")
INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (5,3,{^2017/11/22},"Pending")
INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (6,3,{^2018/2/3},"Approved")
INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (7,3,{^2018/3/12},"Suspended")
INSERT INTO Status (StatPK , ConFK, Date, Type) 
VALUES (8,3,{^2018/5/11},"Approved")


CREATE CURSOR Hours;
(HourPK int,;
conFK int,;
Date d,;
Apphours int)

*!*PK,ConFK,,Date,,AppHours
INSERT INTO Hours (HourPK , ConFK, Date, AppHours) VALUES (1,2,{^2017/7/3},10)
INSERT INTO Hours (HourPK , ConFK, Date, 
AppHours) VALUES (2,2,{^2018/3/12},14)

INSERT INTO Hours (HourPK , ConFK, Date, AppHours) VALUES (3,3,{^2018/4/1},20)
INSERT INTO Hours (HourPK , ConFK, Date, 
AppHours) VALUES (4,3,{^2018/5/1},12 )




SELECT Status.ConFK, LastHours.AppHours;
FROM Status ;
INNER JOIN (SELECT ConFK, MAX(Date) AS MaxDate;
FROM Status;
GROUP BY ConFK) M ON Status.ConFK = 
M.ConFK AND Status.Date = M.MaxDate ;

AND Type = "Approved";
LEFT JOIN (SELECT Hours.ConFK, Hours.AppHours;
FROM Hours;
INNER JOIN (SELECT ConFK, MAX(date) AS MaxHoursDate;
FROM Hours;
GROUP BY ConFK) MH ;
ON Hours.ConFK = 
MH.ConFK AND Hours.Date = MH.MaxHoursDate ) LastHours ;

ÂON STatus.ConFK = LastHours.ConFK

Frank.

Frank Cazabon

On 22/06/2018 12:21 PM, Ken Dibble wrote:
ˆÑSPÕÛۜÝ[Y\‹Š‹Ý]\ˊ‹Ý\œË\Ý\œ€ FROM Consumer

JOIN Status on Consumer.ConPK=Status.ConFK

Q•ÕUTˆ“ÒSˆÝ\œÈۈÛۜÝ[Y\‹Û۔ÏRÝ\œËÛۑ€K

ˆÒT‘HÝ]\ˑ]HB‚…4TÄT5BԂ…7FC"äFFR’e$ôÒStatus Stat2 WHERE

Ý]‹Ûۑ’ÈHÛۜÝ[Y\‹Û۔ÈԓÕTBY Stat2.ConFK)
S‘Ý]\˕\HH\›Ý™Y‚ˆS‘Àurs.Date = (SELECT 
MAX(Hours2.Date) FROM Hours Hours2 WHERE

Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK)


I actually can't get this to run without 
errors. Interpolating, I **think** you meant:

‚4TÄT5B6öç7VÖW"â , Status.*, Hours.AppHours

FROM Consumer

ˆ“ÒSˆÝ]@s on Consumer.ConPK=Status.ConFK

LEFT OUTER JOIN Hours on Consumer.ConPK=Hours.ConFK

ÒT‘HÝ]\ˑ]HBˆ(SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE

Stat2.ConFK = Consumer.ConPK AND Status.Type = "Approved" GROUP BY

ˆÝ]‹Ûۑ’ÊBˆS‘Ý\œË‘]HH
ÑSPÕPV
Ý\€s2.Date) FROM Hours Hours2 WHERE

Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK)


However, I get "Function missing )" on the last subquery on this this,

[™™Z]her intellisense nor I can find any unmatched parens.
Also, the first subquery is grouping on the Status table FK, while the
second subquery groups on the Hours table PK. I 
think they should both group on the same key, 
but I don't understand which one that should be.

ˆ@nks.
ˆÙ[‚‚‚­Ù^Ù\ÜÚ]™H][Ý[™È™[[ݙYžH[excessive quoting removed by server]


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-22 Thread Ken Dibble




Maybe this will do what you want:


SELECT Status.ConFK, LastHours.AppHours;
FROM Status ;
INNER JOIN (SELECT ConFK, MAX(Date) AS MaxDate;
FROM Status;
GROUP BY ConFK) M ON Status.ConFK = 
M.ConFK AND Status.Date = M.MaxDate ;

AND Type = "Approved";
LEFT JOIN (SELECT Hours.ConFK, Hours.AppHours;
FROM Hours;
INNER JOIN (SELECT ConFK, MAX(date) AS MaxHoursDate;
FROM Hours;
  Â  GROUP BY ConFK) MH ;
  Â  ON Hours.ConFK = 
MH.ConFK AND Hours.Date = MH.MaxHoursDate ) LastHours ;

ON Status.ConFK = LastHours.ConFK


Yes, using the data I provided (and which you 
assembled into tables), this gets:


CONFK   APPHOURS
1   .NULL.
3   12

The query itself doesn't sum anything, but I 
assume I can convert NULLs to 0 and sum the 
APPHOURS column, and use _TALLY or RECCOUNT() to 
provide a total of approved Consumers.


Thank you very much!!!

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: Query Involving Sums and Two Most Recent Dates

2018-06-22 Thread Ken Dibble



Personally I avoid _TALLY since so many commands & functions in VFP 
will change it.


I don't think there's any danger of it getting changed if I store the 
contents of _TALLY to a local variable immediately after running the 
query, which is what I always do.


I think RECCOUNT() moves the record pointer, which might not be 
desirable in some circumstances but wouldn't make a difference in my case.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-22 Thread Ken Dibble




SELECT Consumer.*, Status.*, Hours.AppHours
FROM Consumer
JOIN Status on Consumer.ConPK=Status.ConFK
LEFT OUTER JOIN Hours on Consumer.ConPK=Hours.ConFK
WHERE Status.Date =
(SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE
Stat2.ConFK = Consumer.ConPK GROUP BY Stat2.ConFK)
AND Status.Type = "Approved"
AND Hours.Date = (SELECT MAX(Hours2.Date) FROM Hours Hours2 WHERE
Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK)


I actually can't get this to run without errors. Interpolating, I 
**think** you meant:



SELECT Consumer.*, Status.*, Hours.AppHours
FROM Consumer
JOIN Status on Consumer.ConPK=Status.ConFK
LEFT OUTER JOIN Hours on Consumer.ConPK=Hours.ConFK
WHERE Status.Date =
(SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE
Stat2.ConFK = Consumer.ConPK AND Status.Type = "Approved" GROUP BY 
Stat2.ConFK)

AND Hours.Date = (SELECT MAX(Hours2.Date) FROM Hours Hours2 WHERE
Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK)


However, I get "Function missing )" on the last subquery on this 
this, and neither intellisense nor I can find any unmatched parens.


Also, the first subquery is grouping on the Status table FK, while 
the second subquery groups on the Hours table PK. I think they should 
both group on the same key, but I don't understand which one that should be.


Thanks.

Ken


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-22 Thread Ken Dibble




> Interesting. I've always just followed the principle that if a parent can
> own more than one value for a particular item, you put that item in a child
> record, and keep the child records in a separate table and JOIN it as
> needed.

So, can a Consumer be both Approved and Pending?

By your logic, if a Company Name on a company record could change
(when Acme Widgets is taken over by Apex Amalgamated) that should be
in a child table, with a date range for when each name is effective.

If the status is always only one value at that point in time, but may
change over time, you might store the CURRENT STATUS in the Consumer
table, and an history (or Audit Trail) of updates to that status in a
Status Audit Trail table.

It's an issue of modeling the dimension of time in your database
schema. Typically, the current status is what you want to check when
you query the tables: how much stuff is in stock, how many projects
are pending, etc. all come with the implicit requirement of "at this
time." But other reports would question "how did this inventory vary
over time" which would trace history/audit-trail records.


This is probably the best way for me to think about this.

It may or may not be needless to say that it's wy too late to 
change the design of the database and related code in such a 
fundamental way--if I concluded that, in my specific case, it would 
be the best way to go. I've given you one example of a problem that 
occurs in several different modules of the system, each with its own 
set of parent records and child tables, many of which have 
"expiration" or "supercession" (is that a word?) dates. This isn't 
sales with invoices and orders; it's a quasi-medical case 
management/service/process tracking and documentation system. Users 
need to look at the "historical" information frequently.


I did actually write a generic method for my reporting system a few 
years ago that can accept a few parms and take the long way around 
(multiple queries and sorting tricks) to produce these kinds of 
results regardless of the tables being processed. It works for a 
reasonably large subset of these problems, but this particular case, 
a report asking for a couple of totals rather than a list of names 
and related items, is sufficiently different and unusual in my case 
to make me think about doing something different. Unfortunately, I 
can't do something THAT different.



> I thought that was a requirement for normalization. It would seem to
> engender less upkeep than creating a need to update something in the parent
> record whenever you change something in the child record.

Only if the two things mean the same thing. The Consumer record stores
the current state. The Status Audit table stores the history of state
changes. They may have similar names, but are in fact different pieces
of information.

Consumer: Approved is the current status of the process
Status table: Approved, {^2018-6-21) is the date the process got that status.


I think I have to respectfully disagree here. Perhaps it's only the 
(undiagnosed) Aspergerishness in me. But I am an entirely self-taught 
developer who does not really understand set theory very well. A 
program that I produced in the early 1990s to perform some of the 
tasks the current system handles had a single, very large table that 
stored everything. At the time it was required to report whether a 
specific service had been delivered to a specific consumer at least 
once per quarter. So the table had one row per consumer and a field 
for each service and each quarter: S1Q1, S2Q1... S1Q3... etc.


There was at that time no need to maintain a historical record of 
services; at the end of each reporting year the service fields were 
purged and we started again. Neverthess, I think everyone would say 
this was a terrible design.


I don't think that adding a different effective date to a piece of 
data that is otherwise identical to other pieces of data makes it a 
"different thing" in normalization terms. I can see that in some 
cases it would be more convenient to do so. But if instead of two or 
three dated items per parent, what if I had fifteen or twenty?


My system provides a utility function to superusers; they can add new 
Status options without requiring me to do any programming. And they 
frequently do this. Following your suggestion, I would have to do 
programming to modify the parent tables every time they did that. (I 
can't automate it; I have to boot everybody out of the system to 
modify tables that are constantly in use.)


You might say, "Oh. That's new information." However, If I had given 
you 3000 words explaining the full complexity of the system in 
advance, you would have responded "tl;dr".


I am always struggling to understand the principles behind these 
things, but every time I think I've found one somebody comes along 
and tells me, no, that's not it. It makes everything, in the end, 
seem terribly ad hoc, and that makes it really

Re: Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble

At 02:33 PM 6/21/2018, you wrote:
I mean specifically, which records (consumer PK and apphours) would 
you expect in your results?


There are two Consumers whose most recent (last) status is 
"Approved": Consumer PKs 1 and 3. The relevant Status records are 
Status PKs 2 (for Consumer 1) and 8 (for Consumer 3).


Of those two Consumers, only Consumer 3 has any Hours records at all. 
The value for Consumer 3's most recent (last) hours record is 12 
(Hours record PK 4).


Thanks.

Ken


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble

At 02:21 PM 6/21/2018, you wrote:

What's your expected output from the data you presented?


Answer: 2 Approved Consumers, having a total of 12 Hours.

I did include that in my original post.

To make it a little easier for people to try to help, here's some 
code to build up the data and my attempt at what I've understood as 
your requirements:


[snip]

Thank you for doing that. Wow, I'm sorry I omitted that. I usually do 
that when I ask for help with queries.


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble

Responses in-line:


No, it's just a little quirky due to your design choices. Typically, I
would have a "current status" value in the Consumer record that's an
FK into the Status history table.

A common problem with data modeling is determining if your system is a
reflection of the current version of the system, or the history of the
states of the system, or a mix of both.


Interesting. I've always just followed the principle that if a parent 
can own more than one value for a particular item, you put that item 
in a child record, and keep the child records in a separate table and 
JOIN it as needed. I thought that was a requirement for 
normalization. It would seem to engender less upkeep than creating a 
need to update something in the parent record whenever you change 
something in the child record. Also, if a need develops for the 
parent to own more than one of something else that was not part of 
the original design, something which would require yet another child 
table, I would then also have to modify the parent table to add a 
"most recent" field for that. Modifying existing tables containing 
data seems more risky than simply adding empty tables--especially 
when I have to do it in a completely automated way for remote 
locations whose hardware I don't trust.



> The results have to total the most recent hours records belonging to
> Consumers whose most recent Status is "Approved".

I think your description of the hours result is a little ambiguous,
and since I've guessed wrong twice, I'll stop now. ;)

Are you SUM'ming Hours records for the Consumer SINCE their status
became approved, or are you picking the LAST Hours record for
Consumers currently Approved? Either is easy. Ish.


I need a total of the Hours stored to all of the LAST hours records 
that are owned by Consumers whose LAST status record contains 
"Approved" in the "type" field. Bear in mind that a Consumer may not 
own any records in the Hours table at all.



> And my testing indicates that a GROUP BY clause is required somewhere.
>

It's in there, with the sub-select with the MAX


Yes it is. Sorry that I missed it.

Thanks for all of your help.

Ken



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble
Er... and while still rendering a total number of Consumers whose 
hours were totalled--at least via _TALLY if nothing else.




I should have realized that from your example solution. I *ASSuMEd* we
were totalling hours. My bad.

SELECT Consumer.*, Status.*, Hours.AppHours
FROM Consumer
JOIN Status on Consumer.ConPK=Status.ConFK
JOIN Hours on Consumer.ConPK=Hours.ConFK
WHERE Status.Date =
(SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE
Stat2.ConFK = Consumer.ConPK GROUP BY Stat2.ConFK)
AND Status.Type = "Approved"
AND Hours.Date = Status.Date


Better, but there is no guarantee that Hours.Date will equal Status.Date.


And my testing indicates that a GROUP BY clause is required somewhere.

I'm wondering if this will turn out to be np-hard and my original 
multi-query approach is the only way to do this.


Thanks.

Ken


[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble




I should have realized that from your example solution. I *ASSuMEd* we
were totalling hours. My bad.

SELECT Consumer.*, Status.*, Hours.AppHours
FROM Consumer
JOIN Status on Consumer.ConPK=Status.ConFK
JOIN Hours on Consumer.ConPK=Hours.ConFK
WHERE Status.Date =
(SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE
Stat2.ConFK = Consumer.ConPK GROUP BY Stat2.ConFK)
AND Status.Type = "Approved"
AND Hours.Date = Status.Date


Better, but there is no guarantee that Hours.Date will equal Status.Date.

The results have to total the most recent hours records belonging to 
Consumers whose most recent Status is "Approved".


And my testing indicates that a GROUP BY clause is required somewhere.

I'm wondering if this will turn out to be np-hard and my original 
multi-query approach is the only way to do this.


Thanks.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble





SELECT Consumer.*, Status.*, SUM(Hours.AppHours) AS TotalHours
FROM Consumer
JOIN Status on Consumer.ConPK=Status.ConFK
JOIN Hours on Consumer.ConPK=Hours.ConFK
WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE
Stat2.ConFK = Consumer.ConPK)
 AND Status.Type = "Approved"


Thank you, but I think I left out a requirement. The hours have to 
come from the most recent Hours records as well.


Also appears to require a GROUP BY clause.

Thanks.

Ken


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Stuck inside the Filter (with the Memphis blues again)

2018-06-21 Thread Ken Dibble



> Despite the convential wisdom about the vagaries of email, in all 
my previous experience with ProFox, this never happens unless the 
message was stuck in the filter.


You called it.


Thanks, Ed.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble





SELECT Consumer.*, Status.*, SUM(Hours.AppHours) AS TotalHours
FROM Consumer
JOIN Status on Consumer.ConPK=Status.ConFK
JOIN Hours on Consumer.ConPK=Hours.ConFK
WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE
Stat2.ConFK = Consumer.ConPK)
 AND Status.Type = "Approved"


Thank you, but I think I left out a requirement. The hours have to 
come from the most recent Hours records as well.


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Query Involving Sums and Two Most Recent Dates

2018-06-21 Thread Ken Dibble

Hi Folks,

I have to admit that I've never been able to figure out how to get 
MAX() to work correctly in queries.


Given the following tables (simplified):

Consumers

PK
1
2
3

Status

PK  ConFK   DateType
1   1   {^2018/1/15}Pending
2   1   {^2018/4/15}Approved
3   2   {^2018/6/1} Closed
4   2   {^2018/4/15}Approved
5   3   {^2017/11/22}   Pending
6   3   {^2018/2/3} Approved
7   3   {^2018/3/12}Suspended
8   3   {^2018/5/11}Approved

Hours

PK  ConFK   DateAppHours
1   2   {^2017/7/3} 10
2   2   {^2018/3/12}14
3   3   {^2018/4/1/}20
4   3   {^2018/5/1} 12

Query: How many Consumers have a most recent Status of Approved, and 
what is the sum of those Consumers' Approved Hours?


Answer: 2 Approved Consumers, having a total of 12 Hours.

I realize it's probably two queries: one for the sum of Consumers, 
and one for the sum of Hours. However, I have been unable to figure 
out how to write a simple query to get either of those two values.


I have laborious code that does things like pulling in all of the 
Status records for each consumer and sorting them by date to find the 
most recent one, and then doing the same for Hours records, and then 
munging the data together into a final output cursor, and it works 
fine and is fast enough, but it just makes me crazy every time 
somebody wants a slightly different report along these lines.


It seems like there should be a way to do this more simply.

I am sure that I am missing something extremely obvious.

Thanks for any help.

Ken Dibble
www.stic-cil.org



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[ADMIN] Stuck inside the Filter (with the Memphis blues again)

2018-06-21 Thread Ken Dibble

... Sorry, Bob...

Ed, I sent a message concerning SQL queries about a half hour ago. It 
hasn't shown up in my email, and it's not in the archive. In all of 
my previous experience, Despite the convential wisdom about the 
vagaries of email, in all my previous experience with ProFox, this 
never happens unless the message was stuck in the filter.


Can you please check it?

Thanks.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: Microsoft Catch 22 RDP Update

2018-05-23 Thread Ken Dibble

Thanks, Dave. Now if I can just figure out the logistics on this...


Ken,
No problems I can see so far on NIC/DHCP addressing or static IP's changing.

Dave Crozier
Software Development Manager
Flexipol Packaging Ltd.



---
This communication and the information it contains is intended for 
the person or organisation to whom it is addressed. Its contents are 
confidential and may be protected in law. If you have received this 
e-mail in error you must not copy, distribute or take any action in 
reliance on it. Unauthorised use, copying or disclosure of any of it 
may be unlawful. If you have received this message in error, please 
notify us immediately by telephone or email.


Flexipol Packaging Ltd. has taken every reasonable precaution to 
minimise the risk of virus transmission through email and therefore 
any files sent via e-mail will have been checked for known viruses. 
However, you are advised to run your own virus check before opening any
attachments received as Flexipol Packaging Ltd will not in any event 
accept any liability whatsoever once an e-mail and/or any attachment 
is received.


It is the responsibility of the recipient to ensure that they have 
adequate virus protection.


Flexipol Packaging Ltd.
Unit 14 Bentwood Road
Carrs
Industrial Estate
Haslingden
Rossendale
Lancashire
BB4 5HH

Tel:01706-222792
Fax: 01706-224683
www.Flexipol.co.uk
---

Terms & Conditions:

Notwithstanding delivery and the passing of risk in the goods, the 
property in the goods shall not pass to the buyer until the seller
Flexipol Packaging Ltd. ("The Company") has received in cash or 
cleared funds payment in full of the price of the goods and all 
other goods agreed to be sold by the seller to the buyer for which 
payment is then due. Until such time as the property in the goods 
passes to the buyer, the buyer shall hold the goods as the seller's 
fiduciary agent and bailee and keep the goods separate from those of 
the buyer and third parties and properly stored protected and 
insured and identified as the seller's property but shall be 
entitled to resell or use the goods in the ordinary course of its 
business. Until such time as the property in the goods passes to the 
buyer the seller shall be entitled at any time


-Original Message-
From: ProFox  On Behalf Of Ken Dibble
Sent: 22 May 2018 17:14
To: profox@leafe.com
Subject: Re: Microsoft Catch 22 RDP Update


>Just had a 1 day full on panic here with the latest May 2018 update
>from Microsoft for Server 2008 and 2012. All the RDP (Remote
>desktop) sessions that used to connect now do NOT connect due to a
>change in the security settings on any client that has the latest
>Windows Updates.


Dave, I feel your pain.

I've been following this issue, and waiting to see whether MS issued
a version of the patch that does not mess up NIC/DHCP addressing.

Did you have any issues with losing static internal IP addresses or
NIC settings on Server 2008?

Thanks.

Ken Dibble
www.stic-cil.org




[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Microsoft Catch 22 RDP Update

2018-05-22 Thread Ken Dibble


Just had a 1 day full on panic here with the latest May 2018 update 
from Microsoft for Server 2008 and 2012. All the RDP (Remote 
desktop) sessions that used to connect now do NOT connect due to a 
change in the security settings on any client that has the latest 
Windows Updates.



Dave, I feel your pain.

I've been following this issue, and waiting to see whether MS issued 
a version of the patch that does not mess up NIC/DHCP addressing.


Did you have any issues with losing static internal IP addresses or 
NIC settings on Server 2008?


Thanks.

Ken Dibble
www.stic-cil.org



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Grids (Not Really)

2018-04-19 Thread Ken Dibble


I have tried about four times to post regarding grids.  I 
wonder if such posts are being filtered.


Nah. Grids just suck.

Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Testing

2018-03-27 Thread Ken Dibble



Yes, it was marked as spam. I’ll send the first and delete the dupes.


Thanks very much, Ed.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Testing

2018-03-27 Thread Ken Dibble

At 03:30 PM 3/27/2018, you wrote:

Not receiving my own posts?


The message to which I am replying was sent out at 3:30 pm EDT March 
27 2018. It's in the ProFox archive. I received it almost 
immediately. Others have seen it and replied.


I sent a message at 2:21 pm EDT March 27 2018 with subject: "Get 
Method Issue with Hidden Property". As of 4:04 pm that message is not 
in the archive and has not arrived back to me.


I resent that message at 3:51 pm EDT March 27 2018. As of 4:04 pm 
that message is also not in the archive and has not arrived back to 
me. (And I've already received my own reply to Tracy...)


Somebody will probably say "email is not guaranteed to be 
instantaneous, yadda yadda, who knows what could be wrong with all 
the newfangled filtering, yadda yadda, it's probably at your end, 
yadda yadda...


I've been subscribed to ProFox since I still had some red hair. In 
EVERY SINGLE CASE where a message I sent to ProFox did not show up in 
under a minute, the problem has been, in EVERY SINGLE CASE, a problem 
at the ProFox server. :) It has NEVER been anything else.


So, Ed, please take a look and see what happened to my messages.

Thanks!

Ken



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Get Method Issue with Hidden Property

2018-03-27 Thread Ken Dibble

VFP 9 SP 1, running on Win 7 Ultimate SP 1.

I know that there can be issues with hidden object properties; that's 
why I give the base class "Set" and "Get" methods to deal with them. 
That's always supposed to work, right?


So today somebody's software blew up on the "Get" method for a Shape object:

This is in my resize code (I created this long before VFP had 
Anchors, and I haven't bothered to change it; the cause of the 
problem is not that I'm not using Anchors, and the correct solution 
for the actual problem cannot be to ditch my code and use Anchors 
instead, even though some people may suggest that.)


This seems to have happened because of some bizarre anomaly where a 
user was previewing a report using the standard VFP report preview 
window. That report was called from a window that was opened by 
another window, both of which are In-Desktop windows inside my 
custom-made main window (I don't use _SCREEN). She closed the preview 
window, whereupon a shape that is ON THE MAIN WINDOW, not on the 
window that should have gotten focus, somehow executed its Resize() 
method--so she probably nudged the border of the main window somehow 
while playing with the report preview.


My shape subclass did this:

thepercent = THIS.ObtainAValue("PercentWidth")

* PercentWidth is a hidden property of the baseclass. The baseclass 
code is this:

PROCEDURE ObtainAValue
 LPARAMETERS cTheProperty

IF PEMSTATUS(THIS,cTheProperty,5) = .T.
  * Property exists; the IF statement just said so...
  RETURN THIS.&cTheProperty  && Error 1734 "Property 
PERCENTWIDTH is not found"

ELSE
  RETURN 0
   ENDIF
ENDPROC

That's all of the code involved; I'm not leaving anything out.

I can't reproduce this myself.

Needless to say, various users have resized their various forms 
bazillions of times, thereby running this code bazillions of times 
*times* the number of times Resize() gets called when you're messing 
with the borders of a form, without having this happen. This is the 
kind of stuff that just irks me. I've seen it before; built-in VFP 
functions just flat-out lie, leaving my code with nothing to 
trust--but it only happens once in a blue moon.


Any thoughts (other than "Use anchors instead"?)

Thanks.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Testing

2018-03-27 Thread Ken Dibble
No, it's some peculiarity in my text and/or subject line that some 
filter's RegEx code did not anticipate, I'm sure.


Around Christmas I sent a long email to my brother with about 20 
links to Christmas songs on YouTube pages, interspersed with 
commentary. His email server kept rejecting the message. I eventually 
broke it down to one of those links by sending them to him one at a 
time. The one that didn't go through was not immediately 
distinguishable from any of the others, just another string of random 
characters, but his ISP insisted on rejecting it, over and over and over.


It was a legitimate YouTube link like all the others; click it, the 
song played, without any unintended or unexpected other results.


This is what we have come to in our quests to defeat spam--and the 
longer this type of strategy is followed--the higher the percentages 
of legitimate messages that won't be delivered, eventually rendering 
email useless.


Ah well...

Ed, if you see any of my messages, please see if my original one is 
stuck in the filter.


Thanks.

Ken


I, otoh, am seeing my posts, so it's probably not a global change in
maillist behavior.

On Tue, Mar 27, 2018 at 4:06 PM, Ted Roche  wrote:
> On Tue, Mar 27, 2018 at 3:30 PM, Ken Dibble  wrote:
>> Not receiving my own posts?
>>
>
> Well, you already know what they say, right?
>
>
> --
> Ted Roche
> Ted Roche & Associates, LLC
> http://www.tedroche.com



--
Ted Roche
Ted Roche & Associates, LLC
http://www.tedroche.com


[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [ADMIN] Testing

2018-03-27 Thread Ken Dibble

At 03:30 PM 3/27/2018, you wrote:

Not receiving my own posts?


I don't think it likes my subject line. I'll try resending with a 
different subject. 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: [ADMIN] Testing

2018-03-27 Thread Ken Dibble
I always receive my own posts from ProFox. I may have set it years 
ago but certainly have not changed the setting since then.



It's a setting of the list-serve. If I remember right, it's off by default.

-Original Message-
From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of Ken
Dibble
Sent: Tuesday, March 27, 2018 3:31 PM
To: profoxt...@leafe.com
Subject: [ADMIN] Testing

Not receiving my own posts?



[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[ADMIN] Testing

2018-03-27 Thread Ken Dibble

Not receiving my own posts?


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: [NF] RE: Timers in VFP

2018-02-19 Thread Ken Dibble
And, for what it's worth, (and strangely enough), 
although the local airport is now called the 
"Greater Binghamton Airport", the actual _field_, 
as in "airfield", is still called "Edwin A. Link Field".


Ken


John,

I had a play around with the early GAT-1 
simulator but never got to try out the GAT-2 and subsequent models.. 


For their day they were extremely advanced.

News dated 1988:
"TORONTO, July 8— The Singer Commpany agreed 
today to sell its Link flight simulation and 
training systems division to CAE Industries of Canada for $550 million.
The sale is part of the breakup of Singer. The 
Stamford, Conn., military contractor was 
acquired in January by the Florida financier 
Paul Bilzerian, who has since said that all of 
Singer's divisions are up for sale.

Also today, Singer agreed to sell its education division for $20 million.
On Tuesday, Singer said it would sell its power 
tools and floor-care equipment division to Ryobi 
Ltd. of Japan for about $325 million.
CAE, a Toronto-based manufacturer of commercial 
flight simulators and other industrial products, 
said it had reached a definitive agreement with 
Singer to buy the Link division. It said it 
would finance the cost of the acquisition 
internally and through bank borrowings.
Singer's Link division, based in Binghamton, 
N.Y., employs 7,500 and posted revenues of $550 million in 1987.
Analysts said the purchase would more than 
double CAE's size and would create a leading producer of flight simulators.
''I think it will be the world's leader in 
commercial and military flight simulation,'' 
said Mark Lawrence, a technology analyst for 
Prudential-Bache Securities Canada Ltd.
Separately, Integrated Resources Inc. announced 
today that it would purchase Singer's education 
division for $20 million. The division, known as 
Career Systems Development, is an operator of vocational training centers.
The sales of these divisions will help Mr. 
Bilzerian pay off debt he accumulated during his 
$1.06 billion takeover of Singer, which came 
after a long battle with management."



Dave Crozier
Software Development Manager
Flexipol Packaging Ltd.



---
This communication and the information it 
contains is intended for the person or 
organisation to whom it is addressed. Its 
contents are confidential and may be protected 
in law. If you have received this e-mail in 
error you must not copy, distribute or take any 
action in reliance on it. Unauthorised use, 
copying or disclosure of any of it may be 
unlawful. If you have received this message in 
error, please notify us immediately by telephone or email.


Flexipol Packaging Ltd. has taken every 
reasonable precaution to minimise the risk of 
virus transmission through email and therefore 
any files sent via e-mail will have been checked 
for known viruses. However, you are advised to 
run your own virus check before opening any
attachments received as Flexipol Packaging Ltd 
will not in any event accept any liability 
whatsoever once an e-mail and/or any attachment is received.


It is the responsibility of the recipient to 
ensure that they have adequate virus protection.


Flexipol Packaging Ltd.
Unit 14 Bentwood Road
Carrs
Industrial Estate
Haslingden
Rossendale
Lancashire
BB4 5HH

Tel:01706-222792
Fax: 01706-224683
www.Flexipol.co.uk
---

Terms & Conditions:

Notwithstanding delivery and the passing of risk 
in the goods, the property in the goods shall 
not pass to the buyer until the seller
Flexipol Packaging Ltd. ("The Company") has 
received in cash or cleared funds payment in 
full of the price of the goods and all other 
goods agreed to be sold by the seller to the 
buyer for which payment is then due. Until such 
time as the property in the goods passes to the 
buyer, the buyer shall hold the goods as the 
seller's fiduciary agent and bailee and keep the 
goods separate from those of the buyer and third 
parties and properly stored protected and 
insured and identified as the seller's property 
but shall be entitled to resell or use the goods 
in the ordinary course of its business. Until 
such time as the property in the goods passes to 
the buyer the seller shall be entitled at any time


-Original Message-
From: ProFox [mailto:profox-boun...@leafe.com] On Behalf Of John Weller
Sent: 19 February 2018 10:30
To: profox@leafe.com
Subject: RE: [NF] RE: Timers in VFP

Hi Ken,

Thanks for that.  I was a navigator in the RAF 
for many years and was seconded to the UK arm of 
Singer Link between 1978 and 1982 to work on the 
Tornado simulator project.  The Binghamton 
office was doing some work for the project hence 
my visit.  I often wondered what happened to them after I left :-)


Regards

John

John Weller
01380 723235
07976 393631

>
> John,
>
> For some reason this message didn't get delivered to my work email. I
> was just combing through the list at ho

RE: [NF] RE: Timers in VFP

2018-02-18 Thread Ken Dibble

John,

For some reason this message didn't get delivered to my work email. I 
was just combing through the list at home and saw it today.


Singer Link is gone. CAE Corp bought it, and Hughes Aircraft bought 
CAE and relocated most of the simulator stuff to Arlington, TX. The 
federal government had a couple of classifed projects going at the 
Binghamton plant and insisted they stay there. Those are now owned by 
L3 and are still located at the industrial park in Kirkwood. Most of 
the Singer-Link building has been taken over and converted to a 
multi-tenant space.


Ken

At 04:19 PM 1/24/2018, you wrote:

I visited Binghamton in 1981 to attend a meeting at Singer Link, wish I
could have stayed longer.  Are Singer Link still there?

John Weller
01380 723235
07976 393631

>
> HI Paul. Pleased to hear that you think it's pretty. I do too--you can be
> anywhere in this town and look up and see forested hillsides.
>



[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: String Reference to Object

2018-02-15 Thread Ken Dibble



>  Unfortunately, it does not work in my usual use case: as an alias.
> Example:
>   use ccli
>   where=evaluate("ccli") && Nope
>   ? where.clcode

Well, in that case you should be using an alias:

use ccli alias TheTable

? TheTable.clcode


Well, I don't understand this at all.

"Use" is a VFP command that only opens a table. The following works 
fine for me:


CLOSE TABLES ALL

ccli = "C:\Some Path To\SomeTable.dbf"

USE (ccli)  && table is now open

EVALUATE() applies when the parameter you feed it is the name of an 
object or a variable that stores the name of another variable.


You can do:

var1 = 3
var2 = "var1"

? EVALUATE(var2) && 3

And you can do:

myarray = "aList"

oMyObj.AddProperty(myarray)

? ALEN(oMyObj.&myarray.,1)  && 1

But if you want to do this:

mytable = "foo"
myfield = "bar"

? mytable.myfield

Then you need to do:

? &mytable..&myfield

A [table].[field] reference is not an object reference and can't be 
treated like one. It's a thing unto itself.


Ken Dibble
www.stic-cil.org





___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Foxpro/Programming Training Question

2018-01-27 Thread Ken Dibble



> Hacker's Guide to Visual Foxpro 6.0 (THANKS TED!!!)

Please thank Tamar. The book blurb said it was "exhaustive and
irreverent." I was the irreverent part. By the time it shipped, Tamar
was exhausted.


These days I get exhausted just lifting that mighty tome off from and 
onto the bookshelf over my desk.


Thanks also to Tamar, whom I had the pleasure of meeting once.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Foxpro/Programming Training Question

2018-01-26 Thread Ken Dibble



In my opinion there are two issues: 1) Basic Programming Skills and 2) VFP
specific skills, and I'm interested in your suggestions in how to meet both
of those needs. Plus if there are other issues, let me know that as well.


I'm completely self-taught (and sometimes it shows). I don't have 
much to offer on basic programming skills. I played around with Basic 
in my youth briefly, and I got some formal instruction in C++ later 
in life but never used it to produce anything more than training 
exercises. I've briefly tinkered with Python--enough to convince 
myself that I could learn it if I had to, though I've never had to.


But for VFP, I first taught myself dbXL using the examples in the 
manual, and when I had to move from DOS into Windows I taught myself VFP.


The Hentzenwerke books were invaluable to me; I'm sure I never would 
have developed any real-world-usable skills without them. Especially:


Hacker's Guide to Visual Foxpro 6.0 (THANKS TED!!!)
The Fundamentals by Whil Hentzen
Effective Techniques for Application Development with Visual Foxpro 
(Booth & Sawyer: RIP Ms. Booth)


To a lesser extent:

Advanced Object Oriented Programming with Visual Foxpro 6.0 - Marcus Egger
Debugging Visual Foxpro Applications (Nancy Folsom; whatever happened to her?)
Visual Foxpro Report Writer - Cathy Pountney

Ken Dibble
www.stic-cil.org




___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] RE: Timers in VFP

2018-01-24 Thread Ken Dibble



Something make me click on your website link, Ken, and I was surprised to
see you work in the Binghamton, NY area. My wife is the from Elmira/Corning
and I've been through your pretty town many times.


HI Paul. Pleased to hear that you think it's pretty. I do too--you 
can be anywhere in this town and look up and see forested hillsides.


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Timers in VFP

2018-01-24 Thread Ken Dibble



 I vaguely recall somebody saying timers in VFP were bad (at some point).


I have a timer that tracks user activity and shuts down my 
application if there has been no activity for a period of time. It 
generally works well, but I've had a few issues with it:


1. Time is *very* approximate. If I configure it to shut down after 
15 minutes without activity, I can expect it to go at least 15 
minutes, but as long as 20 to 25 minutes. This seems to be affected 
by whatever else is happening on the machine.


2. Timers complicate debugging. I think they contribute to the fact 
that the debugger doesn't always land on the actual line of code 
where an error occurred. And if the timer is going to force a jump to 
some other place, or shut down the application, you need to have a 
routine to turn it off for your "debug mode", or you won't be able to 
spend much time analyzing things in the debugger.


3. I have speculated--with no proof--that timers contribute to 
incidents where VFP doesn't necessarily execute code in the order in 
which it is encountered. For example, various screen 
painting/updating issues. Sometimes you can call .Refresh() or 
.Paint() until you're blue in the face and it just doesn't happen 
until VFP gets done doing whatever it thinks is more important.


I, too, recall this issue being discussed and I think some people had 
some even more esoteric points.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Performance issues on virtual 2K12 server

2018-01-23 Thread Ken Dibble


Client moved from old virtual 2K3 server to newer 2K12 server.  They 
use an IT vendor to manage all of their IT setup.  They connect via 
Terminal Services if I understand correctly.  Apparently this legacy 
VFP application is run from the server by all users.  Performance is 
inconsistent, with many times it getting almost frozen for some 
unknown reason.  Other times it's fine.  No good rhyme/reason 
standing out.  A/V and other scans have the VFP app and data folders 
excluded (or so I'm told).  For those who have worked with VFP apps 
in TS mode, any tips?


"IT vendor to manage..."

Is this a "cloud"-hosted service? Have they applied the 
Meltdown/Spectre patches? Supposedly, especially in a virtualized 
setting, those can really slow things down.


We have not applied any of those patches here.

We use RDP here with a virtualized Windows 2008 server. Application 
runs on that server, and the data (VFP tables) are on a virtualized 
2012 server on the same hypervisor. It's blazingly fast, no matter 
where the end user is. Faster, in fact, for many users, than running 
it on a desktop in our building.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Printer brands

2018-01-17 Thread Ken Dibble


I am having ongoing problems with my Lexmark X543 multifunction 
colour laser printer (with automatic duplex).  It seems that it 
would be uneconomic to repair so I am looking for a replacement.  So 
far I have shortlisted three models from three different 
manufacturers - HP, Brother and OKI.  I am tempted by the OKI 
(MC562dnw) because it is shipped with 2K toners and has a free 3 
year on-site warranty.  Has anybody had experience (good or bad) 
with printers from this manufacturer?


We have used Brother printers exclusively here for well over a decade 
and we've been very happy with them.


Brother color laser printers can be quite expensive to operate, 
because you need four toner cartridges (@ US $50 to $60) to provision 
the printer. Brother high-capacity color laser printers themselves 
are fairly expensive as well (around US $400-$600). Unlike black & 
white laser printers, though, it can be cost-effective to replace the 
color laser drum (around US $150) when it wears out.


We limit use of the color laser printers here to small runs (100 
copies or fewer); for larger runs people use the printer to generate 
an original and we have a color copier to make the copies. When 
people follow that rule, the drums last for several years and the 
toner consumption is acceptable.


Beyond that, the main issue I have with color printers generally is 
the help desk support; people have to realize that they have to 
calibrate their software if they expect documents to come out of the 
printer with the same colors they see on their monitors, and they 
also have to understand that the ony real way to get a truly 
"professional" result is to create a PDF and send it off to an actual 
print shop.


HTH.

Ken Dibble
www.stic-cil.org



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: [NF] Meltdown and Spectre CPU Flaw Information

2018-01-05 Thread Ken Dibble


If you are a HIPAA shop then I'm sure your IT team is paying proper 
attention to this.


Hah! I AM the IT team. (I have a couple of part-time assistants who 
do help desk and maintenance, but I'm the CIO/SysAdmin/DBA/Systems 
Analyst/Code Monkey/chief cook and bottle washer.


We have an internal "cloud"; we don't use any form of commercial 
cloud storage for documents, or for any sensitive data (unless you 
count email as such; and sensitive data sent by email is 
password-encrypted in zip file attachments using 7-Zip). We do not 
host public-facing websites or email servers.


I have a consultant that I use for extremely technical purposes. I've 
requested their opinion on the issues.


I have a lot of stuff to research on my own, though, as I don't 
accept anybody's opinion without evaluating it for myself to the best 
of my ability.


My primary concern is what happens to the performance of VMWare when 
they issue a patch for this, and what happens to the performance of 
various vintages of MS Server that have been virtualized after I 
apply patches to them.


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: [NF] Meltdown and Spectre CPU Flaw Information

2018-01-04 Thread Ken Dibble
Virtually everything we do here involves HIPAA-sensitive information, 
but we have very robust perimeter defenses. I'm much more concerned 
about a potential 30%+ performance loss in systems that are 
constantly used by nearly a hundred people every day.


The exploit allows VMs to go into the memory space of other VMs. 
Very bad. Unless you don't have any sensitive info that needs to 
stay  that way.


--

rk

-Original Message-
From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of Ken Dibble
Sent: Thursday, January 04, 2018 1:35 PM
To: profoxt...@leafe.com
Subject: Re: [NF] Meltdown and Spectre CPU Flaw Information

I just can't wait to see what it's going to do to my highly
virtualized network--if I ever decide to let it through. Probably a
smaller version of what it's already started to do to some commercial
cloud systems.

Windows Automatic Updates: Just Say No. (TM)

>Also, kudos to Microsoft for shipping their patches a week early, and
>spontaneously rebooting idle Windows workstations while people were
>freaking out over the new exploits. Good job!
>
>On Thu, Jan 4, 2018 at 12:27 PM, Ken Dibble  wrote:
> > Hi folks,
> >
> > Ask Woody has a very thorough report on this, with links to more
> > information.
> >
> > We all need to be fully informed about this; it is going to affect
> > everybody.
> >
> > https://www.askwoody.com/
> >
> > Ken Dibble
> > www.stic-cil.org
> >
> >

[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Meltdown and Spectre CPU Flaw Information

2018-01-04 Thread Ken Dibble
I just can't wait to see what it's going to do to my highly 
virtualized network--if I ever decide to let it through. Probably a 
smaller version of what it's already started to do to some commercial 
cloud systems.


Windows Automatic Updates: Just Say No. (TM)


Also, kudos to Microsoft for shipping their patches a week early, and
spontaneously rebooting idle Windows workstations while people were
freaking out over the new exploits. Good job!

On Thu, Jan 4, 2018 at 12:27 PM, Ken Dibble  wrote:
> Hi folks,
>
> Ask Woody has a very thorough report on this, with links to more
> information.
>
> We all need to be fully informed about this; it is going to affect
> everybody.
>
> https://www.askwoody.com/
>
> Ken Dibble
> www.stic-cil.org
>
>

[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[NF] Meltdown and Spectre CPU Flaw Information

2018-01-04 Thread Ken Dibble

Hi folks,

Ask Woody has a very thorough report on this, with links to more information.

We all need to be fully informed about this; it is going to affect everybody.

https://www.askwoody.com/

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Restart now or later?

2017-12-08 Thread Ken Dibble



Bad Ken is stealing my line!

Once you go ERP you never go back.


I usually go ERP a few times after drinking some beers and eating 
some barbecue


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Restart now or later?

2017-12-08 Thread Ken Dibble



> As I said in the other thread on this topic: Experts recommend that people
> should not rely on a single product, no matter who makes it,
>>
>>
>> ---

You shoudl talk to more ERP vendors for a different opinion.


hahahahaha


Yeah, I should have been more specific.

*Computer* experts, not *marketing* experts.

*LOL*

-- Bad Ken ;-> 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Restart now or later?

2017-12-08 Thread Ken Dibble



However, even third party SW can have flaws in its SW! Right?


As I said in the other thread on this topic: Experts recommend that 
people should not rely on a single product, no matter who makes it, 
for anti-malware protection. Every product behaves differently and 
catches some threats while missing others. My statement in this 
thread was what I tell people when they ask me if they should just 
rely on Windows Defender.


Note that I also said in the other thread that you should have 
multiple products installed and use them for manual scans. You should 
only have ONE *real-time scanner* running at any given time.


Ken

And - since this thread is bringing up issues w/Malware protection - 
and I had started another thread about malware - maybe its a good 
time to ask. What DO People use to protect against Malware? And, is 
MalWareBytes the best protection against MalWare??


-K-


On 12/8/2017 10:07 AM, Ken Dibble wrote:
Meanwhile, other links say this is an issue with the Windows 
"Malware Protection Engine"--Windows Defender.


The reason why Windows Defender isn't good enough is because it is 
manufactured by the same company that makes the OSes that it's 
supposed to protect. It is likely dependent on code in those OSes, 
and if there are flaws in that code, then there will be flaws in 
Windows Defender.


That is the explanation I give people when I am asked if they 
should rely on Windows Defender instead of using third-party 
malware protection.


Now I have actual data to back me up.




[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Restart now or later?

2017-12-08 Thread Ken Dibble



Windows is shipping new updates early this month. In the latest
"Windows 10 Fall Creators Edition Update" version, they now have a
pretty panel and call them "Feature Updates" rather than bug fixes,
but you know what that means.

Info on the Windows Security Site [1] seems to indicate it's a fix for
many of their security products. That, combined with the week-early
date, make me suspect something's in the wild they don't want people
to catch.


"Ask Woody" has a post at 8:30 am his time today referencing 
CVE-2017-11937. He promises a fuller post later on ComputerWorld.


Meanwhile, other links say this is an issue with the Windows "Malware 
Protection Engine"--Windows Defender.


The reason why Windows Defender isn't good enough is because it is 
manufactured by the same company that makes the OSes that it's 
supposed to protect. It is likely dependent on code in those OSes, 
and if there are flaws in that code, then there will be flaws in 
Windows Defender.


That is the explanation I give people when I am asked if they should 
rely on Windows Defender instead of using third-party malware protection.


Now I have actual data to back me up.

Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[NF] Free Windows 10 Book by Woody Leonhard

2017-12-07 Thread Ken Dibble
Woody Leonhard of "Ask Woody" and "Woody on Windows" is my go-to guy 
for current information on the relative state of deshabille of 
various MS operating systems. Want to know what you're risking by 
leaving automatic updates on? He's the guy.


He's also written a book on Windows 10, and his publisher is offering 
it as a free PDF download. You can find out how to get it here:


https://www.askwoody.com/

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: BitDefender Doesn't Play Well With VFP

2017-12-06 Thread Ken Dibble


Well it depends on what the 'something' does - glancing at my 
desktop I see I have Malwarebytes, Microsoft Fixit, HiJack This* -
afaik they are all on-demand programs so there is no overhead. I 
don't have any other anti-virus software running.


I think some people are trying to compare apples and oranges to 
pineapples and pine trees here.


Running more than one *real time scanner* of any kind that inspects 
files as you move them, open them or execute them, at the same time, 
is a recipe for disaster.


As regards running Windows Defender and any other real-time 
anti-malware scanner at the same time: If you're doing it on a 
typical workstation I'm surprised you can even fully boot it up and 
log in. It may be that those... people... who are insisting on doing 
this on a server are only getting away with it because it's a massive 
tank with multiple multi-core processors and dozens of gigabytes of 
RAM. On an ordinary computer you would know instantly that it's a 
bonehead thing to do.


Lots of anti-malware products have the option to set up constant 
real-time scanning, or not to set it up, when you install it. It is 
necessary to pay attention to what the install screens tell you. 
Close attention. (In fact, if you are a computer professional, you 
should, as a matter of course, NEVER accept the default installation 
parameters for ANY software until you have at least examined the 
"advanced" or "custom" options.)


MalwareBytes, for example, can be used as a real-time scanner (where 
it will likely conflict with any other real-time scanner you have 
running, and cause serious problems) or only for manual or scheduled 
scans. You get the choice when you install it.


So having multiple anti-malware products *installed* is not a bad 
thing; in fact, most experts recommend that you have two or three 
installed, because none of them catches 100% of everything. But 
having more than one of them *running* at the same time is always a mistake.


As for my experience: I use free AVG at home because, unlike free 
avast!, it does not require registration. It does routinely try to 
trick me into installing its paid version(s), but since I am a 
computer professional I am not fooled. If it really got unbearably 
annoying, I'd probably go with free avast! and put up with the 
registration requirement.


At work we use the paid, centrally-managed version of avast! Endpoint 
Protection. My only real complaints about it are that 1) the 
documentation is non-existant and the only way to find out how to do 
something (anything) with it is to post a query to the user forums; 
and 2) it has a lot of false positives on websites because it insists 
on treating situations where website developers don't follow current 
"best practices" as though they were actual threats. (If you're a web 
developer, I'm sure it's nice to have a tool to tell you that failure 
to patch something has created a potential hole. But when end-users 
keep getting nasty-looking warnings because some developer is using 
an iFrame even though in the particular case, that iFrame has not 
been exploited to create an actual threat, then those users will 
likely start ignoring all of those warnings and just click through 
them until they stumble on something that really hurts. I've had this 
argument with the avast! developers, to no avail.)


The server-managed version of avast! is quite cheap per-seat for 
not-for-profits like ours if you get the three-year licenses; they 
provide a 50% discount to not-for-profits. The product does not 
require a true server OS; mine has been running on ordinary Windows 7 
Ultimate on a fairly robust (think "gaming"), always-on, workstation 
for years. And the server-console function to easily let you block 
access to specified URLs (using wildcard characters if you wish) 
across your entire network works great.


An amazing thing about avast! is that not once in the nearly 6 years 
I've used the product has it ever forced somebody to reboot in order 
to load an update. It just gets the updates and runs them, period. 
Can you show me any other Windows anti-malware with that record?


By the way, avast! recently purchased AVG. I don't know what that 
will bode for the future but right now they are managing them as two 
completely separate products.


(And no disclaimer needed; I don't work for avast! nor am I a 
reseller of it--or of anything else except my own products.)


Ken Dibble
www.stic-cil.org






___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated ot

Re: Odd Behaviour

2017-10-13 Thread Ken Dibble



ThisForm.pgfIncExp.ActivePage = This.Value
ThisForm.Refresh


Probably already thought of but the proper syntax of the command is:

ThisForm.Refresh()

(ie, with parentheses)

Such code would run semi-reliably without the parens in VFP 6 but 
less so in later versions. I have had a few instances in which bad 
code generates errors under some circumstances but not others, in 
seemingly random fashion, owing most likely to the behavior of the compiler.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Entering invalid date hangs form

2017-10-02 Thread Ken Dibble



Anyway, enter a valid date (set century is on) such as "11/11/" and you
blow through to the next field. Expected. Then try "22/22/" and the
field becomes highlighted *and you cannot remove the characters*. There's
no "Invalid Date" message. It feels like you're in a very tight keyboard
loop and you can't break out. I can click on the close box on the form and
see it depress, but no action is taken (My take is that Windows events are
superceding the VFP events but once VFP takes over, it's the infinite
loop). There is nothing I can do to change the invalid date even though I'm
stuck in the field (Delete key does nothing, trying to enter new values to
overwrite the old values does nothing, etc.).


This is one of VFP's famous "untrappable" errors. Typically when this 
happens you can do CTRL+A and then CTRL+X to clear it. Also, 
minimizing and then restoring the window will clear it.


When this happens in my system users can simply correct the date to 
solve the problem as well. The cursor will be flashing to indicate 
the system is not frozen. I'm surprised that you are saying nothing 
works. I suppose it could be JKey interfering.


A work-around would be to supply a date-picker, though I realize that 
could be a lot of work.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF]Debugging Pain Survey

2017-09-26 Thread Ken Dibble
I am embarked upon such a project right now, cleaning 
up/refactoring/commenting a bunch of code from a recent, very 
fast-moving project now that user demand for changes has slowed down. 
Here's my list of most common issues:


1. Typos

2. Bad Variable References (really, just a subset of Typos)

3. Incorrect Data Types

4. Logic Errors

5. Unexpected User Actions

There are two of these that I just can't seem to find a way around:

A. User fat-fingers some bizarro combination of keys, causing a crash.

B. User finds some way to input something even when the mouse cursor 
is an hourglass (okay, okay, spinning circle, or whatever nonsensical 
emoji is current in Windows 10, for all you modernistes) and when all 
the buttons are disabled.


Some of this is VFP's notorious set of screen update/paint/event 
issues. You know, you have some routine or loop of code, in the midst 
of which a button is supposed to be disabled or a control made 
visible or invisible, but it doesn't actually happen until after the 
routine/loop is finished, no matter how many DOEVENTS, WAIT ... 
TIMEOUT, Paint() and/or Refresh() lines you put in.


I have also discovered that the user can sometimes defeat 
hourglass/disabled control stuff by jumping to some other application 
during some time-consuming process, and then jumping back into my 
program before the process completes.


The rest of those in the list aren't an issue for me.

6. Other:

A. There is still, I think, some sort of really insidious corruption 
in my various project files that allows bad code to compile without 
throwing errors. This results in very rare instances of inexplicable 
crash errors. A missing or extra END... something perhaps, somewhere. 
I will probably never find it.


B. I am still occasionally having "invalid subscript" errors on 
arrays even after conducting an exhaustive code search for array loop 
counter variables that were not declared LOCAL (after Ted's 
suggestion--Thanks Ted!--a while back I found a small handful and so 
these are occurring much more rarely than before). Has anybody ever 
constructed a utility that searches all of the 
methods/functions/procedures in a project specifically for variables 
that were not declared LOCAL in those routines? (I only have a 
handful of PUBLIC variables that are set when the program starts and 
are never deliberately changed, and I never use PRIVATE).*


C. Connectivity Issues: I realize I can't fix broken hardware or 
cables through software, nor do I want to bog down my code with tests 
to ensure that everything is available across the network before 
every attempt to do something, but I wish I had a better handle on 
how to deal with some of these. Especially, lately, I would like to 
be able to "wake up" a dropped network share, since MS in their 
infinite wisdom decided it would be "helpful" to disconnect mapped 
drives that haven't been accessed within some mysterious amount of 
time (I'm aware of registry settings on both client and server side 
that are supposed to fix this; they simply DO_NOT_WORK).


* I know, never use PUBLIC variables; put stuff in global objects or 
simply instantiate variables globally at program start up. It 
shouldn't be a problem as long as those variables are intended to be 
static. And I need stuff to be available before any objects are 
instanciated and after all of them are destroyed.


Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/52.A2.16607.7637AC95@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Windows updates August problems?

2017-08-10 Thread Ken Dibble



And as a double-bonus, if you had any updates hidden, say because they
corrupted your machine, the cumulative update un-hid them so they get
applied and, *boom*.

How can you not love the company that does this?


I DO! I DO love them!

We STILL do not have any Windows 10 machines (and I have ten 
never-used Win 7 boxes still in inventory for future expansion) for 
this reason.


But see, I think that the Windows 10 forced update "feature" is 
actually a design bug that has caused Microsoft to achieve only 50% 
of its projected adoption rate for this OS (even though they gave 
away most of those adoptions for free and deliberately tricked and 
defrauded a lot of people into the "adoption"). Eventually somebody 
over there is going to wake up and realize this fact, and fix it. 
They keep inching toward it with some little change every few months. 
So when they finally return to full user-control of updates, then I 
will be able to avail myself of what is otherwise, according to many 
reports, a pretty good operating system.


Ken



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/E3.08.16607.B52AC895@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Windows updates August problems?

2017-08-09 Thread Ken Dibble



Later, "Restart Now or Restart Later?" revealed that some of the
recent updates STILL were not successfully installed. Restarted.

Lather, rinse and repeat the above three times.


A recent Win 10 update broke the Update History. Could that be why 
the user thinks nothing has been installed?


http://www.computerworld.com/article/3214488/microsoft-windows/windows-10-1607-cumulative-update-kb-4034658-wipes-out-update-history.html

Windows Automatic Updates. Just Say No. (TM)

Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/85.50.12431.BC9AB895@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: GETFILE() Returns Empty String in Some Cases

2017-08-01 Thread Ken Dibble

I remember!! It was Calvin Hsia! Here's the blog article:

https://blogs.msdn.microsoft.com/calvin_hsia/2004/12/14/foxpro-performance-tip-field-name-lookup-for-tables/

Ken


On 2017-08-01 10:00, Ken Dibble wrote:

A member of the VFP Team (I can't remember his name; he was the guy
who "took out the slow parts" from various subsystems for VFP 8 and 9)
wrote a blog article explaining that without the M. prefix, the system
MUST compare every variable referenced to every field in the current
work area every time the variable is accessed to determine whether the
variable is a field name. He said that if the current work area
contains a large number of fields, and the same variable is used over
a large number of iterations in a tight loop, using the M. prefix
makes a considerable difference in speed. He showed test results to
demonstrate this.
I do a LOT of array iteration. So I began using the M. prefix for
variables inside high-iteration tight loops. I noticed a slight speed
increase.
However, I find the M. prefix ugly and distracting. I used it
yesterday as a quick fix to demonstrate what the problem was. I will
probably eventually rename the variable.
Ken



Very interesting...thanks for sharing that!


[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/2A.4B.21563.4C8C0895@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: GETFILE() Returns Empty String in Some Cases

2017-08-01 Thread Ken Dibble



I agree with reasoning, but I have a slightly different methodology


I actually have my own methodology; I just failed to follow it. I 
personally find type abbreviations to be difficult to read and 
interpret quickly. For generic variables I usually just prefix "the", 
ie. thefile, thefolder, thename, etc. I never use "the" for a table 
or cursor field, so this ordinarily prevents the kind of problem I 
experienced yesterday.


Unfortunately, I had copied some old one-off code for this project in 
order to try to save some time. I need to remember that a lack of 
rigor will always eventually bite me.



Personally I am not a fan of the "M." prefix and find it unnecessary.


A member of the VFP Team (I can't remember his name; he was the guy 
who "took out the slow parts" from various subsystems for VFP 8 and 
9) wrote a blog article explaining that without the M. prefix, the 
system MUST compare every variable referenced to every field in the 
current work area every time the variable is accessed to determine 
whether the variable is a field name. He said that if the current 
work area contains a large number of fields, and the same variable is 
used over a large number of iterations in a tight loop, using the M. 
prefix makes a considerable difference in speed. He showed test 
results to demonstrate this.


I do a LOT of array iteration. So I began using the M. prefix for 
variables inside high-iteration tight loops. I noticed a slight speed increase.


However, I find the M. prefix ugly and distracting. I used it 
yesterday as a quick fix to demonstrate what the problem was. I will 
probably eventually rename the variable.


Ken  



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/AC.81.20123.36980895@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: GETFILE() Returns Empty String in Some Cases

2017-07-31 Thread Ken Dibble


Are you declaring your variable as PRIVATE right before you run the 
GETFILE() command?


PRIVATE mypath

mypath = GETFILE("csv","Spreadsheet","Open",0,"Open Spreadsheet")

Just curious if that is affecting it.


GAHHH!!! That's it!!

Not a PRIVATE declaration, the variable is declared LOCAL.

But in application mode there is a field in an open table with the 
same name as the variable. I applied the "essential m-dot" to the 
variable, and that fixed it.


Thanks very much Philip!!

Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/B0.1B.21563.D4D8F795@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: GETFILE() Returns Empty String in Some Cases

2017-07-31 Thread Ken Dibble



Permissions issue on the folder or on the selected file?


I don't see how. In both cases it's me doing the test, on the same 
computer, with the same folder and file, with the same domain 
administrator account.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/F8.C3.10880.EC47F795@cdptpa-omsmta01
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: GETFILE() Returns Empty String in Some Cases

2017-07-31 Thread Ken Dibble



What kind of value does "parms" contain?


The actual code is:

mypath = GETFILE("csv","Spreadsheet","Open",0,"Open Spreadsheet")

In both stand-alone and application mode, this displays the file 
dialog correctly and pointing to the location that I expect.


However, I have also tried it as:

mypath = GETFILE("csv","File","Open",0,"Open Spreadsheet")

because someone suggested that the dialog can't display more than 10 
characters to the left of the file name textbox. That didn't help.


I have also tried it simply as:

mypath = GETFILE()

Then I manually navigate to the file location. But that doesn't make 
it work either.


I'm sorry, I got sidetracked and failed to properly end the original message.

I meant to conclude with:

Thanks in advance.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/6F.7D.20123.CE07F795@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


GETFILE() Returns Empty String in Some Cases

2017-07-31 Thread Ken Dibble

Hi folks,

VFP 9 SP1 on Windows 7 Ultimate.

I have a process to let the user choose a file. The user opens a .scx 
form, presses a button to run some code that calls GETFILE(), and 
when the user has done so, the path and file name are displayed on the form.


When I run this form in stand-alone mode, this works fine. GETFILE() 
returns the path and file name to a string variable and I then 
display the variable contents on the form.


When I run this form from within the full application, GETFILE() 
displays the proper location and behaves perfectly fine, but when the 
user chooses a file, it always returns an empty string.


I've tracked this in the debugger. In both cases, I emphasize, from 
the point the user presses the button, the exact same code runs, at 
each point generating the exact same results, until we get past


myvariable = GETFILE(parms)

line, at which point myvariable is empty in application mode, but 
contains the full path and file name in stand-alone mode.


I am following the correct procedure to obtain an appropriate full 
path, and in both cases the GETFILE() dialog displays the correct 
location and is configured properly according to my parameters.


It simply won't return a value when run from inside the application.

I've read everything with "GETFILE" in the subject line in the 
leafe.com archives. I can't find anything that addresses this situation.


My application does not use the _SCREEN (SCREEN = OFF in the 
config.fpw file). Instead I have my own main window which is modeless 
and "2 - as top level". Normally the import window, which is modeless 
and  (1 - in top level), is called from a modal form that is opened 
from a menu item.


To eliminate the possibility that this modal/modeless business is 
interfering, I put the button that opens the import form directly on 
my main window, so that the only open windows are the modeless 
top-level form and the modeless in-top-level import form before the 
GETFILE() dialog is called. That's as close as I can get to running 
the import form in stand-alone mode. This did not help.


The stand-alone mode of my framework's forms actually creates the 
same environment that exists in the full application before opening 
the form, so I can't see how not actually running the full 
application can make a difference. I emphasize, again, in the 
debugger, from the point the user presses that button every single 
step runs exactly the same way, and returns the same results, up to 
the GETFILE() dialog, in both stand-alone and full-application modes.


My code stores the location that I want GETFILE() to display to a 
variable, mypath, so I do:


oldpath = FULLPATH(CURDIR())

CD (JUSTPATH(mypath))

myvariable = GETFILE(parms)

CD (JUSTPATH(oldpath))

Some people suggest using SET DEFAULT TO ..., so I also tried it like this:

oldpath = FULLPATH(CURDIR())

CD (JUSTPATH(mypath))

SET DEFAULT TO (mypath)

myvariable = GETFILE(parms)

CD (JUSTPATH(oldpath))

SET DEFAULT TO (oldpath)

That doesn't help either.

The default is for the file name and path to contain spaces, and this 
works just fine in stand-alone mode. But I renamed the test file to 
remove spaces, and put the file in C:\foo, so there are no spaces 
anywhere in the path or file name, and it still doesn't work full 
application mode. GETFILE() just returns an empty string.


I've also tried using PUTFILE() instead of GETFILE(), even though 
it's less elegant for my purpose. PUTFILE() also works as I expect in 
stand-alone mode but returns an empty string in full-application mode.


LOCFILE() is not an option because I can't mandate a file name for this.

This is driving me absolutely bonkers.

Possibly I could roll my own file dialog, but short of that, can 
anyone provide any suggestions to explain why this is happening?


Any suggestions 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/44.CD.20123.7486F795@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Bulk Imports While Multi-User System is in Use

2017-06-26 Thread Ken Dibble

Thank you to everyone who responded.


Is the proposed import doing any updates of the parent records or just
adding\updating child records?


The import will not create parent records. It also won't edit 
existing records, only create new child records in one particular table.


If the expected parent record is not found, all of the to-be-created 
child records for that parent will be skipped.


I think most of the time will go to very extensive validation to get 
a list (cursor or array) of records that will actually be inserted. 
As noted, the validation will have to include queries to find the 
parent records. I will also have to do queries to see if the child 
records have already been added (I can envision someone trying to 
import the same sheet more than once). I don't think those queries 
should pose much of a problem since they are read, not write, 
operations. Those would all be done prior to beginning the insertion process.


I'm going to require that the spreadsheet be saved in csv format to 
eliminate vagaries associated with xlsx and xlsx converted to xls. 
I'm told that the spreadsheet wizards around here are pretty familiar 
with that requirement.


So I feel pretty confident that this isn't going to disrupt anything seriously.

Thanks again.

Ken
www.stic-cil.org



Normally (i.e. in vanilla VFP) unless the logged-in users have
exclusively opened or otherwise locked the parent records (which you say
they won't) then I would be in broad terms:

* Pre-validating the import data to report on exceptions and arrive at a
clean import set of records.
* Upserting the child records wrapped in a transaction.
* Repeat if applicable for parent records.

You say your application doesn't explicitly lock any tables (rlock(),
flock() or automatic locks via BEGIN TRANSACTION) and if the OS does
indeed do any sort of ultra-brief locking on file updates it's never
caused me a problem.

So I would say the worst that will happen is that other users might see
a 'record not available - please wait' message if they try and save a
parentr record when you're still inside a transaction on whatever
machine the import is running on. But assuming there aren't millions of
records and you keep the transaction as quick as possible I doubt they'd
ever even see that.

--
  Alan Bourke
  alanpbourke (at) fastmail (dot) fm


[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/00.B0.10880.7B511595@cdptpa-omsmta01
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Bulk Imports While Multi-User System is in Use

2017-06-22 Thread Ken Dibble

Hi folks,

Having never attempted this before, I am seeking any guidance you can offer.

I'm using VFP tables across a LAN, with VFP 9 SP 1. The tables are on 
a virtualized Windows 2012 file server that has gargantuan memory and 
HDD resources available. The workstations are Windows 7 Ultimate 
32-bit with processors in the 3.5 GHz range and 4 GB of RAM.


My framework does not use the RAD features of VFP; no data 
environments, no control sources, no buffering (I actually wrote my 
own "buffering"/conflict resolution system), no auto-incrementing 
columns. The only time I manually lock anything is when my integer 
surrogate key-creation program is generating a new key--and I only 
lock the table that stores the last-used key value.


I do use a database container so that the default value methods of 
the PK fields of my tables can call the key generation program. When 
users create new records, I use APPEND, not INSERT. The system was 
deliberately designed to divorce database access from business rules 
and GUI (because initially, long ago, I thought I might actually 
embark on writing my own database server).


I understand that there is brief automatic locking, however, whenever 
VFP writes to a table (or, rather, when the server OS, in its 
infinite wisdom, deigns to carry out VFP's request to write to the table).


I've been given the task of importing data from a spreadsheet into my 
multi-user system. I have not done any testing on this but it is 
possible that the import process, run every week or every two weeks, 
will create thousands of records that will be "children" of a few 
hundred "parent" records.


The system is in near constant use by somewhere around a half-dozen 
people, and much larger numbers use it occasionally.


Some of the half-dozen intensive users are quite likely to be 
accessing the parent records at the time the bulk import process is 
creating the child records.


I am concerned about creating massive access conflicts leading to 
race conditions, freezing of the system, and/or data corruption.


Should I just block everybody from saving any data while the import 
process runs? (I don't know how long it will take, but I do envision 
a lot of error-checking and logging on each row of the spreadsheet to 
prevent bad data from getting into the system.) Or are there simple 
things I can do to prevent issues ("simple" means, no major changes 
to the framework or the database)? Or is this something I don't 
really need to worry about?


Thanks very much for any suggestions.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/14.40.21563.3C8DB495@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Friday Afternoon Discussion: Passwords

2017-05-06 Thread Ken Dibble



Not so silly. There are password processes that depend on gestures
that are under testing. The ability to click and swipe through a
series of images is somewhat unique due to biomechanical parameters or
personal habits. I've also seen proposed some sort of facial
recognition. The sooner we get through remembering a dozen random
characters, the better. That's just a waste of time.


Not likely to be accessible to people with visual disabilities, or 
disabilities that reduce fine-motor skills.



I use a password manager that syncs encrypted data over the internet
so I have the same set of passwords on different machines of different
OSes (Windows, Linux, ChromeOS, Android) and browsers. But none of
these make it easy for desktop or console applications; you need to
query the manager, prove you're you, copy the password to the
clipboard (insecure!) or try to manually type longish random strings.
Double-bonus goes to sites that double-check with an SMS or similar.
"Something you know (password) and something you have (cellphone)"
makes for good two-factor authentication.


Pretty much, only computer geeks (broadly construed) use password 
managers. Not only do most ordinary computer users not use them, they 
have never even heard of them.


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/06.5F.18116.D6F1E095@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Friday Afternoon Discussion: Passwords

2017-05-05 Thread Ken Dibble


1. Forcing people to frequently change passwords is not helpful. It 
just makes it more likely that they will stick the password on a 
Post-IT on their monitors because they can't remember it.


 It does help some.  If someone has your password but has not 
changed it, because it would alert you, and you change your 
password, he no longer has access.  (Yes, he could possibly break 
in again.)  If security is upped on the system he has access to and 
he has your password, the security improvement does not help you at all.


2. Imposed password complexity does not help either (As I keep 
telling people, the only way that a user can make his/her password 
harder to "guess" in the modern age is to make it longer. It is 
just as easy for a brute-force botnet application to 
"guess"#51aQ4@5)?" as it is to guess "YourMomma!")


 What about a dictionary attack?  dictionary.com has both 
"your" and "momma", but it does not have "#51aQ4@5)?".



Maybe I should start my own security newsletter


Read the article. The data does not support the contention that these 
are important enough vectors to justify the downside that these 
recommendations have for users.


Anybody who's got a dictionary, by now, also has a brute-force 
"guessing machine" and a botnet. Yup, they get through the dictionary 
in a few seconds. Within only a few more minutes, the botnet loops 
through every possible combination of characters in a 10-character 
password, and then they move on to 11 characters. The only thing that 
slows them down at all is a much longer password, and the only really 
effective defense involves measures on the server side. There is very 
little that a user can do to a password to make it significantly 
safer in the modern age, and there is huge amount of aggravation that 
can be caused to users over passwords that, in the end, has very 
little benefit.


This isn't just me, or just me and O'Reilly. Now it's me, O'Reilly, 
and the NIST.


Of course, I know, I'm a low-status person. No matter how right I am. 
or how often I am right, nobody listens to me until a high-status 
person repeats what I said.


I am just enjoying the gratification of being proven right.

Ken  



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/E1.DD.03288.67DFC095@cdptpa-omsmta01
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[NF] Friday Afternoon Discussion: Passwords

2017-05-05 Thread Ken Dibble

What I've been saying for years 

From the O'Reilly Security Newsletter:

https://venturebeat.com/2017/04/18/new-password-guidelines-say-everything-we-thought-about-passwords-is-wrong/

1. Forcing people to frequently change passwords is not helpful. It 
just makes it more likely that they will stick the password on a 
Post-IT on their monitors because they can't remember it.


2. Imposed password complexity does not help either (As I keep 
telling people, the only way that a user can make his/her password 
harder to "guess" in the modern age is to make it longer. It is just 
as easy for a brute-force botnet application to "guess"#51aQ4@5)?" as 
it is to guess "YourMomma!")


Maybe I should start my own security newsletter

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/8D.F3.12780.D93BC095@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Fuzzy Name Searching

2017-04-14 Thread Ken Dibble


Unfortunately, that would require modifications to the database, 
which I try to avoid due to the downtime they require.


 Why would that be an issue of consequence?

 You add some columns to a table.  The rest of the software 
can ignore them.  (Unless you use select * or other black arts, 
said rest might never see the new columns.)


Yeah, there are black arts involved. My framework has some generic 
code that expects to be able to process every field in certain 
types of tables. If there is not corresponding code for each field 
in certain subclasses, errors are thrown. Probably a poor design 
choice in retrospect, but the choice was made in 2004 and 
rectifying it would require a huge amount of work.


 Oh, my!  (Alternative pronunciation: "You poor bastard!")

 Can you modify the framework?  One kludge would be for it to 
ignore certain columns, say those starting with a certain prefix.


See above, re: "huge amount of work."

 I have a couple of anvils around my neck, too.  They prevent 
my system from easily being multi-user.  One was a reasonable 
trade-off at the time, but the downside continues to bite.  The 
other was an argument I lost, because my boss does not understand 
relational databases.


Pointy-haired, I presume?


[snip]

No, I don't have a loader program. I would have to introduce 
internet download capabilities in order to provide that, and that's 
a headache I don't need.


 Loader programs are not difficult to set up on a local 
network.  Still not an option?


No, because there are other completely separate organizations, far 
away from here, using the software. I would either have to fork the 
project to leave those organizations out of the loader thing, or I 
would have to somehow get them to implement timely updates of a 
network program source cache. These other organizations do not have 
any employees who even fully understand the difference between a 
local folder and a folder on a server (I am not exaggerating), and 
they have to make an appointment with a local IT consultant any time 
they need to install a piece of software or do anything else of a 
maintenance nature. Every time they need to install an update for 
compliance reasons it's a couple hours of phone time for me, mostly 
spent trying to get them to explain where their data is and then 
trying to get them to understand what they need to do about it. 
(TeamViewer or something isn't a realistic option because they don't 
have admin rights to their own servers, and some of them don't even 
understand how to log into their workstations with an admin account.) 
So the only option to save my sanity would be to implement a direct 
download across the internet from my server--a security headache.


Thanks.

Ken




___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/BD.6E.21189.DB2D0F85@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Fuzzy Name Searching

2017-04-13 Thread Ken Dibble


Unfortunately, that would require modifications to the database, 
which I try to avoid due to the downtime they require.


 Why would that be an issue of consequence?

 You add some columns to a table.  The rest of the software can 
ignore them.  (Unless you use select * or other black arts, said 
rest might never see the new columns.)


Yeah, there are black arts involved. My framework has some generic 
code that expects to be able to process every field in certain types 
of tables. If there is not corresponding code for each field in 
certain subclasses, errors are thrown. Probably a poor design choice 
in retrospect, but the choice was made in 2004 and rectifying it 
would require a huge amount of work.


Thus when I make data changes involving certain tables, I have to 
lock everybody out not only for the time it takes to make those 
changes, but to update everybody's copy of the software. There are 
over 100 users at this site, many of whom use the software almost 
constantly, and there are other sites that also use the software.


One of those tables would be the table that contains the names of people.

I can work around that by storing the pre-processed data in a 
separate table with a one-to-one relationship to the names table 
(assuming that I don't need backlinks in the names table), but that 
seems inefficient to me. My principle for organizing a table of 
people is that it should contain every required aspect of the 
person's identity of which the person can have only one. A soundex 
value or Levenshtein weight for the person's name would qualify as such.


No, I don't have a loader program. I would have to introduce internet 
download capabilities in order to provide that, and that's a headache 
I don't need.



I'm looking for suggestions on how to produce results that include 
close matches on last names that doesn't require pre-processing.


 I can not see that the preprocessing would be very involved.


I agree, it would not. It's the necessity of providing storage for 
the results that causes the problem.


Well, there's a separate problem--the cost of having to appy one or 
two UDFs that would have to run on every name-search query. I was 
hoping, though, to get some suggestions for UDFs that I could at 
least test and see if they aren't impossibly slow.


I suppose there are no easy answers, but if anyone has an algorithm 
for this kind of thing that they would be willing to share, I'd be grateful.


 There are not, because different languages assign different 
values to the Roman alphabet characters.  You are going to have 
decide on language trade-offs.


I'm liking the Levenshtein stuff, and I could use it in my utility 
for detecting and removing duplicate records. That wouldn't involve 
pre-processing. I think it could really speed that up.


Thanks.

Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/2E.80.21189.632BFE85@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Fuzzy Name Searching

2017-04-13 Thread Ken Dibble
Thank you everybody. I will be working through these suggestions and 
let you know what I come up with.


Ken


I remember this joy of searching names in a system that had 2+ million
customers and names were all varchar() instead of a key to a secondary
table.  My indexes sure took a beating when I got another "Williams", the
number one last name in the system, and it had to tear a page to make a new
page in this area.

I found that making a table called NAMES fixed the search time I was
experiencing.  Two text boxes had input for whatever they keyed.  I added
the % for wildcard after any text in each box and one of the keypress
events was the trigger to run it.

Select 
from customer
where lNameID in (
select nameID from names
where Name like @Lname)
and
fNameID in (
select nameID from names na
where na.Name like @Fname)

That has been 10-13 years ago.




On Wed, Apr 12, 2017 at 9:55 AM, Ken Dibble  wrote:

> Hi folks,
>
> I've been thinking of how I can improve the ability of my users to find
> people's names in a system that has over 30,000 people in it.
>
> I've looked at soundex, and I've considered munging names to remove
> spaces, apostrophes, hyphens, etc. The thing about those approaches is that
> in order to be efficient, they require pre-processing all of the names in
> the system and storing the results, which can then be queried to find
> matches.
>
> Unfortunately, that would require modifications to the database, which I
> try to avoid due to the downtime they require.
>
> I'm looking for suggestions on how to produce results that include close
> matches on last names that doesn't require pre-processing.
>
> I've played with various schemes to assign "weights" to matches based on
> the number of matching letters, but they all end up being very slow and
> also producing too many false positives.
>
> I suppose there are no easy answers, but if anyone has an algorithm for
> this kind of thing that they would be willing to share, I'd be grateful.
>
> Thanks.
>
> Ken Dibble
> www.stic-cil.org
>
>

[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/E2.1F.03423.4B39FE85@cdptpa-omsmta01
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Fuzzy Name Searching

2017-04-12 Thread Ken Dibble

Hi folks,

I've been thinking of how I can improve the ability of my users to 
find people's names in a system that has over 30,000 people in it.


I've looked at soundex, and I've considered munging names to remove 
spaces, apostrophes, hyphens, etc. The thing about those approaches 
is that in order to be efficient, they require pre-processing all of 
the names in the system and storing the results, which can then be 
queried to find matches.


Unfortunately, that would require modifications to the database, 
which I try to avoid due to the downtime they require.


I'm looking for suggestions on how to produce results that include 
close matches on last names that doesn't require pre-processing.


I've played with various schemes to assign "weights" to matches based 
on the number of matching letters, but they all end up being very 
slow and also producing too many false positives.


I suppose there are no easy answers, but if anyone has an algorithm 
for this kind of thing that they would be willing to share, I'd be grateful.


Thanks.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/31.FF.16480.FDF3EE85@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Monday Survey Question

2017-03-20 Thread Ken Dibble



1. How many VFP books do you own?


Somewhere around a dozen.


2. How many are dead-tree paper and how many ebooks?


All dead trees though I did get the ebooks with the Hentzenwerk ones.


3. What is your most well-worn VFP books? Or most referenced ebook?


What's New in 9


4. What book do you regret not owning?


Tamar's book on SQL.


5. Would you buy VFP books if you could find them?


Possibly.


6. Preferred format? Paper, PDF, CHM, ePub, HTML, other (which?)


Paper.

Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/2B.92.21189.75530D85@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Scheduled Tasks, VFP, Batch, 7-Zip and PuTTY glitch

2017-03-09 Thread Ken Dibble



Ticking the checkboxes in Scheduled Tasks for "Log in as" or "Run only
when logged in" or "Use maximum permissions" made no difference.

Ideas? Is this a WinPro7 v. 2000 security "feature" I'm running into?


I have run into this. I THINK that I was able to overcome it by 
promoting the user for whom the task must run to local administrator, 
then creating the scheduled task with maximum permissions on every 
related damn thing I could find, and then demoting the user.


Not scientific, I know. And this is a vague memory of a problem I 
dealt with something like three years ago, so take it for what it's 
worth. But I did solve the problem, because the task, to pop-up a 
message in the middle of the day, persisted in annoying this user for 
quite some time until we finally disabled it.


Ken Dibble
www.stic-cil.org 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/45.E4.16480.CC061C85@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: Hard-Coded Scalar Value Substituted at Run Time

2017-03-02 Thread Ken Dibble

At 12:47 PM 3/2/2017, you wrote:

Content-Transfer-Encoding: base64Hi Ken,

You may want to use SET COVERAGE at the 
beginning and turn it off at the end of the 
method that errors, and add that log, of it 
exists to your error logging. You'll see what 
lines for called and which iteration it was on.


Sometimes, forgetting to LOCAL a variable 
changes it in a function called later.


Yup. See my responses to others.

Thanks.



Tracy

On March 2, 2017 12:24:43 PM EST, "Fernando D. 
Bozzo"  wrote:

>Hi Ken,
>
>Seems a difficult one to trace, but just in case I give you some ideas
>based on personal experience with strange errors:
>

ˆH[™›ÈÛÛXÝYۈH\€ror rutine, put it in a try/catch that
>adds
>info to a var in a step by step basis, so you later can log it to a
>file.
>Must be bomb proof. I've once found an error there when iterating tge
>stack
>array, with some fields that normally are null but somerimes are not.
>In
>any case, an error there must not hide the real error.
>

ˆÈ›Ýtrust UI controls to call or not a method, add validation in
>the
>methods called from UI so even if you call them from VFP command line,
>if a
>condition is noot meet, the method is not executed. Normally can be
>done an
>enabled_funtionallity() like method that can be used by the UI to
>enable/disable controls and the same method can be used on the business
Y]Ùț܈HØ[YHÛØ[‚‚„­âF†P worst situation, you 
can generate log info in real time while

>the
\Ù\ˆ\ÈÛܚÚ[™Ë[™Ø]™H][ÈHX›HÚ]h info about controls used
>(important events like click), screens loaded/unloaded, some meaning
>variables and timer events may be, to have some context about executed
>order.
>Analyzing it later can give you some inside about how the user
>interacts
>with your app.
>
>Once, many years agi, a user notified a bug on which when loading the
main
ØܙY[ˆ[ÛÛX›Ø›Þ\ÈÚ\™H›[š‹…F—&VBöbæ÷Bfnding the 
bug days later I did go with the user to watch

>him
Ú[H[\š[™È[ˆH\ˆ[™›Ý[™]H@ser while the app
>was
ØY[™ÈY][\‹[\‹[er, enter,., many times to bypass
B›ÙÈØܙY[‹€ut all that enter keystrokes where present in the keyboard
Y™™\‹Ú]Ø]\ÙYHÛÛX›Ø›Þ\ÈțÝÚÝÈZ\ˆefault options.
>Solution was a clear typeahead before showing the UI :D
>
>
[‹ÌË̌MÈ
NNˆK‹’Ù[ˆX˜›H€  escribió:
‚FòföÆÆ÷rWg&öÐ yesterday evening, now that I'm back at work:
‚ƒâF†Rcode in question is a FOR ... ENDFOR loop that iterates an array,
>with
>> the loop limiting value being the number of rows in the array, and
>there is
ˆ›Ý[™ÈÚ][ˆhat loop that removes or adds rows or columns to the
\œ€ay.
>‚—Bw2§W7C £ãà£ãâdõ"Òç‚ÒDòÄTâ…D„•4dõ$ÒæðMail.aSortList,1)
>>   thekey = THISFORM.oMail.aSortList(m.x,10)  && "array dimensions
>[˜[Y‚€£ ** More inoffensive code here.
ˆS‘“Ô‚‚ˆ\ÈIݙHÀaid, I can't reproduce this error myself but I've seen it
>™\ܝYžH^H\œ›Üˆ[™\ˆÚXÙH[ˆÛÈ^\ˈÛÈHdon't know if
B‚—FW&F­öâf­ÆVBöâF†Rf—'7B&÷rðr some later row of the array.
>‚2’ÖVçF­öæVBV&Ɛer, my initial assumption that the array was
>supposed
> to have 5 columns was incorrect, because I was looking at the wrong
>control.
>‚’wfRæ÷rfW&­f­VBF†B­âF†s case, when the problem code executes,
>this
>\œ˜^HØ@n only contain 10 columns:
>>
>> 1. It is a predefined property of the oMail object (based on the
Ý\ÝÛB‚6Æ70, and defined in a .prg file) and is DIMENSIONed as (1) at the
>outset.
>>
>> 2. It is then populated by a SELECT [10 specified fields] FROM
>[variable
ˆX›KØÝ\œÛܗH‹€. INTO ARRAY expression with no WHERE clause.
>‚2âÀthough the name of the FROM table or cursor is variable, the
>ÜXÚYšYYšY[È\™H›Ý[™H^™\ÜÚ[ۈÙ\Ènot use AS clauses
>to
ˆÚ[™ÙHH˜[Y\ÈوH™\Ý[fields or supply default values for
>them.
>\™Y›Ü™Kif a specified field did not exist in the FROM table, an
>error
>ÛÝ[™HÙ[™\˜]Y]]Ú[ˆ›ÈÝXÚ\œ›Ü€ occurs.
>>
>> 4. It is not possible for the FROM table to contain no records when
B‚öffVæF­ær6öFRW†V7WFW0, because in that case the code that generates
B‚e OM table would display a message for the user stating that the
>query
>›ÙXÙY›È™\Ý[È[™[وH™[]@d controls on the form would
™Bˆ\ØX›Yˆ\ÈH™\Ý[, the method containing the SELECT ... INTO
T”VBˆ^ression would not be called, the list control's array rowsource
>would
ˆÛ۝Z[ˆ›È™XÛܙË[™H\ÝÛ۝›Û's sort method, where the
\œ›Ü‚ˆØØÝ\œËÛÝ[›Ý™Hcalled.
‚ƒâ6ò’Ò6öæf­FVçBF†BF†R'&’6âöæǒ€ave 10 columns (no more
>and no
ˆ\ÜÊH]HÚ[Ú@re the error is generated.
>>
>> Thus the only "possible" sources of an "array dimensions invalid"
>error,
ˆYˆhe error did indeed occur on the line indicated by the trace,
ÛÝ[™N‚€£¸Q¡”M1
P€¸¸¸%9Q<IId•áI•Ìsion somehow generated fewer
ÛÛ[[œÂƒâF†âvW&R7V6­`ied in its field list.
‚ƒâ"âF†RW6W"v26öÖV†÷r&ÆP to induce one of the disabled GUI
Û۝›ÛȏˆÛÛYZÀw call the sort method when there was no data to sort.
>
>ˈSSŠ
H™]\›™Y[ˆ[˜Ûܜ™Xݙ\Ý[\ÈÈH[X€er of rows in
B‚'&’GW&­ærF†R—FW&F­öâÆö÷à£à
>[وÜÙH[™ÜÈÚÝ[™H[\ÜÜÚX›K‚€£Q¡”Ðhird 
possibility is that the trace provided by ASTACKINFO() is

>wrong.
ˆ[ˆ^H\XØ][ۈHœ™\]Y[HÈÙYH™@ry strange things with error
ˆ˜XÙ\ËÝXÚ\ÈÙ]™\˜[evels of

Re: Hard-Coded Scalar Value Substituted at Run Time

2017-03-02 Thread Ken Dibble


 Of course, the way to handle this is to add code to test 
the size of the array before trying to iterate it, which I have now 
done. But I am still at a loss to understand how the error could occur.
What I usually do in situations like this is to put in lines of code 
to write out to log files.  You usually spot something unusual then 
and can refine it or fix it.

Something like

if file('alerts.txt')
   strtofile('My messages','mylogfile.log',.t.)
endif

You can then turn off the logging by removing the alerts.txt.


Yup, I've done this before too. I was hoping suggestions from folks 
would narrow down the range of stuff I'd need to log.


Thanks.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/FC.D7.21189.71B68B85@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Hard-Coded Scalar Value Substituted at Run Time

2017-03-02 Thread Ken Dibble



> FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1)
>   thekey = THISFORM.oMail.aSortList(m.x,10)  && "array dimensions
> invalid"
>

Is this m.x declared local to the procedure, or is it possibly shared
with other m.x's in different scopes?


It's declared local in this procedure, and all of the other m.x loop 
counters in the affected objects are also local.


Thanks,

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/11.96.21189.9CA68B85@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: Hard-Coded Scalar Value Substituted at Run Time

2017-03-02 Thread Ken Dibble

To follow up from yesterday evening, now that I'm back at work:

The code in question is a FOR ... ENDFOR loop that iterates an array, 
with the loop limiting value being the number of rows in the array, 
and there is nothing within that loop that removes or adds rows or 
columns to the array.


It's just:

FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1)
  thekey = THISFORM.oMail.aSortList(m.x,10)  && "array dimensions invalid"

  ** More inoffensive code here.
ENDFOR

As I've said, I can't reproduce this error myself but I've seen it 
reported by my error handler twice in two days. So I don't know if 
the iteration failed on the first row or some later row of the array.


As I mentioned earlier, my initial assumption that the array was 
supposed to have 5 columns was incorrect, because I was looking at 
the wrong control.


I've now verified that in this case, when the problem code executes, 
this array can only contain 10 columns:


1. It is a predefined property of the oMail object (based on the 
Custom class, and defined in a .prg file) and is DIMENSIONed as (1) 
at the outset.


2. It is then populated by a SELECT [10 specified fields] FROM 
[variable table/cursor] ... INTO ARRAY expression with no WHERE clause.


3. Although the name of the FROM table or cursor is variable, the 
specified fields are not, and the expression does not use AS clauses 
to change the names of the result fields or supply default values for 
them. Therefore, if a specified field did not exist in the FROM 
table, an error would be generated at that point. No such error occurs.


4. It is not possible for the FROM table to contain no records when 
the offending code executes, because in that case the code that 
generates the FROM table would display a message for the user stating 
that the query produced no results and all of the related controls on 
the form would be disabled. As a result, the method containing the 
SELECT ... INTO ARRAY expression would not be called, the list 
control's array rowsource would contain no records, and the list 
control's sort method, where the error occurs, would not be called.


So I am confident that the array can only have 10 columns (no more 
and no less) at the point where the error is generated.


Thus the only "possible" sources of an "array dimensions invalid" 
error, if the error did indeed occur on the line indicated by the 
trace, would be:


1. The SELECT ... INTO ARRAY expression somehow generated fewer 
columns than were specified in its field list.


2. The user was somehow able to induce one of the disabled GUI 
controls to somehow call the sort method when there was no data to sort.


3. ALEN() returned an incorrect result as to the number of rows in 
the array during the iteration loop.


All of those things should be impossible.

The third possibility is that the trace provided by ASTACKINFO() is 
wrong. In my application I frequently do see very strange things with 
error traces, such as several levels of code that should be in the 
stack not being reported. I have also seen, in the debugger, that 
errors don't necessarily "surface" immediately and the line of code 
that generates them may not be the line on which the debugger stops.


There could also be something wrong with my assumptions regarding how 
to read a trace. In the case of the issue I've been talking about, 
the trace contains the following lines:


Level: 5  Program File: c:\cil data 2\genmaillst.sct  Module/Object: 
genmaillst.listdisplay.resortlistbox  Source File: c:\cil data 
2\genmaillst.sct  Line Number: 86  Line Contents: thekey = 
THISFORM.oMail.aSortList(x,10)
Level: 6  Program File: c:\stic foxpro framework\base 
classes\sticbase.vct  Module/Object: 
genmaillst.listdisplay.error  Source File: c:\stic foxpro 
framework\base classes\sticbase.vct  Line Number: 23  Line Contents: 
DO FinalSTICError WITH 0, LINENO(1), theprogram, MESSAGE(1), ""


I read this as: "When the line of code at Level 5 was executed, the 
ERROR() method of the object that contains that code was triggered, 
as shown in Level 6. Therefore, the error occurred in the stated line 
of code in Level 5."


Of course, the way to handle this is to add code to test the size of 
the array before trying to iterate it, which I have now done. But I 
am still at a loss to understand how the error could occur.


Thanks.

Ken


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/EE.66.16480.C2F48B85@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Hard-Coded Scalar Value Substituted at Run Time

2017-03-01 Thread Ken Dibble



Do you have a timer in your app?


Yes, there's a timer running at the global level to monitor user 
activity and shut down the application if it remains idle for a long 
period of time. The timer code does not interact with the object 
directly, though it will trigger a routine that closes the window 
that contains the object if a shutdown proces is started. But the 
error did not occur within such a shutdown process.


There's no DOEVENTS in the loop I described, so I would expect that 
the FOR .. ENDFOR loop would complete a full iteration before being 
interrupted by anything ultimately triggered by the timer.


I do know that VFP sometimes only appears to "become aware" of states 
that have changed during a loop when execution gets to the "bottom" 
of the loop.


I don't think there's any code within the loop that could remove rows 
from the array--I'm  aware that's a big no-no, but I will double 
check it tomorrow at work.



Or a bindevent() that may have stopped execution between those lines of code?


No, no bindevents().

Thanks.

Ken




On March 1, 2017 4:33:22 PM EST, Ken Dibble  wrote:
>
>>Never seen something like this, but if you are distributing an exe,
>then
>>you should md5 it so you can detect any change comparing with a saved
>md5.
>>
>>This way I've found viruses that changed parts of the code and
>antiviruses
>>have cleaned them up, but leaving the exes in a different state than
>the
>>original, sometimes even unrunnable.
>
>That's a really good idea.
>
>As it turns out, I'm embarrassed to say, the line of code reported in
>the trace does exist, in a virtually identical list control subclass
>on the same form (one overlays the other exactly). I wasn't paying
>attention to the name of the control in which the error occurred.
>
>There are actually 10 columns in the array in this method.
>
>So what actually happened is that somehow, between:
>
>FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1)
>
>and
>
>thekey = THISFORM.oMail.aSortList(m.x,10)
>
>somehow the length of the array got truncated.
>
>Now, there is NO other code between those two lines, so
>ALEN(THISFORM.oMail.aSortList,1) would have had to return an
>impossible result for the next line to fail.
>
>I have seen this on a few occasions when iterating arrays, but I
>remain mystified as to how it could happen.
>
>Ken
>
>
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


[excessive quoting removed by server]

___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/6E.8A.16480.A7B87B85@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: Hard-Coded Scalar Value Substituted at Run Time

2017-03-01 Thread Ken Dibble



Never seen something like this, but if you are distributing an exe, then
you should md5 it so you can detect any change comparing with a saved md5.

This way I've found viruses that changed parts of the code and antiviruses
have cleaned them up, but leaving the exes in a different state than the
original, sometimes even unrunnable.


That's a really good idea.

As it turns out, I'm embarrassed to say, the line of code reported in 
the trace does exist, in a virtually identical list control subclass 
on the same form (one overlays the other exactly). I wasn't paying 
attention to the name of the control in which the error occurred.


There are actually 10 columns in the array in this method.

So what actually happened is that somehow, between:

FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1)

and

thekey = THISFORM.oMail.aSortList(m.x,10)

somehow the length of the array got truncated.

Now, there is NO other code between those two lines, so 
ALEN(THISFORM.oMail.aSortList,1) would have had to return an 
impossible result for the next line to fail.


I have seen this on a few occasions when iterating arrays, but I 
remain mystified as to how it could happen.


Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/F5.B6.16480.32E37B85@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Hard-Coded Scalar Value Substituted at Run Time

2017-02-28 Thread Ken Dibble

I swear, my code is haunted.

I have some code in a subclass of my custom-built list control class. 
I provide enough code here to indicate the context, but I don't think 
I need to explain its purpose to illustrate what has just happened:


FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1)
  ** 2/28/17:
  **
  ** On this date, a user had an "Array dimensions are invalid"
  ** error at this point in the code. However, the trace gave the
  ** offending line of code as follows:
  **
  ** thekey = THISFORM.oMail.aSortList(m.x,10)
  **
  ** The parent code doesn't contain any lines like that, at all.
  ** The array has 5 hard-coded columns, not 10. It has always
  ** had 5 columns since I wrote this code many years ago.
  ** There is NO WAY that the hard-coded scalar value of 5
  ** in this code could be changed to 10. That is really, really,
  ** REALLY weird.

  ** This is the actual code:

  * Find the corresponding row in the temporary storage array.
  thekey = THISFORM.oMail.aSortList(m.x,5)

  ** See? Not 10. It's 5.

  findrow = ASCAN(THISFORM.aTmpSort,thekey,-1,-1,5,15)

  IF findrow > 0
  * We found it. Copy the temporary storage array row back to the
  * listcontrol's RowSource.

  FOR m.y = 1 TO ALEN(THISFORM.aTmpSort,2)
   THIS.aItemList(therow,m.y) = ;
   THISFORM.aTmpSort(findrow,m.y)
  ENDFOR

  * We use this to control which aItemList row to populate because
  * I'm not sure the two arrays will have an equal number of rows
  * in all cases. (They SHOULD because the RemoveAddress() method
  * truncates both the RowSource and last-name-sorted arrays, but
  * just in case...)
  therow = therow + 1
ELSE
  * The row absolutely should be there.
  RETURN .F.
ENDIF
ENDFOR

Now, this particular user uses this feature and executes this code 
quite frequently. But today, somehow, at run time, a hard-coded 
scalar value of 5 was replaced with 10. This crashed the program, 
which emailed me as a result, so I have the trace.


I can't reproduce it. So it does not appear that the last compile 
messed something up. Instead, something magically changed that number 
this ONE TIME while the code was executing.


Is this really the proverbial cosmic ray flipping a bit?

Has anyone ever seen anything like this?

If not, why do these things only happen to me?

Thanks for any thoughts.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/06.EE.03423.31E95B85@cdptpa-omsmta01
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


RE: [NF] Unbiased Cyber Security Resources

2017-02-24 Thread Ken Dibble



How about actively testing your systems with penetration testing?

https://www.kali.org/

When being offensive is a good thing!


Bruce Schneier on penetration testing:

https://www.schneier.com/blog/archives/2007/05/is_penetration.html

I'm inclined to agree with most of his points.

Not every theoretical threat ever becomes an actual threat, and not 
every actual threat is an actual threat for a particular 
organization. The idea of security management is to apply 
cost/benefit analysis to find the best means to address actual 
vulnerabilities in a specific setting.


Thanks.

Ken
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/B5.64.16480.47E40B85@cdptpa-omsmta02
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Unbiased Cyber Security Resources

2017-02-23 Thread Ken Dibble



Bruce Schneier would like you to buy his books, but he puts out an
*excellent* email newsletter at no charge with lots of good info, far
more than I can read in a month.


Thanks very much Ted. This one in particular looks like a real winner.

Ken 



___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/90.F6.21189.B9A0FA85@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


[NF] Unbiased Cyber Security Resources

2017-02-22 Thread Ken Dibble

Hi folks,

I am looking for unbiased sources of information on various "cyber 
security" issues. That is, the source should not be trying to sell me 
any products or services. And the source should understand the 
meaning of the following terms:


"individualized threat assessment"
"proportionate response"

I'm not looking for beginner-level stuff like "always keep your 
software updated" but rather objective analysis of specific types of 
threats and potential weaknesses.


Who do you trust in these matters?

Thanks to all who respond.

Ken Dibble
www.stic-cil.org


___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/9B.46.21189.000CDA85@cdptpa-omsmta03
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


Re: [NF] Drop-Dead Simple USB Drive Encryption

2017-02-07 Thread Ken Dibble



The Kingston Data Traveler series drives have hardware crypto, but
they're unlocked using a small program stored on separate cleartext
partition. They're not cheap however. so after I lost mine I switched
to truecrypt/veracrypt.


About $1 US per GB at Amazon for the Kingston DataTraveler Locker + 
G3--do-able for me, since I typically pay close to the same price for 
the rubberized non-encrypted Corsair drives.



Given your sole purpose, however, have you totally ruled out
automating the backup routine and baking-in file-level crypto?


I have a comprehensive network data backup system that automatically 
copies data from my SAN to a 4 TB USB drive every night, and the 
drive is taken offsite each day.


Not all of the data that needs to be backed up is stored on the 
network/SAN though. Also, I'm a fan of redundant backup.


The reason I'm asking is primarily because one of our big 
customers--tens of thousands of dollars in annual billing--has 
recently introduced a requirement for us to carry "cyber insurance". 
I will avoid the entire rant about the fact that this is a scam, 
since, like many other IT trends that are also essentially scams, 
this one seems to be unavoidably growing in popularity.


The insurance provider wants an assurance that all USB thumb drives 
are encrypted. (It also wants all laptop hard drives to be encrypted, 
and it wants my 4 TB offsite backup drives encrypted.)


So I am evaluating my options, one of which is to avoid much of the 
problem by discontinuing use of thumb drives--at an increase in inconvenience.


I am opposed to essentially turning all of our computers into dumb 
terminals and keeping all the data on the network. What's the point 
of having computers at all then? Plus, I don't like single points of 
failure. Without thumb drives I would have to force people to make 
even greater use of network shares than they do now. And there would 
be even more people sitting here twiddling their thumbs in the event 
of a network outage.


The laptop thing is especially troubling to me. I can encrypt the 
data drive on a laptop and require users to enter a password to 
access it, but since the user can then set the drive to be 
automatically decrypted without entering the password, and they are 
likely to do so to avoid the annoyance of having to enter two 
passwords to access the computer, the whole thing is mostly pointless.


As for encryption software that requires the user to be logged in as 
administrator--has it occurred to anyone that it is more dangerous 
for the typical computer user to be running an administrator account 
on a Windows machine than it is for them to have their data on an 
unencrypted USB stick? Too many programmers, IMO, overestimate the 
ability of their customers to use computers safely or to cope with 
complex interfaces. (Well, that's not the right way to put it; it's 
more like most programmers can't change their personal mindsets to 
encompass the limited abilities of the vast majority of the people 
who have to use the software that they create. Making things simpler 
and safer is too annoying for power-users and CLI-lovers to contemplate.)


The removable backup drives are using a Linux file system, and my 
consultant tells me that there's probably an option to have just 
these backup drives encrypted without also encrypting the data on the 
SAN. Since there's limited access to these drives (just me and my 
assistant), that's an option I can live with.


Thanks for everyone's help!

Ken




___
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/07.AA.03423.917F9985@cdptpa-omsmta01
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.


  1   2   3   4   5   6   7   8   9   10   >