Category Archives: Ideas

Society has it backwards

As one demonstrates more and more competency, society should withdraw its challenges to permit original paradigm-changing thought. What is actually done is very close to the exact opposite, in which more skilled people are simply given more and more work.

Granted, if you’re motivated enough, it doesn’t matter what society does; you’ll create a lot of work for yourself regardless. But at least it would be original work.

Intuition in sensate disciplines

Bringing intuition into an intellectual discipline dominated by sensors is like bringing the third dimension into a 2D world. You can essentially ignore all obstacles because they don’t block your mode of thought. That intuitive leaping allows us to make startlingly accurate conjectures with very little data.

Of course, while I can probably pass a business theory course in my sleep (having just seen what their tests are like), I still can’t effectively market. Theory is one thing, practice another (and actually understanding people is a whole different beast from any sort of theory). So it’s not as if there’s any material advantage. It just means I don’t need to bother going for a formal MBA because nothing will stop me from learning from the books.

Pairing the appropriate intuitive and sensing types in appropriate roles is still the best option, of course. If you miss details in business, they will eventually be your undoing.

Executives and names

I hypothesized that most executives have names near the beginning of the alphabet. I decided to check this hypothesis on Google’s list of executives (sample size 42; I left out the board of directors), ran a simple linear regression analysis, and found a trendline:

y=-.106x+3.089

Where x=1 signifies ‘A’, x=2 signifies ‘B’, etc. Given that the maximum bin range (one bin per alphabetic character) was 4 and the domain contains 26 variables, this is a decently significant trend. (This is a cursory analysis; I’m not doing anything particularly powerful, so pardon the lack of t-tests and other heavy-duty analysis techniques).

There were 27 executives with last names in the range A-L and 16 with last names in the range M-Z. The graph was trimodal, with peaks in C-D, L-N, and S-T.

In my opinion, viruses are alive

Though incapable of reproducing on their own, viruses do contain DNA, and, more importantly, act functionally as life because they participate in evolutionary processes. They can indeed split off into new species, and there is a hypothesis that life began with them (although if they require cellular machinery to replicate, I fail to see how they could have preceded cells). Therefore, I consider them living. You may disagree, but I simply wanted to make my reasoning clear.

Immersion as an Art Form

Stepping outside on a rather nice crisp fall day, I realized that the replication of sensations such as the touch of wind on one’s skin as well as images and sounds is bound to become an artform as soon as technology reaches that level. I’m looking forward to it, though I maintain that nothing compares to the genuine thing.

Yet more problems with CSS!

One tends to repeat oneself a lot in a stylesheet. This is sort of tied to the overspecification issue I mentioned earlier. The situation that made me realize this was one in which I was using float and clear on two separate elements (due to the fun property of floats existing outside of the flow, I had to use a spacer element with the clear property to ensure that both floating and static content fit within the container – the first time I’ve used a spacer element since I began using CSS some 9 or so years ago).

Change the float to left, change the clear to left. Change the float to right, change the clear to right. Any other combination didn’t work (as I had another float on the left, I couldn’t use clear: both – by the way, while we’re suggesting improvements to CSS, it’d be nice to be able to clear individual floats while preserving others in the same direction). For content outside of the flow, change the height in one place, change the margin in another. There’s duplication of content all over the place.

Behavioral programming

This might already exist (and might even exist within OOP in the form of interfaces), so bear with me:

(If by some exceedingly rare chance this idea is implemented, feel free to use terminology less dependent on American spelling than “behavio(u)r”. In reality, if it is adopted, it will probably be at the suggestion of someone more prominent who happened to have the same idea at a different time, so I don’t even know why I bother to post my ideas).

It seems that we should be more concerned with what an object does than what it is, as we are with OOP. Therefore, it seems to make more sense that we should specify behaviors rather than objects and grant variables specific sets of behaviors, or capabilities. An example of this sort of design (and the one that inspired this idea) is the STL. For example, using OOP, if we have three variables, representing a bicycle, a car, and a person, we can declare them to inherit from class MovableObject, which would have variables such as position and velocity. However, this generalizes a little too much, and now we suddenly need to inherit from some other class (or define person as a base class) to include things like name and eye color. What if we instead designed behaviors such as “go” that could be modularly added to bicycles, cars, and people (or whatever else; we could add it to bananas if they had the appropriate variables)? What if we could attach and detach these behaviors from individual variables to include within-class variation? For example, suppose Mary is a person but is paralyzed and can’t move on her own. We could simply remove the “go” behavior from Mary to represent this fact without having to make a statement about all people in general.

This alone isn’t enough, however. We need to provide goals, else the program won’t have much of a purpose. Say we want to design a program that will make a chicken cross the road:

//How do we cross the road? Execute go, passing all of the to “requirements” as arguments to the behavior and optionally specifying additional ones.
to crossRoad() execute behavior go(OtherSide, additionalArgs1, …);
to crossRoad() execute behavior walk(OtherSide, additionalArgs1, …); //Or walk, which is the same thing, really.
to crossRoadTwice() { crossRoad(); crossRoad(); } //etc.

//It only makes sense for things with positions of type Point to “go”.
//Note that we don’t need to know whether the object in question is a person, car, banana, whatever…

//”Requires Point position” can also be valid, and would cause the behavior to return false (and thus the goal to fail) if executed on an object that doesn’t have a point. “Provides Point position” will actually add a position attribute to the object if one doesn’t already exist. (If one exists by a different type, it’s an error).
bool behavior go(Point where) provides (Point position) {
position = where;
return true;
}

class Chicken {
hasBehavior go; //Chickens can “go”.
//Point position is implied.

}

int main() {
Chicken c;
c.tryTo(crossRoad()); //true.
}

If we wanted something more traditional, we could statically define class properties and “require” instead of “provide” them on the behavior. This essentially allows a more object-oriented approach, such as the taxonomic one practiced today. Conversely, we can also modify behaviors (and thus provided but not required structure) at runtime on individual instances. For example, let’s see how Mary would work:

class Person {
hasBehavior(walk);


}

int main() {
Person Mary;
Mary.removeBehavior(walk); //Mary can’t walk.
Mary.tryTo(crossRoad()); //false – Mary has no way of crossing the road, since she can’t walk.
}

This can be extended, too. We can add Prolog-style rules, for example, or couple “requires” with interfaces or type checking, and that’s just scratching the surface of the possibilities.

Now that I’ve written this long thing up, feel free to ignore it.

ML + Algorithms

There’s an idea that simply won’t leave me alone – coupling largely deterministic algorithms with machine learning capabilities in order to guide behavior (but not completely determine it, as with genetic algorithms). For example, if we want to search for objects with a color attribute of red and we know that red clusters with blue through ML techniques, we can do a general binary search on a blue (or red) object and focus there. In this way, we can give an ordering to data that may not necessarily have as natural an ordering as an ordinal number. If the ML doesn’t dominate the algorithm, this could potentially speed up the creation of indices and search operations, among other things.

Just a thought.