OT Win7 updates

Page 3 of 8  
On 5/21/2016 1:14 PM, rbowman wrote:

There's nothing wrong with them HIDING! It's when they end up in positions from which they can make decisions (or even obstructionist participation) that problems happen. ("The Peter Principle") Folks promoted out of positions where they HAD to be productive (worker bees) and INTO positions where they are inevitably OBSTRUCTIVE (cuz they can't recognize the difference between the hole in their *ss and the one in the ground in front of them!)
With bigger organizations, these folks seem to want to "be noticed"... made to feel important (or, at least, "significant"). So, they get involved in things for which they have no qualifications. Then, fall back on the "I'm the boss" credential to ensure things stay f*cked up. All the while, thinking of how they can hope for a change in events that will let them shift the blame to someone/thing else.
I had a PHB who was visibly upset with me for stumbling on a problem in a colleague's design. Catching it when I did saved the company several months and several tens of kilobucks!
*But*, it meant the boss had to go in and report the problem to HIS boss, TODAY! He couldn't wait for the 3rd party vendor to perhaps miss a delivery date (that he could then use to rationalize the delay -- by obfuscating the pertinent details).

Unfortunately, they'll still be on the list of approved vendors!

The more interesting issue is the apportioning of the incompetence that is undoubtedly involved. Were the requirements too vague? Too lofty? Or, was the execution flawed?
I was invited to bid on a nice, lucrative project, locally (most of my clients have been remote so this would have been a blessing!). After talking with the principal, it was immediately obvious that he: - didn't understand his problem - had already come up with an approach (that wouldn't work) *If* he'd just stated his problem and was willing to sit back and wait for a solution, it would have been a manageable (and profitable) project. But, you just KNEW he was going to have his fingers in the pie throughout -- then wonder why it was taking too long and costing too much!
[I learned to avoid T&M jobs for exactly this reason; let me give you a fixed cost quote -- then, it would be ludicrous of me to give you any say on the design after accepting those terms!]
A local nonprofit has a serious data management problem. I formulated a comprehensive, automated solution and presented the idea to the "staff member responsible". It was a project that I would tackle pro bono -- no skin off their back!
"No thanks! The Board approved $250,000 for the project and we've hired a guy to do it."
So, a quarter of a megabuck later, they have an MSAccess database and hired two full time staff who just sit and transcribe the hundreds of forms that come in each week. And, they wonder why the data is always suspect!
("How come last week's records are missing the data for Foo?" <shrug> "I dunno. Maybe I deleted it, by accident?")
People don't "realize" what they don't "understand". Yet, blissfully make decisions based on that misinformation. Then, end up with "striped camels" instead of horses and wonder why they're so hard to ride...
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/21/2016 03:29 PM, Don Y wrote:

I worked on a RFP a few months ago. The first thing I did was to list the conflicting requirements plus some of the completely unfeasible requests that weren't going to happen. It didn't make me too popular but I wasn't going to sign off on the impossible.
Early in my career the company I worked for bid a project over the advice of myself and the mechanical engineer. There was a requirement for a 7 second cycle time but the VP said they didn't really mean it. We got the cycle down to a reliable 15 seconds. The client said, 'That's nice but we need 7 seconds'. Trying to find those 7 seconds was like building a top fuel dragster. After you make your 4 second pass you rebuild it. It got to the point where the said VP could look at a dial indicator showing critical parts bending under stress and declare it wasn't happening before trundling off for a few Rob Roys.
I'm still not shy about undertaking difficult projects but I try to avoid the impossible. In real life the impossible doesn't take a little longer.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/21/2016 6:58 PM, rbowman wrote:

I think (esp as a contractor) clients often float RFP's as a cheap way to get someone to find the flaws in their ideas. Learning to recognize when someone is looking for "free labor" (in the guise of soliciting for a supplier!) is an important skill that is hard to acquire.
Often, the best bid is "No bid"! :>

In my career, the most enjoyable ones were always the ones where I *thought* I could tackle it -- but wasn't quite *sure*!
Anything that I was *sure* of wasn't interesting (what's to learn from that? I already KNOW how to do it so its just trading my time for your money -- I can do that lots of different ways; why not find one that I'll consider INTERESTING?!)
Anything that I know I couldn't do was just setting myself up for failure.
So, the sweet spot are those things that you *hope* you can do (with your level of experience, tools, financial resources, level of dedication, discipline, etc.).
I'm convinced I will never "finish" my current project with the years I have left on the planet -- there's no really "defined end". So, I can expect to remain interested and engaged as long as I am capable of being interested and engaged! Enjoy the mini-successes and accomplishments along the way and let someone else enjoy the "finished" product (if they can ever settle for some definition of "finished"!)
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/19/2016 02:25 AM, mike wrote:

Mouse capabilities? You mean like the ability to highlight text and paste it with a middle mouse click rather than Ctrl-C Ctrl-V? I switch between Windows and Linux at work and that feature, along with the lack of built in multiple desktops is the one I miss in Windows.
Windows has improved. I remember when you had to diddle with an undocumented Registry setting just to get tab completion on the command line.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/19/2016 6:48 AM, rbowman wrote:

I think he means mice that can do things other than being a set of buttons and an XY displacement source. E.g., press this button to get finer grained positioning; press this other button to click-lock; etc.

But it's implemented inconsistently in X! I.e., try to copy from an xterm to another -- paying attention to how whitespace is treated!

One of the power toys adds multiple/virtual desktops. And, many of the multihead monitor cards drag in that sort of support as well. I get annoyed because Windows tries to be smarter than me: I configure three monitors with the center one as my main desktop (the desktop extended off to the left and right on the other monitors). The thinking is that if I only want to run with one monitor, I can use the center monitor for that (power off the other two -- particularly useful in the Summer months!!)
But, powering down a monitor causes the desktop to be reshuffled -- anything that was on the powered down monitor gets moved onto the remaining monitors (no doubt as an AID for me!). So, I have to reshuffle my desktop if I don't want to use all three monitors (I would be content to leave whatever was on the powered down monitor where it is and just not access it! Or, access it via a miniature version of the virtual screen -- dragging the tiny outline of the window onto the center monitor!)

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/19/2016 11:11 AM, Don Y wrote:

Some of our clients run 3 or 4 monitors, a great source of heartburn. The GUIs are actually using an XServer that gets confused easily.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/19/2016 7:04 PM, rbowman wrote:

I don't understand the problem.
I run an X server on each of my machines so I can work on the UN*X boxen "as convenient". I can size the X desktop to be as large as I like and span monitors readily.
[I've not checked to see how this behaves when I power off a monitor as I mentioned up-thread; I imagine it just moves the X server's window onto the remaining monitor(s) and lets some part of it "extend past the edge of the display"]
What are you (they) using for your (windows hosted) X Server?
[I'm currently debating replacing my Neoware X terminals with something home grown; yet another example of a supplier using FOSS software (NeoLinux) and not making the sources available -- so I could FIX the problems instead of rolling my own!]
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/19/2016 09:48 PM, Don Y wrote:

http://www.ptc.com/developer-tools/x-server
It was Mortice Kern Systems (MKS) before PTC bought them for another product and inherited the XServer and Toolkit. The bulk of our code dates back to the AIX days and builds and runs on both Linux and Windows. IBM priced their way out of the market with the RS6000 boxes so everyone has went to Windows. I think we still have a couple of RS6000 boxes but whether they would boot is a good question.
Legacy is grand.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/19/2016 9:48 PM, rbowman wrote:

Ah! I think I have an old version of the toolkit archived here.

Yeah, my SPARCstation LX got to that point. It was frustrating to "set it free" as I had really maxed it out. But, at 50MHz, it was too pokey to hang onto. (OTOH, I kept my Voyager which wasn't much faster at 60MHz!)

I think it is an interesting aspect of technology.
I know what it costs me (effort/time/money) to maintain my legacy "investments". OTOH, I only have to answer to myself; if I want to replace/upgrade, I don't have to make a case to my employer, stockholders, customers, etc.
I've a colleague who does IT for a multimillion dollar enterprise, here. It is "educational" (for want of a better word) to watch how he pieces together solutions to leverage the existing software/hardware infrastructure. He's always squirreling away big iron that he comes across as getting spares for his existing systems is virtually impossible.
He clearly could never tackle replacing everything; the effort and cost would be prohibitive (cheaper to sell the business and let that be someone else's "surprise"! :> ). They might end up with a cleaner implelmentation -- but business would grind to a halt for many years while the upgrade was being created (i.e., the IT would be frozen while it was reimplemented anew).
I often muse over where the "drop dead" point might be... when he'll be faced with a challenge that he can't cobble into his existing implementation. And, whether he will, at that time, propose the complete overhaul; or, yet another kludge to ALMOST upgrade...
[Kinda like a plumber repeatedly patching a leak... when does he give up and tell the homeowner major repairs are in order?]
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/20/2016 12:27 AM, Don Y wrote:

That's the problem with legacy software -- you do need to make a case to move on. Not many industries come with that long a trail. Another programmer and myself are hacking out the next generation that will depart from the old code base. It's been a long project, mostly examining to competing technologies. We're well aware we're laying the groundwork for the next legacy. flash forward to 2031: what idiot ever decided C# was a good idea? We still need to use Visual Studio 2025 to build the crap.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/20/2016 6:55 AM, rbowman wrote:

Yes. And "software inertia" is REALLY hard to overcome as it costs so much!

Good that you are aware of that! I was completely stumped by the whole Y2K thing: "How could people NOT realize the '19' would be changing to a '20'?" Likewise: "How can people NOT realize the upcoming rollover in 2038?" Yeah, this *product* might not survive to that date but the *code*/algorithm will! It would be like designing a math library that magically stops working due to some FORESEEABLE event...

I spent a lot of time thinking about my build environment. I've got a *huge* code base (my RTOS alone is a bigger piece of software than most folks would write in their entire career!). Not only do I have to worry about what hardware it will run on but also whether the tools will remain viable as well as the hosting environment.
My solution was to adopt technologies that are all open source -- so I can archive the sources for the tools themselves instead of having to archive *just* binaries (which will only run on a particular OS -- which means the binaries for the OS would have to be archived; which would only run on a particular hardware platform -- which means archiving the hardware platform; etc.)
And, the incentive to document the hell out of things -- the design is the biggest portion of a project ("coding" is just a tiny portion). Much less effort building a house from a plan than setting out with a hammer and some nails and a "dream" :-/
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/20/2016 11:03 AM, Don Y wrote:

I did most of our Y2K fixes. iirc there was nothing fatal and most of it would have been display annoyances like
sprintf(year, "19%02d", tm.tm_year);
We had a crew in the office on New Year's Eve and I was on call. I went to the First Night festivities and when the Ed Norton Big Band broke into 'Auld Lang Syne' without the lights going out I figured I could go home and go to bed. I missed the free pizza.
The one hack that's still there is age calculations. Typically the dispatchers enter 052016 for DOB. If they put 052019 we assume they busted a real old fart. I can live with that. I was amused a couple of weeks ago when some 103 year old woman got a notice about pre-school registration and immediately knew what that bug was.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/20/2016 6:54 PM, rbowman wrote:

In the media hype leading up to the "(non) event", I got calls from old clients wondering if they'd have any problems with the products I'd designed for them. It was amusing cuz they'd always bring it up really casually... as if they didn't want to seem panicked. My policy has always been that bugfixes are free so they knew any problems would come out of "my pocket".
Yet, all seemed stunned when I could confidently respond "No problems"... without even LOOKING through the code! In hindsight, I probably should have handled this more diplomatically: "Gee, Bob, let me get back to you on that! I'm pretty sure there's nothing to worry about -- but, let me dig through your sources and make sure that's the case..." Then, a day/week/month later, call them back and reassure them that there were, in fact, no problems!

I saw a device report the year as 19A0 (which gave me pause until I thought about how they'd obviously implemented it).

In my case, my code was in "devices". So, patching the code would easily cost a LOT of money. EPROMs, masked ROMs, MCU's, etc. It wasn't like I could just "download" an update to all of those devices.
And, at the same time, you had folks worrying that the mechanism on some 3 ton piece of equipment would suddenly sieze up and kill its operator. (really? why??)

I've seen similar screwups.
Once recived a nasty letter from my bank threatening to withhold 10% (?) of my interest (IRS) because they didn't have my SSN on file. Despite the fact that it was printed at the top of the form they mailed me!
<frown> A week or two ago, received some promotional material from Acura dealer suggesting we trade in our (fill in the blank) _2016 RDX_ for a new 2016 RDX!
Always fun to imagine how some dweeb made a stupid error of assumption!
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/20/2016 08:18 PM, Don Y wrote:

That was the beginning of the end for our RS6000 sites. I forget all the details but the older RS6000 boxes couldn't run the newer AIX versions that IBM patched for Y2K. When the sticker shock for new RS6000 boxes set in people started thinking "I could buy one hell of a Windows server for that."
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/20/2016 10:46 PM, rbowman wrote:

I think a lot depends on who gets to make the buying decision. You spend money for THIS... or for THAT.
I've worked for lots of different companies/clients with different management backgrounds: engineers, finance people, even *dentists* (marketing electronic devices). It is interesting to see how they approach decisions regarding "investments", make/buy tradeoffs, etc.
I think the *worst* one are engineers! There's too much temptation to DIY things -- things that often should be purchased or even passed over!
In my current project, I am continually aware of this as I don't have to answer to anyone. It's too easy to fall for the Siren's Song. OTOH, I *do* want to see results -- in MY lifetime! :> So, regardless of how deep the pockets might be and how interesting the technology, there's an eventual limit on the calendar... (it would be nice if I KNEW what that limit was!)
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/20/2016 11:58 PM, Don Y wrote:

I had a client that was heavily into NIH mode. At the time the woods were full of competing Z80/8080 buses and cards for industrial control systems like the STD but they wanted their own and I was happy to oblige.
You have to train the engineers right :) DEC salted the colleges heavily with their equipment. When the young engineer gets out in the real world and starts politicing for equipment, what's he going to advocate? Then there was Unix during the period where you couldn't exactly buy it. Half of Boston was running an OS that fell off the back of a truck someplace.
M$ did that with the $99 academic versions of Visual Studio. Lately they've expanded that with the Express and Community editions. Get them hooked and they'll be begging the boss to buy the Enterprise package.
Our MSDN just came up for renewal and they've changed the game a bit. You can still buy the full meal deal but I saw in the pricing matrix that you can also rent it for $45/month. They're easing the world int the new model.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/21/2016 11:32 AM, rbowman wrote:

The opposite is true -- worse -- now. All these little "stamps", arduino, rpi, etc. Folks seem to think all they need to do is buy a premade board and they're all done!
Until they discover that the board doesn't come with controls suitable for driving a fractional HP motor. "Ah, but we can buy a daughter card to handle that!" Then, they realize the daughter card has no provisions for a safety interlock to shut down the motor (even if the CPU is crashed) before the mechanism that it is driving crashes into its stops. "Ah, we can buy..."
And, when they're done, they look at this hodgepodge of cards glued together and realize they have a $300 solution -- based on a $10 CPU board. "Hmmm... maybe we can layout our own board and combine all of these?" (Yeah, *if* you had the expertise to do that to start with...)
I have a colleague who has built all of his development tools! Incredibly impressive -- his own OS, his own window system, his own compilers, etc. But, I'd rather BUY that than MAKE it. OTOH, I have to roll my own RTOS because there's nothing available "at any price" that can do what I want (and need) done.

Yup. At Athena, you had your own *personal* VAX! When the rest of the world was struggling to afford $5K "XT's" with a whopping 128K of RAM and a single-tasking "toy" OS!

Many vendors (including apps) have taken the same approach. The more specialized the knowledge required to operate a tool, the bigger the payoff for presalting the future employee pool! If someone can learn how to use vendor X's product offering in a few days, then there's not much value to the prior experience he may have had with vendor Y!
OTOH, if it takes thousands of hours to become proficient, then there's a big incentive to drawing on that pool of EXPERIENCED users instead of trying to reeducate them for some other tool (because someone at your firm flipped a coin and chose Y over X)

I ran OpusV (AT&T w/ BSD extensions) on an Opus 110PM (later, more advanced models from the product line) in the mid 80's *in* my 386. A fairly zippy system (currently have it running in a Compaq Portable 386 as the PM is ISA based).
Most of the OS's in school (other than MULTICS or TOPS-10) were little one-of-a-kind works that professors had written and deployed on whatever hardware they could scrounge for their classes. I.e., each class ran on different hardware, OS, languages, etc. It wasn't like you could use the tools from class A to work on a project for class B (and you had to walk *to* wherever the machines/terminals for that class happened to be physically located!)

In the early 80's, JRT Pascal tried the same approach -- $29.95 Pascal compiler. They couldn't make/ship them fast enough! (literally, they went belly up from the popularity) And, it was cheap enough that you'd just buy it to get a hard copy of the manual (how much is your time worth to xerox a manual??)

Yup. MS is slow to the party. But, you can bet your *ss they're not going to miss out! Great time to be squirreling away everything that is precious and rethinking which path you want to follow, going forward!
[What happens when you "leave" the community -- and then have to come back at some future date to support some legacy product? What if the "old tools" are no longer available for use?]
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/21/2016 02:01 PM, Don Y wrote:

I missed that one. I'm not a Pascal fan but when TurboPascal came out I dropped the $50 out of curiosity. I was using Zolman's BDS C on CP/M and when I did the obligatory Hello World with Turbo my first thought was something had went wrong, it couldn't have compiled and linked that fast.
Later I used the Borland C++ compiler and IDE with OWL. I preferred it to MS but by Visual Studio 1.5 the race was just about over. That whole period wasn't exactly a highpoint. I'm not a big C++ fan. It was a premature birth without real libraries so MS invented their own, along with their Hungarian notation style. I still have some older ArcObjects C++ code but I've moved on to C# as well as plain old C for speed. I'll leave 'Modern C++' to the kids.
There was that brief blip for C++ when MS was pushing WinRT but that seems to history along with Windows 8, Sinofsky, and Ballmer. The final nail was when MS bought Xamarin.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 5/21/2016 3:03 PM, rbowman wrote:

Yeah, I have a copy of the v3.0 manual still on the shelf (as a language reference) -- alongside Wirth's 2nd ed.

Yup. I had an old 512KB CP/M (ZCPR3) box that would run like greased lightning (use the large RAM as a disk cache or a semiconductor disk). For most 64K machines, the speed of secondary storage was the limiting factor as most compiler/assemblers/etc. were multi-pass -- not smart enough to tackle everything in a *single* pass! (even with restrictions on forward references, etc.)

Yup. I have the "two tone" volumes on the shelf above the Pascal texts (things are sorted in alphabetical order by language name). Ditto for Pascal with Objects, etc. (I've purchased a LOT of software over the decades!)
I still have a copy of Borland 5.0 on one of the laptops. I use it as a glorified lint(1) when I'm traveling (if it doesn't compile under EVERY compiler, then I must have a syntax error, someplace)

The idea of object-based designs is a good one. But, I'm not sure that you need an object-oriented language to accomplish that!
E.g., my current system is object based -- but written primarily in C. Each object has a "handle" managed by the RTOS. You invoke operations (methods) on the handle by giving the handle and the operation information to the RTOS. It then dispatches the operation, on your behalf, to whatever "active entity" (process) manages that particular instance of that particular type of object. (I.e., the "object" may "reside" somewhere else in the physical system; you don't care!)

Hungarian notation. Yet another stupid idea. Like walking around with name tags that say manDonY, motorcyleHarley, gasstationCitgo, etc.

I was reading one of Stroustrup's texts some years ago. Got to a discussion regarding pre/port in/decrement operators. Read the page two or three times wondering "what am I missing here? this seems entirely WRONG -- yet, it can't be! It's so simple and this is coming from the Horse's Mouth..."
I eventually wrote him, head bowed in humble respect, begging for enlightenment. "What am I *missing* in your description? It seems completely WRONG -- forgive my insolence..."
His reply: "Because it IS completely wrong! I'll have to fix that in the next edition..."
I figure if the acknowledged expert can't get the *simple* things right, then I haven't a chance!
(If you think C++ bad, look at Ada! One of those things where they want you to invest your career in it -- so you never can afford to walk away from it!)

MS keeps wanting to have things their own way. Without ever making any commitment to keeping them that way! It would be like someone deciding that ints should be 37 bits, henceforth. Then, in the next release, realizing that this was a bad idea and that 28 bits would be much better -- and, giving you glue libraries to fixup all such references!
I left MS's tools at VC++ 1.0. I had found a bug in C++ 7 (or whatever predated VC++) and, rather than give me a fix, they offered to sell me the new product at the bargain $99 price!
"No thanks. I think I'll find another development environment..."
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 05/21/2016 05:08 PM, Don Y wrote:

I left Wirth's book somewhere along the way. When I moved from NH I gave most of my development boards, documentation, computers and so forth to a high school teacher who was trying to get a computer lab going.
At the time the University of Maine used Pascal as a didactic language, which was its true calling. The best description I've heard was 'a language that specializes in telling secrets to itself since there is no i/o.' Sprague's tantalum capacitor operation in southern Maine tended to hire out of UM. Kept me in work writing drivers so they could happily program in Pascal and interface to real test equipment.

Our architecture is based on a number of objects -- and it's all C. I haven't read Stroustrup's latest edition but the early one I have looks a lot like C, snake_case and all, with classes used very sparingly. I blame some of what it turned into on academics. 'Here we have the Animal class. The Dog and Cat class inherit from Animal, but we'll override speak() so Cat says meow and dog says woof.' I don't know how many hideous class architectures I've seen because someone figured since it was C++ everything had to be a class.

We've had a few koolAid drinkers in the past. The most notorious is an mostly obsolete map program. There are literally variables like theMap, thePixel, theSegment. It's good for a chuckle. When I'm doing maintenance work I try to maintain the original style as much as possible but sometimes I just can bring myself to do it.

I never nibbled on that hook. I remember the Boston Globe Sunday ads from companies looking for programmers with two years Ada experience -- before there was a working Ada compiler. Got to love HR drones. The bait smelled familiar. I had bad memories of the subtly named Programming Language One.

We thought long and hard about WPF. It doesn't give you confidence when MS took SilverLight and WinForms out behind the barn and shot them. At one time ESRI was promoting either Silverlight or JavaScript for web based applications. I lucked out and went with the JavaScript API, figuring that wasn't going away.
Even with WPF we're going to go to great pains to make sure the view stays the view.

That was my first go around with ATL. I thought it was a shortcoming on my part but, no, it was a bug in the ATL code.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Related Threads

    HomeOwnersHub.com is a website for homeowners and building and maintenance pros. It is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.