Tuesday, April 8

The "boolean" disease

I was just reading the linux kernel coding style guide, and I am once again frustrated by how poorly people understand Boolean algebra.

Here's the offending quote:

Functions can return values of many different kinds, and one of the most common is a value indicating whether the function succeeded or failed.  Such a value can be represented as an error-code integer (-Exxx = failure, 0 = success) or a "succeeded" boolean (0 = failure, non-zero = success).

Mixing up these two sorts of representations is a fertile source of
difficult-to-find bugs.  If the C language included a strong distinction between integers and booleans then the compiler would find these mistakes for us... but it doesn't.
 So what's wrong with that?

It's essentially a failure of the entire educational system that a statement like that goes unchallenged.

Here's an example of Boolean multiplication on integers:
│*.│ _4  _3 _2 _1 0  1  2   3   4│
│_4│  4  12  4  4 0 _4 _4 _12  _4│
│_3│ 12   3  6  3 0 _3 _6  _3 _12│
│_2│  4   6  2  2 0 _2 _2  _6  _4│
│_1│  4   3  2  1 0 _1 _2  _3  _4│
0│  0   0  0  0 0  0  0   0   0│
1│ _4  _3 _2 _1 0  1  2   3   4│
│ 2│ _4  _6 _2 _2 0  2  2   6   4│
│ 3│_12  _3 _6 _3 0  3  6   3  12│
│ 4│ _4 _12 _4 _4 0  4  4  12   4│

And here's an example of Boolean addition on integers:
│+.│_4 _3 _2 _1 0 1 2 3 4│
│_4│ 4  1  2  1 4 1 2 1 4│
│_3│ 1  3  1  1 3 1 1 3 1│
│_2│ 2  1  2  1 2 1 2 1 2│
│_1│ 1  1  1  1 1 1 1 1 1│
0│ 4  3  2  1 0 1 2 3 4│
1│ 1  1  1  1 1 1 1 1 1│
│ 2│ 2  1  2  1 2 1 2 1 2│
│ 3│ 1  3  1  1 3 1 1 3 1│
│ 4│ 4  1  2  1 4 1 2 1 4│

Notice how, if we restrict ourselves to the 0 and 1 we get "binary and" and "binary or".

Anyways, somewhere along the line, someone (probably Henry Sheffer) decided that "logical not" should be a part of boolean algebra. Essentially, it's "proof by vigorous assertion". Algebras existed before Henry Sheffer, and Boole's work existed before Henry. Henry's work proved an equivalence between logic and Boole's system - for the case where we restrict ourselves to 0 and 1.

But what do we gain from this?

Answer: not much.

Meanwhile, there's another way of formulating logic using 0 and 1 which gracefully incorporates the idea of logical negation:

Instead of using Boole's multiplication (which is defined on integers) we can instead use regular multiplication. And, for logical not, we can use 1-x. And that's all we need, we can use Henry Sheffer's approach to define logical or: x OR y is 1-((1-x) * (1-y)).

And what do we gain from this?

Answer: probability and logic can be seen as two facets of the same system.

Something like this:

│*  │0 0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1  │
│0  │0 0    0    0    0    0    0    0    0    0    0  │
│0.1│0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1│
│0.2│0 0.02 0.04 0.06 0.08 0.1  0.12 0.14 0.16 0.18 0.2│
│0.3│0 0.03 0.06 0.09 0.12 0.15 0.18 0.21 0.24 0.27 0.3│
│0.4│0 0.04 0.08 0.12 0.16 0.2  0.24 0.28 0.32 0.36 0.4│
│0.5│0 0.05 0.1  0.15 0.2  0.25 0.3  0.35 0.4  0.45 0.5│
│0.6│0 0.06 0.12 0.18 0.24 0.3  0.36 0.42 0.48 0.54 0.6│
│0.7│0 0.07 0.14 0.21 0.28 0.35 0.42 0.49 0.56 0.63 0.7│
│0.8│0 0.08 0.16 0.24 0.32 0.4  0.48 0.56 0.64 0.72 0.8│
│0.9│0 0.09 0.18 0.27 0.36 0.45 0.54 0.63 0.72 0.81 0.9│
│1  │0 0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1  │

│or │0   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1│
│0  │0   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1│
│0.1│0.1 0.19 0.28 0.37 0.46 0.55 0.64 0.73 0.82 0.91 1│
│0.2│0.2 0.28 0.36 0.44 0.52 0.6  0.68 0.76 0.84 0.92 1│
│0.3│0.3 0.37 0.44 0.51 0.58 0.65 0.72 0.79 0.86 0.93 1│
│0.4│0.4 0.46 0.52 0.58 0.64 0.7  0.76 0.82 0.88 0.94 1│
│0.5│0.5 0.55 0.6  0.65 0.7  0.75 0.8  0.85 0.9  0.95 1│
│0.6│0.6 0.64 0.68 0.72 0.76 0.8  0.84 0.88 0.92 0.96 1│
│0.7│0.7 0.73 0.76 0.79 0.82 0.85 0.88 0.91 0.94 0.97 1│
│0.8│0.8 0.82 0.84 0.86 0.88 0.9  0.92 0.94 0.96 0.98 1│
│0.9│0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1│
│1  │1   1    1    1    1    1    1    1    1    1    1│

So why the mixup?

In part: people are lazy. I know I'm pretty lazy about this issue, and sometimes careless of how I research it. But I'm certainly not alone. People mostly just don't care. And *that* says a lot about the value of education.

Education has a lot to do with satisfying the teacher, and not so much about historical accuracy. People like to refer to names that most people don't bother looking up (who has the time?). And of course, this suggests that educational literature is rife with mistakes - most of it is crud (but not all).

Still, there's the issue of naming. If "boolean" is the wrong name for the concept people are getting at when they talk about distinguishing between "booleans and integers" what are some good names?

One obvious name might be "logical". That's closer to accurate than "boolean". And that leads to "true" and "false" being satisfying names for variables of this type. In the above kernel style guide excerpt, I think it would be good to replace "boolean" with "logical value".

Another obvious name might be "bit". And a variable of type "bit" really ought to be able to represent the values 0 and 1.

But that won't stop fans of "proof by vigorous assertion", will it? For them, historical accuracy and utility take back seat to vehemence. It's actually kind of amusing to watch.

Resume again

I don't really need more work. But it's addictive. So I've been thinking about that alot.

Here's the position writeup for Gannett - they're looking for someone to replace me. It's nice to feel missed, in a sort of sad way. (I miss my friends there, and more than occasionally regret deciding that it was time for me to move on.)

Anyways, here's their writeup for my old position:

Principal Developer, Development & Integrations

The principal developer oversees the development and implementation of code for highly complex software applications.  They have high-impact responsibilities within the team and are typically assigned to the most critical and strategic / complex / high-risk undertakings. A principal is responsible for architecting the systems that make up the framework the rest of the organization works with and builds upon.

A principal must ensure the integrity and durability of the code base by both protecting it from substandard changes and by designing defensively to mitigate user error and abuse. As a system designer, a principal must also educate and mentor the team that makes use of these systems to ensure adoption and also to identify gaps in the system. The principal is well versed on the latest advancements in his field and regularly evaluates new trends and technologies to improve the framework.

Define and enforce overarching architecture strategies
Identify high-level architectural issues and document/develop solutions
Review and merge high-risk changes
Develop solutions to mitigate user error (eg. automation, validation, etc.)
Mentor and develop best practices for developers within the team
Regularly ideate and develop new high-impact innovation projects
Provide team training on architecture, strategy, and technology
Define best practices and guidelines for lower level developers
Work with other disciplines to help shape new products from a technical perspective

 Required Technical Skills
Bachelor’s degree in Computer Science, Computer Engineering or related technical discipline. Masters degree a plus.
9+ total years of software development and architecture experience with at least 5+ years designing and architecting enterprise web applications.
Experience working directly with senior Development and IT groups in an advisory role.
Strong object-oriented design and development skills.
Expertise in multiple technologies (JavaScript, jQuery, Backbone.js, Ajax, HTML5, Django, Python, etc.) across software engineering, security, data management, etc.
Experience in integrating with 3rd party REST API’s.
Experience with Agile/Lean methodologies, continuous integration, GitHub, Git, Test Driven Development.

Sunday, April 6


I had an occasion to deal with "upstart" last week.

Upstart is a project which replaces "init". The design intent is pretty obvious: allow independent packages to have components which run at system boot. The expressed intent is somewhat different: add new "scanning" functionality to init (https://en.wikipedia.org/wiki/Upstart#Rationale).

Wait, what?

In other words, upstart has reduced functionality from sysv init. It no longer supports /etc/inittab and that's probably a good thing. Simplicity is a virtue. But documentation is hard to find and with all of its modules and added features (it also has added features) it can take some study before you can do anything useful with it.

A typical use for /etc/inittab was: you add a line specifying some program to run, and init runs it for you. If the program exits, init will restart it for you. Nice and simple.

For example you might add a line like this:

work:23:respawn:/bin/su username -c /home/username/bin/dowork

This would run /home/username/bin/dowork as the user 'username'. There's more details here, but that's the gist of it. And if the program exits, init would start it up again (if you read the man page for inittab you can see all sorts of details about this kind of thing).

Well, with upstart, there's more you have to do.

First, you have to create a configuration file such as /etc/init/work.conf

For this example that file might contain:
exec /bin/su username -c /home/username/bin/dowork

And then you also need to somehow get this started at machine boot. One possibility is to add a line to /etc/rc.local like:

service work start

Another possibility involves creating /etc/init.d/work (which might be the same) and then symbolically linking it from /etc/rc2.d/S99work and so on... You can get fancy here and create start/stop/restart commands. You probably do not want to get into this kind of complexity unless you are building packages for other people to use.

And, of course, there's lots more possibilities.

But upstart currently is not documented very well, in my opinion. Specifically, there is nothing in the manual page for upstart which even hints at the need to run the service program at boot time to achieve what init does automatically. Instead, the documentation reads like it would start the service automatically when a conf file was placed in /etc/init/. (And that might have been true for some versions of upstart - but it's not true for the version I'm using in ubuntu version 13.)

And this is something that both the free software communities and the professional software communities need to get better at: documenting things properly. And maybe this is something colleges need to do a better job of teaching.

It's really hard, as a developer, to think from the viewpoint of the user. And it's really easy for the user to not connect with the developer (note that I've not connected with any upstart developers about this issue - at least, not yet). So this is a difficult issue to think about, sometimes.

Saturday, March 29

Google Search

I've been concerned, recently, about google search results. They've gotten... worse, much worse, than they used to be.

I'm also looking at google from a variety of other perspectives, as a user and as a potential employee. There's still a lot of good stuff there, but it looks like whoever is managing search either

(a) Has forgotten about long tail issues, or
(b) Is taking the concept of "fail as good business" too seriously, or
(c) Prefers other search companies to take the lead, or
(d) Is an idiot, or
(e) Is reacting to regulatory pressure, or
(f) Are overwhelmed by spam, or
(g) Something else...

Yeah, basically, I have no clue what is going on. But I am presuming some combination of some of the above.

But, it's pretty clear that if I want good search results I should be using other search engines, and falling back on google search only when my habits get the best of me.

And we should probably expect something similar from google's other services - and maybe that is the point. (Though, more likely, this is the result of "professional management" in the sense of "preventing work and taking money for the privilege of having presented the concept in an impressive fashion".)

On the other hand, philosophically speaking,  anyone working with computer systems needs to have contingency and backup plans.

Still, I am not sure how to view this - are they crying out for my help, or are they warning me to stay away (obviously neither of those, in a very real sense, but maybe you get the gist of how I need to think about this in terms of my own future plans).

Maybe it's time for me to give up on computers as a career path, and take up farming (in the sense of growing stuff out of the ground)?

Meanwhile, I'll point out that the failure of google search is something of a marketing and management failure as well as a technical failure.

As I understand it, one of the roots of the issue has been a focus on the first search result as a metric of success, and a focus on search speed as a metric of quality. And these are indeed important goals. But they cannot sustain the company by themselves, and while breadth of search is available in a variety of ways, those extra "useless" search hits provided a variety of useful information about potential related searches, and about the communities of information that one had access to.

But another issue is spam. To pursue its goals, Google needs to deal with money. And money - like any other human endeavor - leads to too much of some things and not enough of others. In other words, "spam". There's a huge element of people trying arbitrary things until they find something that works for them. And, another issue is that one person's good idea is another person's bad idea.

Personally, I'd take spam as early efforts at artificial intelligence - a subject worthy of study and research. And, of course, a good way of attracting attention to yourself if you are controlling or distributing it. (Pro tip: do not annoy too many people unless you actually want to attract the attention of the really violent types.)

Google has started to take a stab at this issue with google groups. Google groups makes a fair set of assumptions about how people organize their lives and their information. But somewhere in the process a lot of information that used to be available is no longer there.

Anyways, what Google currently conveys to me is that they do not have a clue and that companies that they service do not have a clue. And this is silly because the people within Google definitely have clues. So how is it that the corporation does not? This is something of a business opportunity - now is probably a good time to cash in on all the clueless businesses - but it's also something of a warning of things to come.

Good investment opportunities for the long term are probably not computer related at all, and probably not money related at all. Instead, make sure you have direct contracts with farmers and construction outfits and so on. If you want a safe future you probably need to make arrangements to bypass monetary transactions entirely and have direct access to the underlying services you need. This means food, water, something to keep you relatively dry, something to keep you warm, and so on.

Money, meanwhile, is looking more and more like it's mostly only going to be good for paying taxes.

I sure hope I am wrong about this, and that I am just being grumpy.

Saturday, March 22

What Next?

Take the following observations with some salt. None of them can be completely accurate, though they're not too far off the mark.


Failure is something to be afraid of, or not. It's not something to avoid, however. It's a matter of perspective and an ongoing aspect of life. It's also rather useless if you do not learn from it.


Goals are something that, when you achieve them, you go on and do something else. So what do we call things that need to be done over and over? That's "routine", no? Stuff like eating, sleeping, exercising - these all fall under the category of "routine" rather than "goals". People like a certain amount of routine. People like a lot of routine, actually. We also like to find ways of distracting ourselves from it.

Good and Evil

Knowing what these are means you are not capable of learning what they are. But other people's points of view also matter. Most people have rough ideas of what "good" and "evil" is, but this gets messy when you look at different intervals of time. And this gets even worse when you try to capture these concepts using words. And perhaps that's enough said about that particular topic.

Exercise and Pain

A certain amount of pain and destruction seem to be inevitable - we carry that inside us. If we do things right, the pains are minor and build us up. If we do things wrong we wind up with too much (the healing process takes too long) or too little (we are not adequately challenged). Freedom represents the right to identify the rate you are comfortable with.


Risks are unavoidable, just like failure. We all die sooner or later. It's generally a good practice to identify them, though.


Money is something you use to avoid work. Its primary use is to propitiate yourself to the people who have decided that they represent "government", which in turn is a collection of people who have gone so overboard in making things change that they are now in charge of discouraging further change.


Words, and their significance, depend a lot on our frame of mind, frame of reference, and background and history. They represent a shared context, they help us share our experiences. Assuming we want that. (Sometimes we do not.)

Tuesday, February 11

Google - strategic thinking

I have been observing Google being in some pain - search results are no longer visible which used to be visible, and sometimes "used to be" is "just a few hours ago".

I do not have enough insight to know how to fix these issues. I imagine there's a lot that needs to be done in a lot of different areas.

I am not even sure if all of these issues need to be fixed *within* Google. If Google is reflecting internet outages elsewhere, then those problems would need to be fixed elsewhere. (For example, my particular searches were focused on Debian - if Debian is failing for lack of interest on the part of its developers then maybe I ought to become involved with them again.)

Meanwhile, another issues has to do with the nature of management and corporate relations.

<personal introspective aside>

First, note that no one should want me to be a manager (unless someone who falls asleep in meetings and hates managing people is your ideal of a manager). I can help people, I can give them suggestions, I can see all sorts of good things in how managers deal with problems, but that's not me. I do *not* envy the job of a manager. Managers need to deal with all sorts of failures (that part is fun) but they also have a need to be accepted as being correct. And that need to be right can make things really difficult for them in a way that I do not enjoy. People are tricky to deal with.

I have found that I rather like people being upset at me, but only when I can then address the issues they are upset at me about. But I get stressed when someone gets upset at a person other than me (perhaps because those problems tend to be "out of bounds" for me to fix?).



Let's imagine that the problem included dead weight personnel within Google. How should that be dealt with?

One issue is that people tend to like to fix problems. If they are being dead weight quite likely they do not understand what problems they need to fix and/or how to fix those problems. Sometimes these issues can be fixed with some simple announcements or mentoring. Like, maybe:

"Google is doing great on 'hot topic' searches, but we are losing ground on 'long tail' searches. While it is completely appropriate to focus on fast responsive searches, we need to also have some way of returning results for more refined searches."

Hypothetically speaking, google should have two kinds of search backends - one which is constantly being updated, and another which is more archival. The archival backend would focus on "cool" content (see also "cool url") and would also be useful for isolating problems: recognizing spam, recognizing trends, and generally filling in the gaps in the "hot" content.

But let's say there are good reasons why Google doesn't currently do this. Regulatory reasons? Malicious hackers? Management priorities? Budget issues? Catastrophic bugs? Those reasons would be worth studying and investigating. For a persistent problem like this, there's going to be a trail of illogical decisions and subtle clues to follow and comprehend.

And, what to do about it?

Well, sooner or later, Google is probably going to have to split into multiple companies. It already has regional locations, so the trends are already in place. I'm not sure, though, how it would split. Would it get hit by a regulatory hammer? (Following the model set by Standard Oil and AT&T?) Or would it follow any of a variety of other models for how corporations spawn? (subsidiaries, franchises, contracting, etc. etc.) Honestly, I do not know.

<personal introspective again>

Personally, I have applied for some testing jobs - they seem ideal for me to learn about the problems from the inside - and I've also made a few noises about hiring on for Google X (since that potentially satisfies a "social good" urge I have nagging at me). My sense of ethics (or at least my lack of tolerance for conflicted goals - I hate disappointing people) has me only applying for work at Google, but that can't last indefinitely. Eventually, I will either hire on or start looking elsewhere and I plan on being very upfront about all of this with whoever I work with. If I take a job a company that does not want me to work for Google, that will be that until they are done with me. If I take a job with a company that is comfortable with me heading off to Google, I think I would be ok with that (but whether I switch jobs would depend more on how much fun I think the job would be than the payment arrangements).

My last Gannett paycheck was yesterday, and I will need to file taxes before I have a really good idea of what my finances and budget will look like and how that will effect my job possibilities. I am having fun working for nothing, I just need to watch out so that I do not procrastinate too long.


* * * * * old version follows * * * * *

Google, it seems to me, is being raped, by success. (Or at least that is how I, as a rape survivor, view the current situation.)

And this matters. It matters for me (or might in some number of months, when I need to find a new job) because information resources that should be available are not. It matters for you because you also need some kind of access to information.

But going from an observation to a useful plan of action can be tricky. If you solve a problem the wrong way you get the wrong kinds of failures. From my point of view, failing to fail is a good kind of failure, and failing at finding publicly available information which was available a few years ago, or an hour ago [and I've been experiencing both, a lot] is the wrong kind of failure for a search engine provider like Google.

So, what to do?

Well, if success induces failure one clear solution is more success, eventually the failures will come back and get rid of the problematic success. Or, in plain english: this current strategy is going to eat Google's bottom line (and I have also seen what I consider significant evidence that it already has been eating Google's bottom line). But keep in mind that other people *will* have different perspectives from mine.

See, one  issue is that one individual can only do so much. But another issue is that different people will have different ideas of "good" and "best". So Google's sheer size is going to result in different groups of people pushing in different directions.

Put differently, thinking of Google as an organism, it's maybe approaching time when it's time to split apart, or give birth or something of that character. Of course, in some sense it already has been - with the various regional locations. But the more successful it is the more regulatory pressure it will experience and just like Standard Oil and AT&T we can imagine something similar in the future for Google itself.

Another approach might involve reaching out and creating voluntary working arrangements with other search engines. Of course, this gets back to potentially looming regulatory issues.

But those regulatory issues are not the only problem. A real issue has to do with the flavor of information and the nature of exchange systems (such as money) and the nature of success.

Once upon a time, the internet was largely academic in nature - the information available thus intrinsically had an academic slant and this reflected in search results. And then came spam (high volume, low quality advertising), malware, social media (low volume, varying quality interactions), dating sites, etc. etc. And lots of money. How to manage this all?

I have some ideas, but a lot of them are still pretty diffuse, I might not be the right person to really solve these problems. But I would (rarely) like to have the option of searching for spam, (more often) like to have the option of searching for advertising, (quite often) like to have the option of searching within the prepackaged search classification system itself to find the right way of expressing to the search engine what it is I am currently trying to search for.

But none of that is really meaningful if the content behind the searches is offline. So maybe more funding is needed for historically valuable sites (the wayback machine, for example, and/or also long running sites whose robots.txt do not exclude search engines and whose content seems to be stable over time). Maybe instead of (or in addition to) hiring people and buying up promsing companies, Google should be giving prizes to the most valuable website of the year, or whatever else.

And, in the long run, Google is going to need to address other forms of information and other modes of information delivery and other concepts of searching for information. But it scares me that information that I used to be able to find easily, through Google, is now offline. (And I have tried other search engines also - they are not necessarily much better.)

In the shorter run, it might be good if we see more hints about how Google has classified our search. And I would really like to see some kind of "historical search" option. Maybe this is slow and maybe this should not be the default - people like quick answers - but when I try to refine a search (one that used to get a million hits) and I get nothing? Something is very wrong.

But solving these strategic issues does not really interest me, personally. Or not much. These are large scale problems and will require a lot of people acting together to resolve them. And I am just one person. So while I can be aware of these things and give my perspective on them, they only attract my attention as a passing interest.

Also, I currently only have an outsider's perspective on Google's issues. What I'd really like would be to get in and admit total ignorance of how things work. I'd like to work on the systems Google uses internally to find failures in the search engine itself. And by failures I do not mean these administrative failures or strategic failures but actual machine failures. I learn by doing, and I have a lot to learn.

But maybe not this month. I have a variety of other things which also are demanding my attention. Problems which need solving. And I expect that it is best, for now, if I deal with some of those.

Still, this kind of thing keeps nagging at my awareness, so I have been thinking long and hard about why I am seeing this. Why is this happening? Hackers? Neglect? "Privacy"? Regulation? The sites being referred to going down?

I imagine it's a bit of all of those. Or maybe Google is just too successful to sustain itself?

Saturday, February 8

Suicide Hotlines - a Mishandled Resource

I have been thinking about a lady I once knew, who committed suicide.

It seems to me that our suicide hotlines represent a gravely mishandled resource.

If someone is seriously contemplating suicide, that means that their world view is incredibly bleak, and they want to make a difference. But being willing to accept harm to oneself should mean that they are willing to tackle the hardest and riskiest problems and issues.

So, to me, the disease here is actually a problem in the structure of our society - that these people do not have proper access to the sorts of problems they feel driven to solve.

How do we solve this?

Thursday, January 23

A list of topics organized to be vaguely resembling a resume

This is a stream of thought - I am not sure if I want to turn this into a resume or not. I am looking for new challenges - for the "right kind" of opportunity, and for that I need to define what "right kind of opportunity" means for me.

I've since refined some of this into a resume, and am adding references. I expect to continue refining my thoughts about what I want to be doing, and I will also be trying some non-employment mechanisms for sustaining myself.

Friday, January 10

Colorful past?

I have a somewhat colorful past.

For example, I was introduced to anal sex by one of my "cousins" (second cousin, I think - I have a lot of those), when I was three. That did not bother me all that much, nor did it appeal to me. Anal sex has all the attraction for me of taking a shit when I am constipated. I understand other people seem to like it, but sometimes I wonder about such people.

What did bother me was the social situation surrounding the issue. As near as I can tell (I was three - my vocabulary was limited), this guy threatened my sister in some way to me, to keep me quiet, and also badmouthed me to my parents, to have them keep me quiet. I'm not sure exactly what he accused me of, but when I tried to accidentally bring up the issue with mom, she did not understand me and I took that as a sign that I should not be discussing the issue.

And that was something of a struggle, being brought up with an acute awareness of people's sexuality and thinking I was not supposed to talk about it. By the time I reached the age where it's socially acceptable to be aware of sexual issues, I was so tied up in knots about sex and so habitually trained in expressing reluctance that I literally fled from everyone I was attracted to. I'm that way to this very day.

Mostly my life growing up consisted of reading - that was how I balanced the imperatives I felt I was living under. And, both of my parents had a background in education. So on the positive side, I have a relatively good educational background. I am also quite comfortable with failing, which does good things for my learning capacity.

Still, this particular set of pressures has also left me without some basic social skills -- not many people are comfortable associating with someone whose reaction to most interesting social situations is to flee.

On a related note, I have been told that the guy who did this to me/introduced me to sex has had a troubled and unhappy life. I do not know the details.

On another related note, I have had a worse experience as an adult (just once, but that one left me bleeding and worried about HIV and too self-conscious to report it to the police). That was rather awful, but it also wasn't until after that experience that I felt comfortable enough about the concept of sex to approach another person in a normal fashion. (Note that this was in the '80s - and as near as I can tell from recent statistics the internet availability of pornography has actually reduced the relative levels of sexual assault - I think people are maybe a bit more comfortable talking about sexual issues and I think that's a good thing.)

So, my sexual identity? I am not sure I have an orientation. I appreciate sexuality, and I see it in all aspects of life (including math!). I mostly avoid people because I am confused both by society and its rules and by my own reactions.

I appreciate hetrosexual activities, a lot. I find occasional beauty in both gay and lesbian activities, as well as bi and trans and other such things. But I keep to myself - I see no value in offending people and I have observed that I throw myself too hard into relationships. I'm comfortable being an introvert and a loner, and while I recognize sexuality as an aspect of even casual relationships that's not how I was raised, and I need a lot of time alone.

I'm not sure what that makes me, but I am starting to recognize just how much my instinctive efforts to flee being popular or looking nice has sabotaged my life.

Or has it? There are some good things to be said about being comfortable being alone.

Anyways, here is some proposed law related to my experiences: https://www.govtrack.us/congress/bills/112/hr1981/text

I think an issue here is that law (and government, and civilian society) all want to do what is best - for themselves, for others. But any codified system is necessarily backwards looking, and aimed at the worst of past problems.

Meanwhile, child sexuality is a thing, and we each develop in our own way. And parents are known for getting really upset, sometimes, when their child gets upset. Other parents are known for tolerance. How do we balance these?

We know from statistics that young girls have been getting pregnant, and raped, by the millions - far more than can be accounted for from criminal statistics. We know from the news that basically every Christian organization has had some contribution to these statistics. Christians have historically dealt with this by recognizing that everyone is a sinner and by asking each other to stop when people were bothered by it.

I know I am no saint, here, but I also have some personal experience, as an adult, from the other side of the fence. As I currently understand it, a young lady tried to commit suicide, because I did not offer her the [sexual?] closeness that she needed. That weighs heavily on my conscience.

As I understand it, she hooked up with another family that gave her the sexual release she needed, and she is doing better now. Perhaps sad and lonely, but because of current law and social customs I have been staying a long way away from her. I am not proud of this, I am sad - what does it say about me that I would place my own well being above hers?

But, given how our society is currently structured, and my own slow abilities to form thoughts and connections, I am not sure what I could have done that was better. I know, from statistics, that other people make other kinds of arrangements in their lives, than I do, but it still hurts, knowing that I have hurt another person like this.

For now, I just try and stay away from anyone that might be personally attracted to me. That fits my general inclinations and saves me from having to agonize over the hurt I might be causing people. Well, not exactly, people are still going to be lonely, and hurt, and I am probably contributing to that. And my lack of social involvement is not making any of this any better. Maybe if I sink myself into other activities - coding, educational concerns (from a "safe" distance!), and maybe some physical exercise - I can get past the sadness inherent in some of our social structures and biology?