Here's something I've been using for some time now, and I think it's great - FolderShare. It's a way to selectively exchange files with users that you invite (versus using a global P-to-P type of sharing where anyone can see your shared directory).
It is owned by Microsoft now and is still in "beta" even after a couple of years, but it works without a hitch. Almost. (see below)
I have a directory on both my home and work machines that are connected in a "library". When I find an interesting utility that would be useful at home, I put a copy in that folder and the transfer happens automatically, in the background. Naturally, the sending and receiving machines have to be running the FolderShare program, but I rarely turn off either machine.
Not only that, but you can have multiple users sharing the same folder. It's kind of like RSS for files, only you control who can 'subscribe' to the directory.
One of the really nice things is that it works behind just about any firewall because it's port 80 based!
Now, the hitch. In theory, you can visit the web site and browse another machine's shared directories (the site is password protected, of course). If you click on a particular file, it will initiate a file transfer. However, I have had only mixed success with this. Sometimes it will just sit forever, sometimes it will timeout, sometimes you get the file. Size (in this case) doesn't matter.
And in my case, the chums who control the firewall have added this site to the blocked list under the category "Peer to peer sharing sites". I've put in a request to have it unblocked, but it looks like they won't do it. But the folder sharing auto-transfer feature is just great and works flawlessly.
Wednesday, May 30, 2007
Tuesday, May 08, 2007
What's so good about NHibernate?
I work with data quite a bit and am always a sucker for on the lookout for new ORM/code generation tools to help automate cruds and queries. For a while now it has been MyGeneration d00dads. Free (always a good thing, since I work for a non-profit), fairly shallow learning curve, not too many quirks. But you never know when something better might be waiting for you Out There.
I have seen several items lately, particularly from Ayende of course (I love the idea of Bumbler!) Sam considers it Noteable. In the past, he has also mentioned it in contrast to Microsoft's flagging ORM efforts as a Good Thing.
Time to check it out. I go to NHibernate.org (or rather a page off of Hibernate.org) and check out the Nhibernate Quick Start Guide. In five steps, the first of which you may not need (create a database), the last of which is really several steps to get the configuration and connection objects lashed up, you can begin firing at your database.
The first few examples look good, such as:
Seems natural enough. Then we go down a bit to find
Casting? Why are we casting?? Why not create an object of the type you want and get IntelliSense for its columns, properties, and methods? That's what the MyGeneration d00dads architecture lets you do. Here is their canonical example.
And what's up with all the code you have to write? One would assume that NH devotees use code generation for the class with its properties and theXML mapping file that has to be embedded in your assembly. But no mention of it in the quickstart. If I thought I would have to do all that, I would give up right away. (As it happens, MyGeneration has a template that does the class and .hbm.xml file. If it didn't, I would surely be writing my own.)
Now a lot of any ORM or DAL tool is what you get used to doing. If NH floats your boat, I won't try to argue you out of it. But I'd love to know if anyone using NH has also tried something a bit more automated, perhaps even SubSonic, which is starting to look very nice in v2.0.
If you have tried something else and still use NH, I'd love to know why.
I have seen several items lately, particularly from Ayende of course (I love the idea of Bumbler!) Sam considers it Noteable. In the past, he has also mentioned it in contrast to Microsoft's flagging ORM efforts as a Good Thing.
Time to check it out. I go to NHibernate.org (or rather a page off of Hibernate.org) and check out the Nhibernate Quick Start Guide. In five steps, the first of which you may not need (create a database), the last of which is really several steps to get the configuration and connection objects lashed up, you can begin firing at your database.
The first few examples look good, such as:
User newUser = new User();
newUser.Id = "joe_cool";
newUser.UserName = "Joseph Cool";
newUser.Password = "abc123";
newUser.EmailAddress = "joe@cool.com";
newUser.LastLogon = DateTime.Now;
session.Save(newUser); // commit all changes to the DB
transaction.Commit();
session.Close();
Seems natural enough. Then we go down a bit to find
Let's say you want to retrieve an object when you know the user ID (eg. During a login process to your site). Once a session is opened it's a one-liner; pass in the key and you're done:
// open another session to get the new user
session = factory.OpenSession();
User joeCool = (User)session.Load(typeof(User), "joe_cool");
Casting? Why are we casting?? Why not create an object of the type you want and get IntelliSense for its columns, properties, and methods? That's what the MyGeneration d00dads architecture lets you do. Here is their canonical example.
And what's up with all the code you have to write? One would assume that NH devotees use code generation for the class with its properties and the
Now a lot of any ORM or DAL tool is what you get used to doing. If NH floats your boat, I won't try to argue you out of it. But I'd love to know if anyone using NH has also tried something a bit more automated, perhaps even SubSonic, which is starting to look very nice in v2.0.
If you have tried something else and still use NH, I'd love to know why.
Labels:
Code Generation,
DAL,
MyGeneration,
NHibernate,
ORM,
SubSonic
Friday, July 22, 2005
Here's what's wrong with the Tablet PC
I have read numerous Tablet PC evangelists wondering why the Tablet PC has not taken off as many had hoped. Here now, finally, is the answer:
Tablet PCs are just too slow.
None of the current implementations have fast enough processors to be usable. Mind you, I am in love with the idea of Tablet PCs. In the healthcare world, they have great potential to make things both easier for the provider and more accessible. I read white papers and testimonials from healthcare professionals and organizations saying how they have been used or how promising the idea is.
But, as I play with the three that we have purchased in our organization (healthcare), I am frustrated that the mouse cursor cannot keep up with normal handwriting or pen movement. It's yet another case of the human having to make too much of a concession to the machine to get something done.
As a programmer, I make concessions all the time. I devise workarounds for tools that misbehave. I translate data from one program's format to another format because the receiver or sender cannot accomodate the other. All of us live with quirky operating systems that require special care and feeding. I am willing to do these things because I like technology and enjoy making it work.
My end users, on the other hand, have much less interest in fiddling with bits or pieces of hardware. They could care less that they hold a wonderful but nascent technology in their hands. They only know that "this thing doesn't work!". When I create a solution for them, I try as much as possible to look at it from that viewpoint. And when I pick up a Tablet and use it from that perspective, it just doesn't hold up.
I bet if we could go somewhere over the 2Ghz range, the O/S could be responsive enough to make it truly what it was intended to be. We're just so close, and I really want us to get there.
Tablet PCs are just too slow.
None of the current implementations have fast enough processors to be usable. Mind you, I am in love with the idea of Tablet PCs. In the healthcare world, they have great potential to make things both easier for the provider and more accessible. I read white papers and testimonials from healthcare professionals and organizations saying how they have been used or how promising the idea is.
But, as I play with the three that we have purchased in our organization (healthcare), I am frustrated that the mouse cursor cannot keep up with normal handwriting or pen movement. It's yet another case of the human having to make too much of a concession to the machine to get something done.
As a programmer, I make concessions all the time. I devise workarounds for tools that misbehave. I translate data from one program's format to another format because the receiver or sender cannot accomodate the other. All of us live with quirky operating systems that require special care and feeding. I am willing to do these things because I like technology and enjoy making it work.
My end users, on the other hand, have much less interest in fiddling with bits or pieces of hardware. They could care less that they hold a wonderful but nascent technology in their hands. They only know that "this thing doesn't work!". When I create a solution for them, I try as much as possible to look at it from that viewpoint. And when I pick up a Tablet and use it from that perspective, it just doesn't hold up.
I bet if we could go somewhere over the 2Ghz range, the O/S could be responsive enough to make it truly what it was intended to be. We're just so close, and I really want us to get there.
Thursday, July 21, 2005
Tabbed browsing
What in the world is all the fuss about Firefox's tabbed browsing? It's mystifying, as if nobody ever used Mozilla in the old days. The tabbed browser extension in Mozilla (was it Tabbrowser Preferences back then?) was so far and away better than it is in Firefox. Of course, Firefox's tabbed browsing support by itself is so pitiful as to be enxt to useless compared to other options.
I finally had to quit using Mozilla when there were too many important web sites I was required to visit that would not display properly. I looked around in the IE wrapper world and came up with Avant Browser. I have not looked back since. All the tabbed goodness of the old Mozilla with the (for better or worse) engine of IE. And the feature set of these wrapper apps (Maxthon is another) has not stagnated.
How about being able to drag a new tab near other related tabs? How about being able to duplicate a tab with or without its current history of pages? What if you like multiple rows of tabs rather than one long one. Firefox, even with Tabbrowser Preferences installed, keeps squeezing the width of the tabs until they are unreadable. How unusable.
Do yourself a favor. Try Maxthon or Avant Browser (my choice). Pick one. Don't look back.
I finally had to quit using Mozilla when there were too many important web sites I was required to visit that would not display properly. I looked around in the IE wrapper world and came up with Avant Browser. I have not looked back since. All the tabbed goodness of the old Mozilla with the (for better or worse) engine of IE. And the feature set of these wrapper apps (Maxthon is another) has not stagnated.
How about being able to drag a new tab near other related tabs? How about being able to duplicate a tab with or without its current history of pages? What if you like multiple rows of tabs rather than one long one. Firefox, even with Tabbrowser Preferences installed, keeps squeezing the width of the tabs until they are unreadable. How unusable.
Do yourself a favor. Try Maxthon or Avant Browser (my choice). Pick one. Don't look back.
Notes from the firehose
It's not just me - there are more and more things going on these days in the universe of computing. A couple of years ago, I thought about diving into Java, and I did so for a couple of months. However, .NET has captured my fancy. And I do not think you can do both. There are simply too many options popping up to be knowledgeable, much less expert, on everything.
Even in one arena, there are things happening on multiple fronts. I feel like a beleaguered general with too few troops caught in an open plain with armies closing in on all sides.
But, one must press on. I already try to keep up with far too many technical blogs. Every so often, I have to narrow my focus, weed out what's not of immediate value, and soldier on. It's fun, isn't it? :-)
This corner of blogdom will report on my sips from the firehose.
Even in one arena, there are things happening on multiple fronts. I feel like a beleaguered general with too few troops caught in an open plain with armies closing in on all sides.
But, one must press on. I already try to keep up with far too many technical blogs. Every so often, I have to narrow my focus, weed out what's not of immediate value, and soldier on. It's fun, isn't it? :-)
This corner of blogdom will report on my sips from the firehose.
Subscribe to:
Posts (Atom)
