Circles: Why Facebook Doesn’t Work For Me

To state the obvious, Google+ does something that Facebook doesn’t: Circles.  I ended up deactivating my Facebook account because even among my collection of friends, I don’t want my personal and professional  life splattered across the entire collective.  I am not a Borg.  Within that collection, I have circles of friends.  They don’t know necessarily know my friends in other circles.  And frankly, I don’t necessarily want them to.  I have a diverse set of friends, and quite frankly, I want to maintain boundaries between these friends, just as in real life a friend says something in private that you don’t go telling every other friend of yours and all the strangers who are their friends.

Furthermore, there are “non-people” entities that I’m interested in as well, such as groups that post on Facebook upcoming workshops, events, etc.  While useful, again it’s not something I want cluttering up (or publicly visible to my friends) my “wall.”

The only solution that I can think of is to have about a dozen different Facebook accounts.  However, apparently Facebook has something called “Lists” (found a blog entry on the concept) that might do the trick.  But like anything Facebook does, getting it configured right appears to require a lot of effort–effort which I don’t find much value in making for the simple reason that my visits to Facebook were something like once every couple of months.

Oh, and if you’re curious, while I’m also on Google+, I never visit it either.  I’m simply not a social networking person – my social life is quite full and enjoyable in the real world–these virtual social networking sites simply do not meet any need.  The only “social network” (to use the term loosely) that I participate in is the Code Project forums, because it meets my needs for interesting discussions, humor, and technical news.

So, will I return to Facebook?  I’m not sure yet, and only after I’ve taken the time to investigate this “Lists” thing some more.

Marc

Steiner on Thinking

What hinders people in the widest circles from having thoughts is that for the ordinary requirements of life they have no need to go as far as thinking; they can get along quite well with words. Most of what we call “thinking” in ordinary life is merely a flow of words: people think in words, and much more often than is generally supposed. Many people, when they ask for an explanation of something, are satisfied if the reply includes some word with a familiar ring, reminding them of this or that. They take the feeling of familiarity for an explanation and then fancy they have grasped the thought.

– from Human and Cosmic Thought, Lecture 1

Why Oracle Sucks Today – the return parameter must be the first parameter

For the last year I had abandoned Oracle’s ODP.NET driver in lieu of Microsoft’s ADO.NET driver, for the simple reason that calls to PL/SQL functions would never return anything but “0”.  I’ve been revisiting this issue, because 1) Microsoft’s Oracle ADO.NET support is being deprecated and 2) I need to get arrays (and possibly tables) working as parameters and return values, which is something that Microsoft’s driver doesn’t support but supposedly ODP.NET does.

So, I started off with a simple test,  why does the following fail (but works with Microsoft’s driver):

PL/SQL function:

FUNCTION get_int (i_something IN NUMBER)
RETURN NUMBER
IS
BEGIN
return i_something + 1;
END;

C# code:

public static void CallFunctionReturningInt(OracleConnection conn)
{
OracleTransaction trans = conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = trans;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = “TC_CODE.RECSET_CONVERTER.get_int”;

OracleParameter dbParam = new OracleParameter();
dbParam.ParameterName = “i_something”;
dbParam.OracleType = OracleType.Int32;
dbParam.Value = 1;
dbParam.Direction = ParameterDirection.Input;
cmd.Parameters.Add(dbParam);

dbParam = new OracleParameter();
dbParam.Direction = ParameterDirection.ReturnValue;
dbParam.Size = 4;
dbParam.OracleType = OracleType.Int32;
cmd.Parameters.Add(dbParam);

object ret = cmd.ExecuteNonQuery();

trans.Commit();

Console.WriteLine(cmd.Parameters[1].Value.ToString());
}

After much googling for why this fails with ODP.NET, I stumbled, quite by accident, on this gem (https://forums.oracle.com/forums/thread.jspa?threadID=387950):

For some reason only knows to Larre, your returnvalue must be the FIRST parameter.

(I think “Larre” refers to Larry Ellison, haha).  And a slightly more descriptive reason:

Just fyi, here’s the reason the returnvalue needs to be first. ODP constructs an anonymous block to execute the stored procedure, along the lines of the following:

begin :retval := myproc(:paramval);end;

and the default for ODP is to bind by position, rather than by name. So the fist parameter added needs to be the return value.

This is an absurd constraint, in my opinion, but it does work.