Haters: Sometimes They Really Don’t Want to Be You

“People hate you because they want to be you.” In so many words, this and phrases like it are uttered time and time again to the downtrodden, misrepresented, misunderstood, and supposedly unique persons. The phrases are thrown around in so many different syntactical permutations, each attempting to place varying sympathetic emphasis on the victim of the perceived indifference, and always intended to antagonize the perpetrator(s). The goal, invariably, is to fortify the self-esteem of the victim and to embolden them in remaining vigilant against nay-sayers from all perspectives so that they will continue to be the individuals that they are. Altruistically, all appears to be sound. The invoker of the phrase, if not the victim themselves, garners respect and adulation from the victim and perhaps from others, and is thus considered to be morally aligned with those who see this as such. The antagonist, left wilting away in their now obviously futile attempt of degradation, sulks back to the cave from whence they emerged and life carries on unabated.

There is something a tiny bit disingenuous about this assumed intent however. It is certainly true that there are persons who awake in the morning with the sole intent of making their peer’s lives as miserable as possible. Others will prey upon the perceptibly socially weak for only the deranged satisfaction that is to be derived from it (and of which only they themselves are capable of indulging in). For these people, where attempts at curbing their considerably disagreeable behavior either are derailed from the start and for all of their time or simply won’t emerge until far later in life (it is possible for one to learn the error of one’s ways), the psychological, and sometimes physical, barricade will need to be constant. Instruction and consistent enforcement of the intolerance for indifference should always be practiced regardless. Other times it is possible that a practitioner of bigotry is acting so out of the pretext of malicious propaganda; osmosis from family and social circles, assiduously preached misinformation by cornerstone figures in communities, and cultural slants that should really be going in the opposite direction just to name a few. These people can be dealt with in a different manner which attempts to bring them back from the brink and into moral favor. These are mistakes of their peers bubbling outward through them to which they cannot be blamed exclusively for (for their own actions, of course).

Now despite the misgivings about my approach to this topic, one thing should be made abundantly clear by now but I’ll do you the favor of spelling it out. In no way, at all, do I now or have ever in the past condoned or considered as a good idea any act of indifference or bigotry. In a considerably more plain way, bullying is not something I either associate myself with or think is tolerable. So then, what really is so disingenuous about the aforementioned phrases?

There is a subtle tone of irony lurking in the shadows of the phrases. While attempting to defend the individuality of the victim, it simultaneously alienates the individuality of the assailant and presupposes only a wanton masochistic chameleon-esque adaptation of the individual from the victim by the assailant. In an effort to reinforce and reaffirm the individual that is considered to be the victim, we assert by default a spiteful copy-and-paste attempt by the assailant as the only impetus for this and the reflection of this desire equates to nothing short of the oppression and vitriol which they practice so often. Imagine then how this sounds to you, when you consider a bully of this sort who wakes up in the morning: “I REALLY REALLY want to be just like John, in every way possible! In order to do that, and to emulate perfectly his individuality, I’ll be sure to cause him nothing but grief and use socially sensitive aspects to make fun of and torture him with!” That’s not to say that this sort of idiotic notion isn’t conceived at one point or another within a mind; it’s plausible that it would be. It’s also plausible, and far more obvious in fact, to imagine that in an attempt at emulation of an individual, one would be more likely to act or behave in accordance with the target of the emulation as is the case with ridiculous fanaticism embraced by us little people in the wake of celebrities. When considered in this way, it’s hardly a significant draw of the intellect to make this comparison. Having established that, the phrases almost turn on themselves. For they now decree that the bully, in a veil of such extreme obsessive fanaticism over their personal celebrity, that being the victim, wanting nothing more than to emulate perfectly the aspect of their individuality that is desired, they resort to extreme methods of abuse, punishment, and torture – none of which place them in a position to assimilate this so sought after trait.

The overarching ignorance here is that when invoked, phrases of these sort are literally and figuratively no less shallow than the acts of aggression to which they are intended to defend against. They do not address the questions of root cause; what were the environmental factors that together culminated into the mess that is the bully? In a similar note, what other environmental factors facilitate the notion that certain seemingly arbitrary traits about people are points of both isolation and desired attack? The obvious irony here is that in an effort to achieve and maintain individuality, one runs the risk of sometimes severe scrutiny for doing so – but why is this the case? Why does it just seem like bullies come out of the woodwork and people are consistently in a reactive state regarding them? At this juncture, the only purpose these phrases serve is to reaffirm the proliferation of personality and in an entirely unhealthy way.

No one doubts that in practice, bullies are quite real as is the damage that they inflict upon others; this alone warrants reaction to the immediate causality. This aspect shouldn’t ever be downplayed in the slightest. I myself have been subject to bullying of an extreme sort, resulting in physical violence, whilst my peers, pitiless, callous, and vicariously complicit through cowardice, stood idly by as if it were all just normal. “Oh he goes around punching everybody!” – a remark I can quite acutely recall from someone I can only assume had been a victim of this bully, and would have thought far less of this person if they weren’t. So yes, on a case-by-case basis we are and should be required to deal with it blow-for-blow. Simultaneously, and this parallelism should be marked quite carefully and distinctly, the root cause should always be considered and this falls well beyond the scope of immediate causality. A place where “They’re just jealous of you” carries with it about as much intellectual nourishment as piety does in any domain.

What then should we be looking for? How do we actually address the issue of bullying? These appear to be hard questions because frankly they are. However, when asked differently as How do you address the cultural blemishes that both foster and permit this behavior?, it becomes slightly easier to put into scope but nonetheless leaves massive hurdles that are in fact able to be vaulted. To get started in the right direction, one has to realize first that none of this behavior is genetic. No one person is genetically predetermined to exhibit violence of this sort. It is in fact the social environment in which the child grows and is continuously exposed to which begins to kindle this kind of behavior. Were they raised in an environment where reciprocity and positive mutual relations were pinnacle in their success? Or were they subject to competition for both basic and contrived human needs where the only order of the day was to simply be the best? These are none of them genetic in the slightest. You are not born with an innate understanding of Capitalist America, neither of Communist China, neither of tribal alignments. There is no innate desire to ascertain all power and accumulate all material possessions in a fashion that would make even the most fanatic of barbarians shutter in horror. You are human, all too human.  You are molded by your family, your friends, your society, your communities, your government – all attribute in some way to the result that is aged you. Do not for one second discount the supposedly trivial things for sometimes they are in fact the ones most likely to subvert the subconscious, thus placing you on an entirely different path.

Next we have to ask ourselves if the society that we participate in today is conducive to our well-being. Do we really think that the bullying and violence are not actually a byproduct of the stratification, hyper competition, and near-cancerous proliferation of personality propaganda combined? Statistical studies continuously show that certain areas of the U.S. are far more violent than others, indicating an uneven distribution of our so-called genetic predetermination. However, the same imbalance can be seen when these studies are applied in the scope of the world. Different cultures yield different persons. They’re shaped in much the same way as we are with regard to modality: family, friends, and communities. The difference is nearly strictly in that of perspective and what is considered as the prime predicate for the sane and pragmatic survival of the group. Do they feel that the only way to survive is to beat down all others in a game of perpetual conflict, simply to see who can piss further? Do they feel that egalitarian methods of sharing and open collaboration are the best ways to go? Isn’t it possible that maybe, just maybe, the arena in which we nurture our children in isn’t really the most advantageous for producing not only non-violent and open-minded persons but also happy ones?

The victim and the bully, much like everyone else in our society, is and has been formed in a way that makes them who they are. A confusion of supposed predeterminations with what are instead quite malleable environmental factors leads us to consistently look in the wrong direction for solutions. For to look at the true causality would be to put to scrutiny the very same social system that we live in and most are unfortunately unwilling to take that step for one reason or another; most of which are ineffective as legitimate excuses. Ensuring that not only our children but us adults as well know that open communication, collaboration, and plausible rationality is critical. Competition, contrived scarcity, over-inflation of X Politics, blind servility – these are none of them useful when helping to educate and propagate equality and pure altruism.

So no, haters sometimes really don’t want to be you. And you shouldn’t aspire to reciprocate that even in defense.

Configuring Apache Cordova with JetBrains WebStorm

Stepping back into the mobile arena after a bit of an absence, I decided to take a bit of advice from a gentleman who sat in on my 2014 Ohio Linux Fest lecture “Android Development on Linux” (generously, and anonymously, curated on the Internet Archive) and look not just at Android but at cross platform. For the longest time, this has always been a topic of considerable consternation. One has to think, upon reflection of the history of technology, that we’ve experienced in some ways a regression to the days when cross platform littered the landscape and was, in certain respects, paralyzing. Fortunately for myself and others, we weren’t the only ones who recognized this. Some have taken action to help ensure that we do have a shim solution for these cases, and this is where Cordova enters the fray. Being derived from PhoneGap and adopted by Apache, Cordova attempts to bring to mobile developers the ability to write a program using web languages such as HTML, CSS, and JavaScript and deploy it to multiple platforms including but not limited to Android, iOS, and Windows Phone.

As I mentioned before, the focus this time around is on cross platform development. I had a little taste of PhoneGap a few years ago and it never really stuck but there seems to be a little community acquiescence toward Cordova. Not to say that I’m following the grain too much here because there is a genuine personal interest in the framework on my part, but I want to be able to help people as well.

Now, the development environment that I use is detailed here. As you should be aware, you may want to keep this in mind proceeding forward.

  • OS: Linux
    • Distribution: Ubuntu 15.10
    • Only the default upstream repositories are used in dpkg
  • Arch: 64
  • IDE: JetBrains WebStorm (I have a license for this; the unlicensed version only works for thirty days).

As the title indicates, this tutorial is specific to configuring WebStorm to be used with Cordova. As such, there will be a lot of WebStorm-specific information here that, if you were using an alternative IDE, may not be applicable. You’ll want to follow your IDE’s integration instructions or deduce it on your own at that rate.

Prerequisite – NodeJS/NPM

I’m going to be frank here – there is very little that I know about NodeJS other than what it is, that it’s been the subject of quite a lot of hype in the web development community since its conception, and that it is a requirement on behalf of Cordova. While there is still quite a bit of homework that needs to be done on my part, I have been able to successfully install and configure it so that it works for the purposes of Cordova. This will be the topic that is covered here.

Node can either be installed by downloading it in a pre-compiled package from the Node website or through your distribution’s default repositories. If you elect to download from the Node website, you’ll need to be responsible for manual maintenance of the package and for extracting it to a location that you have access to via your permissions or ACLs (if your file system supports them). The method I used was installing was the former since updates are automatic and installation is performed in the appropriate directories. This can be done with the following command

sudo apt-get install nodejs

Once this command completes, you’ll have Node installed on your computer. To test this, you’ll want to start a Node interpreter by issuing the command nodejs at your terminal. If you’re brought to a new prompt lacking the traditional user and host name information, Node is all set to go. You’ll need to press Ctrl+C twice to end the program and return to your traditional prompt.

NPM, a pseudo package manager for JavaScript libraries, is required since this is the preferred method for installing Cordova. It will also help with obtaining Cordova plugins and other JavaScript libraries that you might want to use later on for development. It can be installed in the same was as Node was with the distribution’s package manager.

sudo apt-get install npm

To test the installation, you can simply issue npm at the terminal. If you get back a page of text indicating the usage syntax, NPM has been installed successfully.

Installing Cordova

When you’re using WebStorm, it’s apparently possible to install Cordova entirely through the IDE once you have configured it to locate both Node and NPM. These steps, however, are a little convoluted to follow, especially with all of the potential pitfalls you’re going to encounter, so we’re going to avoid this entirely and install Cordova with NPM on the terminal.

NPM has two install modes: local and global. A local installation will create a node_modules directory in the working directory where the command was issued at and install the module there. The global installation places all of the modules in a consolidated directory and makes that available to the system through environment variables; Cordova is best installed in global mode (recommended by the official install documentation). The installation can be performed with a single NPM command

sudo npm install -g cordova

The installation, when in the global scope, will need to be run as root hence the use of sudo.

Caveats… Already

To test Cordova, you’d do it in the same way that you would with both Node and NPM. However when you type cordova into the terminal and press enter, you will most likely, but certainly not always, get in response an error that may look like this:

/usr/bin/env: node: not found

The issue here is that Cordova is looking for the Node binary with a specific identifier, node. However when Node is installed through the package manager, the identifier of the binary is nodejs. Despite there being several tutorials on the Internet offering advice such as aliasing nodejs as node in your .bashrc file, the solution that needs implemented here is to create a symlink in /usr/bin named node that links back to nodejs. So what your directory tree looks like then is similar to this

cordova-node-usrbin-dirstructure

If the highlighting gets in the way, what you should be paying attention to here is that the bottom highlighted line shows the actual Node binary, nodejs, and the top line shows the node symlink which points straight to the nodejs binary. They’re both in the same directory but Cordova is looking specifically for the node file. I’m unsure if this can be configured in Cordova in some way so if someone knows, please share how to do this. Either way, once this symlink exists in /usr/bin, you should be able to then issue cordova from the terminal and get syntax help printed out to the terminal. If this happens, Cordova can see Node and is ready to go.

Prerequisite – Platform SDKs

As great as Cordova may be, it needs the platform SDKs in order to build for each one specifically. Obviously, while capable of bridging the gap between platforms, you still need the platforms themselves to actually accomplish anything. The good thing is that the Cordova wiki hosts a plethora of information relative to acquiring the corresponding SDKs. Being on a Linux system, you can install without a serious amount of labor the Android, BlackBerry and Ubuntu SDKs. For the sake of this tutorial, we’re only going to be focusing on the Android SDK. If there is further interest in setting up any of the other SDKs, I’ll create them later.

Downloading and installing the Android SDK should be a relatively straightforward process at this stage. I’m going to assume that you either know how to do this or can follow the instructions outlined on the Cordova wiki. Post installation, you’ll want to ensure that you have added an environment variable called ANDROID_HOME and included it in your PATH environment variable that points to the root directory of the SDK; again assuming that you know how to set persistent environment variables on your Linux computer..

As a secondary caveat, if you’re starting WebStorm from a desktop link or a link in the Unity Launcher, there is a bit of a catch in that the invocation context will be such that the program won’t notice the user-modified PATH variable that contains the ANDROID_HOME variable. What this means is that the IDE won’t be able to see the location of the Android SDK (I’m assuming that this would be the case for other SDKs as well). The way to fix this is to modify the EXEC field in the file to preface the issuing command with bash -ic.

cordova-node-wsdesktopstart-mod

Keep in mind that traditional desktop icons are found in ~/.local/share/applications while Unity Launcher icons are located in /usr/share/applications.

So long as all of these conditions are met, you should be able then to start WebStorm and create a Cordova project. Let’s step through that process next.

WebStorm – Creating a Cordova Project

webstorm-cordova-launch001

As you can tell, I’ve been at this for quite some time.

The first thing you’ll want to do is click on Configure at the bottom-right and then select Settings which will be the first item in the subsequent menu.

webstorm-cordova-launch002

First you’ll want to examine to ensure that WebStorm knows the location of Node. It’s highly unlikely that it has automatically determined its location so you may have to set it. Keeping in mind the location of the Node binary that was installed through your system’s package manager, you’ll want to get this fully qualified path name, along with the binary, into the Node interpreter field. Code Assistance may not be enabled for you by default. Frankly I’m unsure what this feature is but I have it enabled because… reasons.

webstorm-cordova-launch003

Next you’ll want to instruct WebStorm as to where to find the Cordova binary. Again, there’s a very high chance that it’s not automatically detected by your installation so you’ll have to manually specify. As we did with specifying the Node installation directory, you’ll need to do that here in the first field labeled PhoneGap/Cordova executable. Note that WebStorm still retains the PhoneGap label for all things Cordova even though Cordova has absorbed PhoneGap. Once the installation directory has been specified and WebStorm sees the Cordova binary, the PhoneGap/Cordova version field should automatically populate. The third field, PhoneGap/Cordova working directory shouldn’t be filled out at this point; ignore my entry here. This field is specific to your current project. This also explains the error that you’re seeing at the bottom of the window in the screen shot.

Once those are set, you can click OK and go back to the WebStorm Greeting Window. Here, you can click on Create New Project.

webstorm-cordova-launch004

Once the New Project dialog appears, you’ll select PhoneGap/Cordova App on the left side and then fill out the Location field. The PhoneGap/Cordova field is simply the location of the Cordova binary; we set this previously in the global settings. Click Create and WebStorm should take care of the work to generate the files necessary for your project.

webstorm-cordova-launch005

Now so long as the steps above were followed to the letter, you shouldn’t have any errors, other than something simply blowing up, that get thrown from WebStorm. Now you can start working on your program.

Deployment

webstorm-cordova-launch006

Testing your Cordova program can be done by creating multiple Run Configurations. Each of these would be distinguished by the value in the Name field. The value in the Command field will determine if Cordova will attempt to delegate to the emulator for the target platform, and the value in the Platform field will determine which platform is being targeted with this Run Configuration. I prefer to test on actual hardware, unless I’m constrained by the lack of, so for Android deployments I’ll deploy strictly to the device.

This should be enough to get you started. You can always read more on the Cordova Wiki to get a primer on the Cordova specifics. Otherwise you can start hacking away using HTML, CSS, and JavaScript

Personal Appraisal

Quod siquis vera vitam ratione gubernet,
divitiae grandes homini sunt vivere parvo
aequo animo; neque enim est umquam penuria parvi.

But if you’d steer your life by a philosophy that’s true,
The way to be the wealthiest of men is to eschew
High living, and be contented in the mind – for there has never
Been a poverty of modest means.

Titus Lucretius Carus – de Rerum Natura

By what means do we, in our current capitalist paradigm, consider money to be such a meager and humble commodity that it in and of itself not only represents faultlessly but equates exactly to our value as sentient human beings? Has acquisition and attainment alone ever conflated to unadulterated happiness and pure altruism? When you remove the faculty of money, a tool of equation, from the all too abused mode of individuality sometimes termed as self-maximization, what is left within the self that is of any conscionable nature that would be remotely considered conducive to morally acceptable behavior to our brothers and sisters? Nothing, for the widespread assertion that the money sequence of value either conflates or represents the life sequence of value is entirely arbitrary and false. There could be no other grandiose misrepresentation of our true nature than to attempt to quantify and dignify it as gross domestic product.

To this end all business operates tirelessly and endlessly. Cyclical consumption and the polymorphic modes that both individuals (consumers) and even businesses themselves (consumers/producers) operate in keep in check carefully the assurance that the repetition is not broken. Individuals as employees will sell their time to an employer to produce the goods that the employer then sells to other individuals or businesses, consumers, thus it flows onward. So the flow goes with a perceived elegance that just can’t be described as anything other than natural. So natural, in fact, that it would be utter folly to think that it could be wrong. How, when one is part of a society where abundance is aplenty, regardless if it’s to be maintained synthetically, and wealth, even though partitioned unfairly, maintains the decadence that we expect to grant us our little hovels with our creature comforts so that we’ll just be content with our meager rewards, would anyone then even think about how this could maybe, just maybe, be all wrong?

So sick is our society that we have managed to profiteer the human themselves and the methods by which we’re herded, sometimes all too tacitly. Privately held incarceration facilities trade investments on the Stock Market where its value will fluctuate based on the inmate population. Insurance agencies attempt to register infants, through appeals to their parents, into life insurance policies that not only place a dollar value on that life that matures as the child does, much in the same way as a Money Market, CD, or Savings Account, so that in the event of an untimely death, someone reaps some reward from it. The same agencies also offer up the same insurances for elderly persons who, on their last hurrah, might as well give something a little extra to not just the families but to the agency and its CEO and board members. Young workers in all industries are consistently hounded about investing in retirement funds, be it a 401(k) or an IRA, where they’re encouraged to invest more and more of their money, placing immediate undue hardship on them and their families, all for the idea that someday they’ll be worth something. One ad from Fidelity Investments for such a policy is titled “Because someday, I’ll be the perfect vintage.”

In agreement we simply nod our heads and don’t worry about it as we sulk on back to the cave. Your children are fed, your lights are still on, your clothes are clean, your lawn is cut, your car is full of gasoline, your bills are paid (on time) – why trouble yourself with anything else?

Slowly but surely, we are killing our planet to meet these seemingly endless consumer-driven, yet contrived, requirements. As the poles begin their steady yet inevitable melt away to liquid form, and our atmosphere is congested with carbon emissions from wildly inefficient means of travel, and our brothers and sisters who are not worth anything are left to rot away tucked in the back alleys and abandoned scrap yards so we don’t have to see them; they won’t be a problem that way, and our basic requirements for life are becoming more scarce and by reason of overpopulation synthetic, what excuse do you have now to say that you can’t trouble yourself with anything else? What can you say to your brothers and sisters who die daily because they can’t get food or water because they can’t afford it? How do you explain that this is normal to your children, and that the only way to be happy and successful in life is to simply make money? What made you not think, for one second, that competition is not the only way to live? How then do you not register that you, implicitly or explicitly, equate your measure of success and altruism in dollars and also that of your children and tell them to continue to do the same thing?

The marks that we leave behind now will be the ones that our children have to deal with. They will be responsible for carrying our torches into the future, for doing so within the context that we set for them, and we are most of us wildly irresponsible in thinking that continuing this mode of valuing life is anything solid enough to sustain life at all, or even a future for that matter. Change has to start now, and start with you.