See below for details on recent, important update which makes this software almost as good as it used to be!
I've always had a love hate relationship with PFU's (Fujitsu's) Rack2-Filer. I love that it is a computer-based alternative to a real/non-portable filing cabinet, but I hate that it has always striven to be nothing more than exactly that. Where other companies might have rethought what it means to store and access virtual documents and delivered a bevvy of features to make that experience brilliant, PFU created a bewilderingly crippled experience almost as bad as real life. The interface was a virtual cabinet with virtual shelves on which go virtual binders. They mind-numbingly impose real and hard limits on how many virtual pages you can put in a binder, how many binders go on a shelf, how many shelves go in a cabinet. Still... as awful as it is, and it is awful, there is a certain strange, agreeable functionality about it all.
PFU recently released Rack2-Filer Smart as a replacement for Rack2-Filer. I was eager to upgrade because one of the biggest offenses of the older product was its inability to be accessed from other devices, like Android or iOS tablets. When I saw that Rack2-Filer Smart apps showed up in the app stores and realized you needed to upgrade your desktop client to use it I wanted to upgrade (I also prayed they would improve their software). Ugh. Upgrading was not a good decision.
PFU (a Fujitsu company) is just about the most incompetent software company I've ever encountered. They are mired in stupid. Whatever they might do right, however many brilliant people they might have, they've got just enough horribly inept and stupid people to ensure that their success will be forever limited.
The first major problem I encountered was that they provided trial links on their site to download and try out the Rack2-Filer Smart software but no buy links. I even installed the trial thinking it would have buy links. It did not. There is no way to buy a downloadable version of their software online, despite them letting you download a trial. That's pretty stupid. Then I went searching for a physical version to buy. As I own the old version and don't want to throw my money away I looked for and found an upgrade version on their and other e-commerce sites. All "unavailable"/"sold out". There were no copies to be had anywhere. Huh? I could buy they full version but no upgrade version. I even checked eBay and found nothing. A week or two later eBay let me know that someone was now selling Rack2-Filer Smart on eBay, and I got a full (non-upgrade) copy for what seems now the going rate of $59 (presumably a copy included with a Fujitsu scanner sale).
And thus began my unpleasant experience with Rack2-Filer Smart...
First the import of my previous libraries failed. One of the 49 cabinets it was trying to import would fail without any sort of useful message. It suggested my drive might be full or there were file permission issues. It took me an hour but by a process of elimination and guesstimation I worked out that it couldn't read it's own damn .ini file format, there was some OCR text in the OCR text section of the .ini that must have been causing some problem. I removed the OCR section from that .ini and it would now import. Stupid PFU.
With Rack2-Filer Smart now working the real horror began. They seem to have rewritten everything, and in their rush to get it out decided to leave out tons of very useful features that people like me surely relied upon. And, adding insult to injury, they decided to go all skeumorphy and try and pretty up this pig of a program by slapping some lipstick on it in the form of photo-realistic shelf backgrounds and binder spines.
Here is my list of seriously horrible things they've changed/done in this latest release:
- No more index sheet as the first page in a binder. You now need to click to pop-open a list of sections.
- No more drag and drop re-ordering of divider sections from the aforementioned index sheet, and the aforementioned pop-open list of sections has no drag and drop. The nearest thing you can do is use the thumbnail view in the pop-open window to select, cut, and paste the items. Works, but it requires a lot more clicking. You'll see. It's awful.
- When you open the Binder Viewer it isn't maximized by default, and when you maximize it it doesn't bother zooming the display, so you've got your binder and its pages un-readably small on a normal sized modern screen. No setting to fix this. Idiotic. It means I have to click maximize and then the fill double-page view buttons every single time I open a binder.
- Binder tabs are now useless. The old version was pretty good about letting you see the tabs of adjacent divider sheets. This new version is horrible, instead of dynamically placing the tabs the new version has only five spots for them, so your view of tabs is perpetually obscured. And the font size on the tabs is huge so every single tab label is cut off and unreadable. No settings to alter this.
- You can't easily flip between sections. I used to be able to press ctrl+right arrow to jump to the next divider section to the right. That feature is gone, can't seem to find a replacement key combination. And because most tabs are hidden behind other tabs you're just screwed and have to use that dumb pop-open list.
- You can't easily flip between pages. The old version let you disable the stupid/slow page turning effect. The new version has no such option. Pages turn deadly slow even on a super fast computer.
- No right click context menu to add dividers, delete pages, etc. One of the most awful changes is the elimination of the right click menu. You now need to use the stupid left hand control options, which takes five clicks to accomplish what I used to be able to do in one or two. And you have to memorize which items are behind which side menu icons, this is awful.
- Main View (Library/etc.) is absurd. They decided that putting a JPEG of an actual office behind the fake shelf makes for quality software. It does not. It's straight out of 1998. And, again, the window doesn't launch maximized and auto zoom, so it looks like crap and is barely readable, hiding the second level titles because it's so small.
- Import is flawed (see my comment above)
- Android / iOS app connection is seriously stupid and un-intuitive. Any normal human expects the following experience: Go to your tablet, open the app, see the list of libraries, open the one you want, see the cabinets, open the one you want, see the binders, open the one you want. Browse the binder. How hard could that be? This idiotic version works in a completely different way. You need to be on the desktop computer and mark a binder as "exported" and only then does it run the server required for remote access and you can only access the exported binder. And when the remote app connects it can only see that exported binder. Maybe you can export more than one at a time. I didn't get that impression, but I gave up on the feature pretty quick. Oh, and it seems to download the entire binder, rather than fetching only what it needs as it needs it, which makes some sense in terms of local performance, but a "streaming"-ish option would have been nice.
I wasted a lot of time trying to figure out how to work around Rack2-Filer Smart's buggy legacy import and I wasted a lot more time trying to figure out why the Android app wouldn't connect (nothing mentions that the server doesn't run unless a binder is "exported") and how their concept of app-desktop interaction requires this odd "export"-based strategy.
(Now, in the interests of full disclosure there may be some better way to access use this software... it looks like both app and desktop can sync with Drop Box and Sugar Sync, which may allow you to use it without this export bullsh*t, but as I have neither a Drop Box nor a Sugar Sync account and as I'm pretty fed up with my experience thus far I'll save that investigation for another day.)
PFU sure knows how to make a bad product and that's exactly what they've delivered, a tone def mess that will now makes everything I do with their software take more time and more mouse clicks. And it's a real pity because with a few dozen (or hundred) additional man hours they could have at least made this product no worse than their last one.
Unless you absolutely, positively must have their crappy version of a tablet connected Rack2-Filer experience I would stay away from this upgrade like the plague. I pray it matures and they add back all the features/shortcuts they removed.
UPDATE as of 9/9/2013 (version V1.0L20)
Finaly PFU has released an update that has begun to bring previous features back! The previous updates seemed to be nothing more than bug fixes.
I can joyously report that one of the most glaring omissions, the context menu (or right click menu) has returned!!! Finally Rack2-Filer Smart is usable again! It's still not where it was, before their dumb "Smart" update, but I at least now have have reason to hope the rest of the problems will be fixed as well.
Also, another petty but important fix is that the binder window now remembers its previous size and zoom level, meaning you no longer need to enlarge and zoom every single time you open a binder. Sadly the main window still lacks this memory.
A huge improvement in this update is in the importing of scanned documents. If you have a binder open and do a scan it will now insert the scanned documents into your current location, a vast improvement over the previous behavior which would tell you to close the binder, at which point it would insert any scanned documents at the front of the binder forcing you to awkwardly move them to their final destination.
I also noticed that page flipping seems faster, but there is still no ability to turn off the stupid page flip effect. For the love of Pete, guys, please let us skip your stupid page flip animation!
Tabs can now be dragged to be repositioned! Maybe they could previously, but if they could it certainly wasn't obvious (it isn't obvious now, either, but I happened to discover it).
And the software is still lacking vital shortcut keys, no page flipping hotkeys (the old ctrl+right/left arrow IIRC to jump to next divider doesn't work), and ctrl+f doesn't place you in the search box.
Apparently this version also includes some sort of change in binder structure such that your binders are converted once they are opened and saved, and made incompatible with previous versions. Not a big deal for most people, I'm sure, but something to be aware of if you're syncing data with a slightly older version you can't upgrade (e.g., in a work environment).
All in all a good day for Rack2-Filter Smart, the first day I used it when my mind wasn't filled with cursing and regrets. Keep the improvements up guys! Bring back ALL the functionality you took away!
For some reason I've always loved director/writer John Waters. His outspokenness, his warmth, his humor, his stories, his loyalty to his native Baltimore, he just seems like he'd be a wonderful guy to have over for dinner. (I can't say I've ever loved his movies, though; they just didn't feel like my sort of thing, really.)
Here's an interesting video of John Waters speaking on free speech.
How quickly life can remind you that a day can be a truly miserable thing. Today mine started with a major fight with my girlfriend, Francine. In an attempt to escape the poisoned atmosphere of the house we set off on a pleasant but utilitarian outing. Any facade of pleasantness was instantly destroyed about 45 minutes later when I saw a huge, lovely turtle run over by a truck.
It died because I failed to save it. I saw the turtle emerging from the tall grass by the side of the road and stopped as quickly as I could, about 80 feet down the road (the speed limit was 45 mph, there was no shoulder, lots of cars behind me, I pulled off into a side road). I got out and began to go back towards the turtle but in those few moments it had moved far faster than I ever could have imagined and was already a third of the way into the traffic lane. A large passenger bus saw it but only drifted over the line to avoid running it over directly. The under draft knocked it along the lane and into the tires of a following pick up.
Life sometimes seems like a collection of utterly meaningless, pointless, forgettable moments punctuated by a few occasionally horrible and some wonderful moments. I envy the folk who see it as a more uniformly joyous procession.
I'd never seen a turtle so large on the East coast, it was at least 1.5 feet long, surely had lived a long time to get that size, and surely would have lived a longer time still. I'm not sure what I could have done differently, tried to step into traffic to flag people down, stopped my car in traffic and tried to alert people, I just had no idea there was so little time. We often imagine there's plenty of time left, to see relatives, to see friends, to be happy, to accomplish great things... Often there is not.
I cried like a baby on the drive home. I cried for the turtle. I cried for the horrendously capricious nature of life and death. I cried for my impotence; my life these days seems nothing but trying to help others only to witness their fruitless suffering. And I cried for the fact that I was crying, unable to accept life on its cruelly unacceptable terms.
We humans are sick, sadistic creatures, selectively choosing what and who we care about. Today I mourned the death of a turtle I didn't know, and cursed the driver of the killing vehicle, but I thought and cared little about the hundreds of mosquitoes, ants, and other bugs I likely killed in the remaining portion of the car ride home; I strongly suspect I killed or wounded two butterflies. But for some reason that turtle mattered most, that poor, beautiful, stupid, wonderful, turtle. I am so sorry I failed you.
The film utterly loses me at the start. The captain of a tug boat (Michael Cane), his first mate, and a girl (Sally Fields) his first mate happened to pick up the night before stumble upon a massive upside down "four star" passenger liner, having seen a coast guard helicopter flying away from it. Now I cannot imagine any sea faring sort (or any human for that matter) coming upon the massive wreckage of a ship, the sea of debris and bodies that must surround it, and not being emotionally overwhelmed when they consider the hundreds or perhaps thousands who must have lost their lives. The normal reaction would be to look around the nearby ocean for survivors, for bodies, do something of service. Instead this crew of three immediately decides that the logical thing would be to climb onto the upturned, sinking ship find a way inside, and loot it for all its worth (sorry, "salvage" it). Now, being that this is the sequel to "The Poseidon Adventure" and that that movie was a tale of people desperately trying (and many of them failing) to escape the very same sinking ship, it's bizarre to think that these three idiots would be trying to get on board and make their way deep inside an upside down, unfamiliar, still on fire/exploding, ship they know is only minutes to hours from sinking completely. And sure enough they're not even in the ship five minutes before one of the many ongoing explosions prevent them from escaping the same way they came in. Rather than immediately try to get out they continue their looting. Flash forward through all the nonsense of finding some trapped folks they end up saving, including a blind man, a murder mystery, and an ongoing battle with Telly Savalas and his crew who have boarded pretending to be medics but really are there to haul out thousands of pounds of guns and plutonium, and most of Michael Cane's extended crew escape, but he's lost his first mate, and all their loot, save an uncut diamond Sally Fields smuggled out in her belly button. Oh, and now Sally Fields's and Michael Cane's characters are in love, or lust, or something. So I guess the death of his first mate was worth it after all, Michael Cane certainly betray any sense that it wasn't.
My beef with the movie is that I can never get past the fact that no three humans on the face of the earth presented with this situation would have done what these three idiots gleefully did. It simply defies everything I know about people. Sure, one idiot in any large group might potentially put themselves in harm's way to make a few bucks, but here we're talking about almost absolutely certain death: an unfamiliar, upside down, presumably unlit, debris ridden, fire/smoke/explosion ridden, sinking ship. And so every minute watching the movie I'm silently cursing these idiots and praying for the justice which would be delivered by their deaths. At best this is a movie focused on a day in the life of three mental freaks, perhaps a-logical sociopaths or something, at worst it's just an awful, unrealistic movie written/created by people who are a-logical sociopaths and think everyone's depicted behavior is somehow normal or believable. (And don't get me wrong, even "normal" people are capable of tremendous, horrendous thoughts/actions (the Nazis reminded us of that), but even then the evil callousness develops, grows, becomes believable because it fits into an increasingly awful pattern of thought/behavior. )
Attempting to measure one's own accomplishments is generally a monstrously bad idea. Even the most successful of men may find themselves coming up short when they compare themselves to a yardstick of their own making. Those who succeed generally do so by finding themselves perpetually shy of achieving some newly important and consuming goal. That having been said, taking stock of yourself is a sobering necessity, something which me must do if we are to re-align our compass with an objective, societal true North. It is in this brutally reflective frame of mind that I make the following observations about myself, most easily expressed as a Guide to Leading a Highly Ineffective Life. The objective reality is that I have achieved quite a lot, more than many, less than many, and a reasonable amount given my particular make up and life challenges. Nonetheless, I have observed in myself the following limiting, (at times) crippling characteristics that have kept me from being far more than I am.
20 Things You Can Do To Be Highly Ineffective
- Work on many projects simultaneously.
- Associate with no professional colleagues.
- Cultivate few friends.
- Spend almost all of your time by yourself or with a girlfriend only.
- Work in secret. Share almost none of your ideas or work.
- Do everything from scratch. Build your own rather than modifying existing software/code.
- Believe your mind and/or abilities are failing you over time.
- Be deathly afraid of judgment. Ensure you never finish any task properly.
- Ignore important details.
- Explore periods of intense lassitude.
- Be mildly obsessively interested in many, many generally unrelated things.
- [Removed by request.]
- Secretly believe that those who succeed are magically different from you, possess something you entirely lack (as exemplified by the tone of this list).
- Put off until tomorrow that really hard thing that intimidates you, never try to do it today, never right now.
- If you find yourself not particularly challenged in a situation (job, life, etc.), then maintain the status quo, choose comfortable over challenge.
- Develop as little self-discipline as possible. Go to bed when you want, eat what you want, exercise as little as you feel like.
- Constantly wrestle with existential and philosophical doubts rather than engage in the business of actually living. Wonder about what the point of living is if you die rather than actually focus on getting the most from every minute of life.
- Avoid seeking professional, psychological help for things like depression and anxiety, assume that you alone can surely defeat obstacles which have bedeviled humans for millennia.
- Have tremendous difficulty switching tasks/projects, avoid doing so because it's mentally painful.
- Watch TV.
This post would be more relevant if I wrote it thirty years ago rather than now, but the Internet wasn't much of a thing back then and I only just stumbled across Murder on Flight 502 again...
My favorite comedy for much of my childhood and Airplane (1980). The absurdest humor was like nothing like I'd seen before, and it scratched me right where I itched. It was 15 years before I discovered that most of the scenes and characters from the movie (and the other Zucker-Abrahams-related movies) were send ups of specific scenes and characters in other movies (movies like Murder on Flight 502 and Airport, Airport 1975, Airport '77, and Airport '79). Now knowing that there was now so little about the movie which was truly original, aside from turning each element on its head, robbed me of most of my appreciation for and enjoyment of the movie. Part of what impresses me about stories is the author's selection of characters and events, why did they decide to add this character to the story, why did they give him the personality they did, why did they inject him into this particular interaction with another character. So suddenly finding out that most of those decisions were copied from other writers made Airplane seem a lot less impressive a creation. It's still funny, of course, but it feels now funny in a more Mystery Science Theater 3000* sense of just adding jokes on top of something rather than creating an entire world of new, funny material.
* I've always wanted to love Mystery Science Theater 3000, and I've watched dozens of episodes, but I watch them for the B-movies they show and seem to tune out the running commentary, which I don't think has ever produced even a hint of a chuckle. I wish I could laugh at it, I honestly do, but it's just not my sense of humor, I guess.
Dogs descend from wolves. As wolves have an average lifespan (in captivity) of 13 years it's no surprise that large breed dogs' average lifespan is 13 years. I would argue that anyone creating or perpetuating a breed which is significantly below this average is being extremely selfish. The decision to do so requires a human thinking, "My desire for a dog with a particular look or nature is more important than the dog's right to its full share of years on Earth." Consider some of the dog breeds with the shortest average life spans: Irish Wolf Hound 6.2 years, Bull Dog 6.7 years, Bernese Mountain Dog 7.0 years. These breeds have half the normal lifespan of the dogs (and wolves) from whom they are descended. That seems to me like a monstrously horrible thing to do, to gradually over many decades craft an animal with a shorter and shorter lifespan just so it can possess certain qualities that nature is doing its best to insist (through manifested defects) should not be possessed by a single breed.
In my view, breeding dogs with unnaturally short life spans can only be immoral. Perpetuating the market for such dogs by buying them from professional or hobby breeders can only be immoral. How can it be right to perpetuate this cruelty? If you love these breeds rescue one from a shelter or a rescue group, do not buy them. I accept that people have strong appearance and temperament preferences, but too many people fail to realize there are many pure bred dogs to be had at shelters (25% of shelter dogs are pure of breed) and countless others to be had rescue groups, including breed specific rescue groups.
For those who don't see this as a moral issue I'll share an analogy... Lets say you and your spouse want to have children and discover in a routine health screening that you possess a gene that virtually guarantees any child you might conceive in the future would have a lifespan half normal, only 38 years. Would this not cause you to seriously reconsider intentionally bringing a child into the world knowing the result (when you could adopt or use a donor sperm/egg)? If you love dogs and feel a connection to them, how can you not respond similarly? You can't adopt a dog and fix its lifespan, but your adopting one will remove the financial incentive from those breeding dogs and reduce the number of dogs dying prematurely for breed-specific reasons.
I'll be the first to admit that my argument may not sway a single life-long pedigreed bulldog fancier, but hopefully it might cause some more open-minded people to rethink some the questionable decisions we make on behalf of dogs.
P.S. - Gaddy wrote in to raise the extremely valid point that, "beyond just longevity, there is the issue of quality of life. ... Some dog breeds are so far removed from their wolf ancestors, that they become prone to infections, or can no longer move or breathe normally." I couldn’t agree more and just wanted to explain that the only reason I focused exclusively on longevity in this post was because I sometimes like to try and reduce a more complex topic down to what feel to me like less arguable fundamentals. While some people might argue whether a particular bred-in feature is bad/unhealthy/painful/etc. few can argue the evil of a halved lifespan. And if they do argue it then the argument goes in a direction which I think is more easily countered (as well as being philosophically more interesting).
How can one justify a Bulldog living only half the lifespan of its wolf relative?
1) They can say that animals don’t know how long they are supposed to live so therefore it doesn’t matter if they live shorter lives, they don’t feel robbed of anything or suffer more. But if that were true and valid then would these people be in favor of engineering dogs which lived conveniently short lives? What about a dog that lived for exactly one year, dying just after it’s puppy-ness began to wane, just in time to buy another limited-lifespan puppy? How could this be wrong and half-lived Bulldogs not be wrong?
2) They can argue that a Bulldog has a different perception of time which makes its 6 years *feel* like the norm of 13 and so they are not cheated out of anything. The argument would presumably fall out of the observation that animals have radically different lifespans and we don’t feel like any of them are cheated out of longer ones. But of course the flaw here is that most animals lifespans and presumably their perceptions of them seem to relate to the fundamental rate at which their life is lived. Humans have a 77 year lifespan, great sea tortoises have a 250 year lifespan, and humming birds have a 3-4 year lifespan, and a casual observation of each shows that there’s clearly some connection between their perception of time and their lifespan. Hummingbirds clearly process and react to information far faster than humans can, their movements and reaction times prove the point. Sea tortoises clearly process and react to information far slower than humans do, their movements and reaction times prove the point. So, it seems likely that one’s sense of time and perception is tied to heart rate and some sort of rhythm of the brain. So for this argument about a Bulldog’s altered perception of time to work you’d really need to show that Bulldogs are radically different medically from wolves (in heart rate, brain rhythm, or the external manifestations of cognition/reaction time) and I don’t think there’s any evidence of that.
And I’m sure there are other arguments they could make as well, but those are the first two I could imagine.
I love C#. It takes everything I loved about my years programming in early Java and adds boatloads of wonderful. But, there is one thing that perpetually infuriates me. All C# source code includes coder-included class, type, and other references that are all relative to a list of "using" statements at the top of the source code file and also a list of libraries managed separately in the Visual Studio UI. The problem is that all the wonderfully helpful source code that people post on the web never includes these UI-managed library references, which means that any time you copy and paste those bits of C# source code you will get lots of squiggly red lines telling you that Visual Studio has no idea to what the classes, types, etc. given in the source code refer. And since I've just searched the web because I didn't know how to solve a problem or because I'm learning some new framework or paradigm via some example on a page, I usually have no idea what library or libraries I need to reference in order for all the dependencies to be satisfied.
Case in point, I just had a look at the Google Drive API "Quickstart". They show you a simple snippet of source code you are supposed to try yourself. They do not give you a Visual Studio project, just the code on the screen you need to copy and paste. They also tell you to download the API libraries. I did. The library has what looks like a common library directory with 10 or so DLLs (and various other files) and a separate folder with 45 folders for various "Services" and inside those more DLLs. And I am somehow supposed to know which DLLs this 20 line piece of source code needs??? So to be safe I end up including all the common libraries and both the libraries under the "DriveService". But the code won't compile. All the references are satisfied but now there's ambiguity between because an extension method is defined in two separate imported DLLs. It takes me another 20 minutes to figure out which one I don't need. Why do we have to go through all this??? It is all so utterly needless. I can't tell you how many times I've been unable to try out a piece of source code because something has gone wrong in figuring out and finding the libraries that were needed, and which versions of the libraries were needed (since libraries can radically change with every release).
What boggles the mind is that neither Visual Studio nor third-party VS plugins like ReSharper do anything to help. Surely something could be done to largely eliminate this problem! At the vary least, why couldn't they include a "header" like region at the top of the VS editor UI which lists the actual fulfilled references for that active file. It wouldn't actually be part of the source code, it would just be a handy little (perhaps collapsed) virtual piece of commented code that would be copied whenever you ctrl+a ctrl+c file contents. And when you pasted it elsewhere it would let people know what out-of-band files they were missing. The format would probably just specify the Portable Executable data for the file and the hash (not the actual path which would be less useful and less anonymous).
Here's hoping they do it one day, or someone makes a nice little third-party plugin that is able to sort it out for you (by having a massive DB of exported library functions and some good heuristics)...
All certificate signing agencies basically do the same thing, they provide a means by which a user browsing a site or using a piece of software can know who is operating the site or writing the software. Code signing (and signing in general) is a wonderful thing. I fully believe in it. But you don't need these centralized commercial entities to provide it. And I'm just not convinced of the value add of signing authorities which charge a lot of money to (in my view) add only a thin veneer of security.
The vast majority of those applying for certificates are surely entirely legitimate and provide entirely legitimate details. That means that the vast majority of certificates signing authorities give out are entirely valid. But that's not proof that the system is good. Surely the effectiveness of security is determined not by those who intend to stay within the law but those intend to violate it. Airport security is not good because it finds no bombs on lawful people, it is only good if it is able to find bombs on unlawful people. Certificate agencies' version of due diligence is laughable, they generally require nothing more than emailed (or faxed) images of desired documents. Could someone submit easily photoshopped documents to a signing authority and have their credentials "validated" such that they get a signing certificate? Yes, it's been done. And even if the certified owner was valid at the time the certificate was issued, the security provided to end users (those looking are supposed to rely upon the certificates) is fleeting at best; the certificate owner can always move, disconnect their phones, or give the certificate to others.
Now in no way are these signing authorities radically different than the purveyors of other more traditional security products. It's true that we put locks on our houses and secretly know they would keep out only the laziest or stupidest of criminals (lock picking being an easily acquired skill and glass being easily broken), but signing certificates have the potential to be so much better. The fact that they are not, and that they cost so much for not being so superior to self-signed certificates, frustrates me. I just wish signing authorities would either do more (require you show up face-to-face at an office with a passport to be fingerprinted and DNA mapped) or do less (acknowledge how easily they may be deceived and not make you jump through hoops to proffer false 'proof').
But here we are in the land of is... God bless the industry of false security.
The free, multi-party video conferencing offering Google+ Hangout is a pretty fantastic alternative to Skype (and its paid multi-party option). Wouldn't it be wonderful to have a UI control you could drop into any .NET application that gave you all the power of Google+ Hangout? Well, it would... and I've been working on it, but so far it's not proved easy.
First a bit of back story. I have been working on an app which features embedded video conferencing and had gone initially with Skype. Skype has been a somewhat miserable experience thus far, workable but only just. The only way I've been able to integrate with Skype thus far has been their Skype4COM option. Skype4COM allows you to remote control certain features of Skype from a third-party application. You can initiate calls, hangup, mute, and things but you can't hide the original Skype interface or embed its video in your own application. There is a way to do all that, and it's SkypeKit. But for reasons unknown to me they seem to have suspended SkypeKit access. I applied to the program many months ago and my account still says something like, "We'll get back to you about SkypeKit when we're ready for you." I've heard from others that that's just the way it is right now, that they are redoing SkypeKit or something. At any rate... Skype isn't a great solution at the moment. Google+ Hangout on the other hand would be perfect, if only it worked.
I spent a few days a few weeks ago trying to create a Windows control that would let me embed Google+ Hangout inside a Windows control. The logical approach to do that would be to customize a web browser control to load up the web-based Google+ Hangout and just modify the rendered content and inject JS as necessary to achieve the desired control-ifying of Hangout. I've done that before, so I didn't think it would prove so tricky.
Microsoft WebBrowser Control
I first tried using the built-in Microsoft WebBrowser control as the hosting control. I automated Google account sign-in and had it load up the Google+ Hangout page. I hit the first major roadblock. The page gave me a warning about my browser agent not being supported. I went back and added code to spoof it, but that didn't seem to work as the WebBrowser control isn't all that sophisticated and only spoofs the user agent for the first request, not subsequent ones or ones that the loaded page fetches. I tried several alternative WebBrowser extension classes that try to intercept navigating requests and replace them with navigate calls that include the spoofing, but they didn't seem to work properly. If memory serves I did reach a point where I was able to call the JS to start a hangout but everything hung when it tried to install/start the hangout.
The next option I tried was Awesomium, a Chromium-based behind the scenes browser rendering system. After looking at some of their examples and struggling a bit with their concept (which differed radically from the WebBrowser control and MozNET control approaches I was used to) I ended up realizing I could use one of their demo apps as a quick way to test the concept. They had a tabbed web browser demo which I used to access Hangout. I was able to initiate a Hangout but the video of the Hangout was not contained as it should have been within the Awesomium demo browser, the Hangout window was at the top left of the screen whereas the browser was in the middle. So it worked but if they couldn't control where it was rendering then I didn't think an Awesomium would be an easy solution.
MozNET / Xulrunner
Next I tried my old friend, MozNET. MozNET is a XULrunner implementation which I've quite enjoyed using before. There again I wen the easy route first and used a demo browser example to see if I could get it working. Sadly it did not work. It would just hang at the step where Hangout is checking for its plugin. I feel like a MozNET solution wouldn't be too hard to achieve, but I don't have the depth of knowledge in it to make it happen easily. I know MozNET can be made to work with various XPI-based plugins.
Oddly enough, Google+ Hangout doesn't seem to be an XPI plugin. I did a procmon.exe dump of a Firefox when using Hangout and I see access to:
And a separate EXE gets launched:
C:\Users\foo\AppData\Local\Google\Google Talk Plugin\googletalkplugin.exe
But I'm not sure how what is doing the communication between Firefox and the Hangout code.
If anyone has any thoughts they'd like to share, please let me know! I think the world would benefit from an embeddable Google+ Hangout control... I know I would.