Too Many, Too Far

644188_526552814037754_1413004826_n

Reading nonsense such as this has finally provoked within me the urge to unleash a summary of the nearly endless waves of indignation that doubtless follow soon after.

Before continuing, please be sure to read fully the words on this article of clothing, typeset carefully for dramatic effect.

First, we must isolate the demands in the rhetorical conversation above proposed to god, that we may arrive at a better understanding:

  • god, or at least this one being queried, is omnipotent enough to intervene in the affairs of mortal men.
  • god, or at least this one being queried, aside from its omnipotence, has the inclination to intervene in the affairs of mortal men.
  • The kind of affair and its calibre are irrelevant in consideration for intervention.
  • Degrees of presence of this god, either materialistically or otherwise, has a net effect on its ability to intervene, especially in the case of violence in schools.
  • Violence of any kind is bad.
  • Violence within the confines of a school is a particularly heinous breed.
  • The printer of this shirt has had the divine communication revealed, moreso than others it would seem, to have ready a solution to the issue at hand.
  • Hence, if more people would allow freely this god in particular in their schools more often, especially when the word is spread by buying this shirt, that its ability to intervene in horrific incidences of school violence would increase.

Please spare me the easy hunts here as thoughts of those nature will be vanquished immediately.

One should find it obvious, probably as a result of experience, that even if this god in subject did exist and was of the meddlesome kind, the nauseating selectiveness which it elects to employ or bestow upon the people – its people – the requisite number of miracles to produce the safest, happiest, most fulfilling life for all leaves quite a bit to be desired. god’s game, that of arbitrarily halting each person’s life pendulum, has no rhyme or reason. Yet all the wonders of the fallacious mind attempt attribution upon attribution, founding these claims on little more than simple or seemingly sophisticated rumours and fancies, none of which are or can be rooted by rationality or reason. We should rest assured that if this god were as invested in our goings-ons as one becomes enthralled by reality television, and it desired an alternative outcome, it should’ve happened by now on numerous occasions. Otherwise, we’re left to conclude that either this god doesn’t exist, or that it truly doesn’t care what you or anyone else does in their day-to-day, consequently invaliding any and all notions of intervention.

But we must say something of the utility of the matter since it is commonly and boorishly implored as the preferred means of coagulation. How many thoughts and prayers have been offered up in the wakes of Columbine, Sandy Hook, Virginia Tech (2007), and the University of Texas (1966)? Have we been praying to the wrong god? Did we not pray correctly? Did we happen to pray at the wrong time? Was god on a holiday, conveniently enough whenever these massacres occurred? Was the presence of this god in particular absent from these schools? Try explaining to the surviving family members that their children would’ve experienced, or were at least far more likely to, divine intervention, which would certainly have saved them, if only they and the student body were a bit more pious.

More questions emerge from the framework. Just how much piety and humility – if ever it could be sufficiently quantified – is or would be required to prevent these tragedies? Must we compel the faculty and community at large to resort to barbarous medieval customs such as animal and human sacrifice? Or do we simply need to ramp up production of such sloganistic masterpieces as the one on display above, accelerate the marketing to procure more sales, and rely entirely on the horrifyingly shallow sort of solidarity that both founds and breeds in it? This here is a pestilence of the mind and of the society, and from within this cesspool, naught of a tincture of a remedy is to be found.

We seem also to be taking this concept of gradation, given to us by Aquinas himself, and pumping it full of steroids to give it some meaning that, in its attempts to assuage negation, permits it to blitz past any naysayers in total ignorance of its fatal detraction. While a reasonable destruction of this is possible, a more poignant defamation presents itself through these shootings and by responses like the one shown above.

If we take a look on gradation, we find that to judge the merit of one’s goodness is to effectively weigh it in proximity of the ‘uttermost’ good, and the result of this exercise would yield the final goodness or badness of one’s actions. From the perspective of the exercise itself, this makes total sense, since any measurement of any kind with the objective of describing some property of the subject in a vacuum would provide very little to glean. But we arise at an issue when we do what Aquinas suggests, which is placing god, or at least his rendition, in the position of the objective, or the pinnacle of conceivable subjectivity, ‘uttermost’ goodness, by which any and all questions of morality and conceptions of utopia are adjudicated. For example, are we to assume that one’s moral compass is skewed, or skewered in some cases, when they are found to not subscribe to the same god as does Aquinas regardless of the reason? Do they not distinguish good from bad? More adequately, we could express the paradox as if one’s ‘uttermost’ good is different than mine, because if god is my ‘uttermost’ good and their god is not my god, how then do I know that person is a good person, or at any rate, can be expected to do good things? Often left out of the conversation is that it’s plausible that this arm’s length sizing-up happens on the other side. Further, what happens if this god commands as ‘uttermost’ good the slaughter of peoples whose faith subscriptions are inconsistent and irreconcilable with your own? Of both the sums of atrocities committed and their accompanying rationale, a very safe and sound assertion that religion permits this kind of horrifying and arbitrary inconsistency can be mounted and defended. If nothing else is said from here, it should at least be granted that not only is god not the ‘uttermost’ good, but that if one elects to place it there, they’re not to be trusted on judging morals or goodness at all.

The common question of if god is absent, how can we be moral or good emerges here, and it has a very simple response that makes sense. We can indeed be moral and good in the absence of god because it’s not a progenitor for either morality or so-called ‘uttermost’ goodness. Rather, the imperative that one behaves in this way is emergent as a substrate to society solely as a reciprocal of our evolving social dynamic, further dictated by the species and its relation to the availability of subsistence resources. In other words, we are good and moral subjectively, and what constitutes the prime measurement for goodness is not an ephemeral and likely non-existent construct, but is the collectiveness of our species in and of itself. This structure is entirely mutable in much the same ways that human behaviours are subject to both social glue as well as environmental properties.

But if god is present in any form, can you still be good and moral? Yes. Because these things don’t arise from god and are instead universal by other means. Missions to Haiti should be performed because it’s the right thing to do, not because god dictated your good. One should have access to a roof over their heads and common amenities because of decency and growth of the species, not because god willed servants to grant those things with the hook-line-and-sinker that the recipient will be liberated from their heathen backward lives in godless communities.

And now we arrive at our magnum opus. From where precisely in these atrocities taking place in our schools do we find the grounds for dispelling the magisterium and voodoo of religion, which compels people to look in entirely the wrong direction, so that we can start addressing real issues? It’s rooted in a very particular kind of economy, one which can be found in example by removing from the clause that provoked this entire adventure certain words. Doing so will shift meaning, but only toward a larger scale, and does not detract in any way from the original objective; it remains valid. Simply restate the offending question:

Why do you allow so much violence in our schools?

To:

Why do you allow so much violence?

And the entire prospect of omnipotence falls even harder on its face than it already did. We could’ve easily grouped the words in our schools, turned the last word into a variable, and played a game of Mad Libs by swapping it out with any other place. However, we must understand clearly that by doing either this or taking the amended statement above as the general inquiry, the answer on offer must necessarily change, and not for the better since it becomes harder to answer, even rhetorically, as the author of our shirt here obviously didn’t take into consideration. Let’s try.

First, replace school with church. Now, of all the enumerable places where people go, the one most assuredly where one would find a plethora of fuel to bring about the god would be in a church. So why is it then that even when churches, mosques, and synagogues are targeted with extreme acts of violence, whatever the reason, that there is a very distinct lack of divine hands redirecting bullets, shielding people from blast radii and/or collapsing structural debris, or, perhaps even more telling, why wouldn’t this god have either mooted with or road-blocked the other god that drove the attackers before they inaugurated their campaign of terror? Whoops! Hang on! What if the god was the same? What then? Further, suppose we commanded an increase in the footprint of religion in schools, as was suggested implicitly by our lovely fashion statement? Surely, if places dedicated to the worship of a god are not omitted from consideration in plans of attack, nor are they on the list of places where critical divine action occurs, why would one ever dream to conceive that a school would somehow make the cut, and then have the sickening audacity to even place the option on the table as a solution?

Finally, let’s take the second permutation of the question and examine the change on the context. Expectantly, one would decry this exercise as being far too broad, but I vehemently disagree with this. Considering that the breadth of this god’s influence is claimed to be so grand in scale and magnitude that even the laws of the universe bend to its will, speaking generally on violence should be of little to no consequence. Human history illustrates clearly a ubiquity in the distribution and execution of barbarism from as far back as we can tell. Hence, we must acknowledge that violence is evinced in the cultures of Neanderthals, Vikings, Greeks, Romans, Scots, British, Indian, Egyptian, Prussian, and contemporary American to name a few. The pinnacle issue at the core here is that to even ask a question of this calibre is to understand that an unsatisfactory answer will always be had from this or any other god. Questions of how sometimes serve as antecedent to those of why, and in this case, they’re far more critical. Instead of asking why a god permits violence, one should be more concerned with how violence emerges. In doing so, an enlightening proposition occurs.

While it’s true that some elect to refer to their god as the ultimate good, and that it may inhibit them from committing acts that would, based on those standards, be deemed bad, the inverse case is also true. Those killing people with a prayer or the name of a god on their lips during the act are just as capable as those who do so without. Certainly, one could argue, as often occurs, which kinds of people are more prone to such senseless aggression, but here they’re all considered equally. That being said, all of a sudden, a god, whomever or whatever it may be, if indeed it can be at all, no longer has the luxury of stratifying itself against the innumerable other means by which violence emerges since it becomes one alongside them. In effect, you could propose the same inquiry to other subjects like scarcity (artificial or not), repression, anger, jealousy, racism, sexism, bigotry, and cultural standards to name a few. The real paradox here is that although asking of these subjects this question is in effect the same as doing so with a god, one is considered insane for personifying these and not so for a god. My thought here is that a very real fear emerges from confronting these tangible actors, one rooted in the providence of human beings. If blame is cast wholly on an agent whose very nature and existence are highly volatile at best, somehow this alleviates from humans the responsibility of having to act for change in a way that goes beyond printing on clothing, making social media posts, or muckraking with contrarian dogma to maintain the decadence of the mass.

In short,

Praying to a god will not stop violence anywhere.

Offering adulation to any diety will not hamper or deter all violence anywhere.

Hermetically sealing your community away and galvanising it with religion, while potentially shuttering external influence, doesn’t serve any purpose in this regard.

Demanding that more people become religious will not change anything.

So, what would?

We would.

Our culture and our politics should be the first targets. We see it as sexy and dignified, as well as a show of power, to brandish weaponry of any kind to each other. Becoming strong and defensive is an objective in and of itself, and the perception of not doing so is to be weak, and the weak are only to be used by the strong. The impressions of strength and weakness manifest in people in different ways, depending wildly on their social situations. In here, generalities can be established, but not enough to convince someone truly mired in the mess that theirs is not unique enough to warrant highly questionable expressions of relief. Television, major film, and shorts glorify acts of violence if only in defence, ignoring the underlying motivations for them and the requisite discipline for containing the precursors, which in defence or not, are largely the same. Guns have obtained a first-class citizenry status and are big business. The second amendment, having been picked apart from the political ravens and vultures in the name of convenient yet contradictory legislature, has convinced a majority of people that they, and not just militias, are mandated constitutionally to own weaponry, and the degree of ordinance permissible, at least under the table, is irrelevant when the dollars are in order. No one submits that even in the periphery, the Founding Fathers composed this construct with the intent of permitting brothers and sisters to maim one another without any truly compelling reason. We falsely dichotomise killing for sport and murder, using this as justification for “sport hunting,” which itself is leveraged as argument for obtaining vast quantities of weaponry for private citizens. A weapon used for killing or severely injuring another human is quite similar to that which is used for “sporting” an animal.

Of course, this only scratches the surface, and I’d be remiss if I thought for one second that a complete disarmament of the people en masse would be possible or even desirable. We must remember though is that we, those of us not in politics, can demand change through action which requires more than shirts, Instagram pictures, profile photo filters on Facebook, and, hell, even the words that I’ve written here now. Close your bibles, they serve you no purpose. Turn off the TV and the cell phones and start talking to one another. Engage people to find common ground. Be a human being again. Demand that these dirty, incompetent, and disconnected politicians and SIGs be taken to task for the truly horrible nature of their actions. Be a positive influence in your community, and do it without the aid of a god, because you don’t need it.

Everything you need, you already possess within you.

 

 

Advertisements

Monogame – Working with Touch

*NOTE – This may also work on other platforms with touch as well, but this hasn’t been tested on anything other than Android at the current moment.

One fundamental aspect to understand about touch and gestures is that code needs structured around the idea of continuous input. Thus, any touch recognition code should be encapsulated somewhere within the main game loop; where this is would be dependent upon how one elects to parse input. The reason for this is that the nature of all touch processing is a sequence of touch events that get fired in succession; there are only a few exceptions to this rule.

The other aspect to understand clearly is nomenclature mapping. What you think you want to achieve in your design may, unless you’re already familiar with either the Monogame or Xamarin frameworks, not necessarily be what either of those aforementioned frameworks are calling it through its API parlance. So be prepared to step outside your normal wheelhouse and, perhaps, discard some long-standing assertions about what truly a touch/gesture really is.

First, the consideration needs made as to if you’re going to handle touches or gestures – don’t get too caught up on thinking that a touch is a single press, because this will cause you some unnecessary grief later. If your program ebbs toward the former, there’s usually no requisite configuration needed, other than to check for the existence of a touch-capable input device and adjust your engine accordingly (the only other exception here would be if one wishes to perform touch-to-cursor mappings, but this is outside the immediate scope of this article). Conversely, gesture handling requires some configurations be made before they can be used, and this is where the Monogame documentation, as well as a majority of the information available on various forums, falls fatally short. We will focus on this once we start addressing gesture handling, which follows a look at touch handling.

Checking for the existence of hardware with touch capabilities can be queried through the TouchPanelCapabilities object, triaged through the TouchPanel static object as such:

TouchPanel.GetCapabilities ().IsConnected;

The IsConnected property is a boolean that indicates the presence of a touch-capable device. Obviously, the absence of one suggests either that the device is intermittently available, or that other sources of input are necessary. In this case, neither the touch nor gesture APIs would be valid.

Concerning touches, the current state of the touch panel holds a collection, called TouchCollection, of TouchLocation objects. Each of these correspond to a single touch event generated by the user when a press is determined to have occurred on the sensitive surface. It’s fair to suggest that multiple points of contact yield multiple TouchLocation instances within the TouchCollection (i.e. as a practical example, one finger would generate one instance, two fingers would generate two instances, etc. This can best be observed while debugging a program using this technique, and paying attention to the Id property of the TouchLocation instance(s).). In order to properly ascertain the most accurate state of the touch panel, we’ll need to do the following:

  1. Obtain the current state of the touch panel
  2. Determine if there are any TouchLocation instances in the TouchCollection collection
  3. If there are, take relative action based on any of the properties of the current TouchLocation instance

This can be accomplished using the following general template

TouchCollection tc = TouchPanel.GetState ();
foreach (TouchLocation tl in tc) {
 // Do something here
}

Fortunately, TouchLocation instances are very simple to use. There are only four properties that are of any practical significance, and one utility function for trying to determine the previous location (which, at least during my testing, wasn’t useful for anything). They are as follows:

  • Id – An Integer that uniquely identifies a single TouchLocation instance within a TouchCollection. It’s unknown how its potential values are determined, or if orphaned values are subject to recycling after the host TouchLocation has fallen out of scope.
  • Position – A Vector2 that provides the X and Y coordinate serving as the source for the event. Effectively, this is the location on the sensitive surface where contact was made.
  • Pressure – A floating-point number indicating the pressure of the touch. I’m unclear on how exactly this works, since my tests always reported a zero in this property. The only conclusions I can come up with here are either that my device doesn’t support touch sensitivity of this kind, or I missed a configuration step to enable this functionality.
  • State – An instance of TouchLocationState that determines what kind of touch we’re dealing with. This property can have one of four values:
    • Invalid – The press has been somehow deemed invalid; I’ve never seen this occur in testing, and am left to think that either I failed to satisfy conditions to make this occur, or that it’s simply a dump case for an exceptional condition.
    • Moved – Seen when a press has either remained in the same position or has moved. This is a very important state as it has a great deal of practical application, so do try to keep it in mind.
    • Pressed – Observed when a point of contact on the sensitive surface is newly minted. This is only fired once, and will not be seen again, regardless if the contact remains afterward. This could potentially be a source of confusion for a number of programmers.
    • Released – Likely the last state that a TouchLocation would be in before falling out of scope, it will be fired when the source of contact which generated this particular instance is no longer available.

Having said all of that, you now have enough information to properly utilise touches within your programs. As was stated before, simply ensure that your code is contained within the main game loop somewhere, since the data will likely change per frame, or at least as often as it can. An example of how to implement code based off this logic will be illustrated at the end of this discussion.

Gestures, insofar as Monogame is concerned, are a bit of a hassle to work with, mostly due to the lack of upstream documentation. We will seek to correct this imbalance, if not for the official documentation, then at least for programmers who wish to learn more about them.

As was stated previously, although Monogame performs a considerable amount of work to make available the touch and gesture API for programs deployed on capable hardware, gestures are left a bit open-ended by comparison to their touch counterparts. What this means is that as a programmer, you’re required to provide some configuration before the gesture API can be utilised. Here, we assume that you’re only interested in gestures, and not touch-to-cursor mappings, hence will only discuss the former.

Before proceeding, some basic information should be given as to the nature of gestures, and how they’re procedurally handled.

Although there is some very minor overlap with how a touch and gesture are expressed, they are two discrete entities. Gestures can be composed of one or more points of contact, and it’s expected that the locations of these contacts will change, in a particular way, over an indeterminate amount of time (ergonomic measurements would likely dispute this generalisation, but it is for this conversation a generalisation, and not a scientific claim). The ways in which these contacts change, or at least the resultant shape the change yields, as well as the number of contacts involved in the measurement, hints at the particular kind of gesture. In other words, a single point of contact that has a gradual change in its X-axis, be it positive or negative, which would yield a ray (or a series of small rays), is generally considered to be a horizontal drag gesture. When considering the same principles but looking to the Y-axis instead, we now find ourselves dealing with a vertical drag gesture. Pinch and zoom gestures typically involve two or more points of contact that move near concertedly away from or toward each other along the same logical axis. Perhaps paradoxically, at least when considering a contrast between touches and gestures, taps, double taps, and long-presses are registered as gestures as well; these are more concerned with the sustainment of a single point of contact relative to the time from when it was first recognised.

From a stock perspective, Monogame provides eleven types of gestures, referred to as GestureTypes. These types will effectively determine how gesture detection is performed (it’s unclear if the GestureType framework can be extended to facilitate custom gesture types, but this is a considerably advanced topic which will not be discussed here). However, Monogame will not automatically read the touch panel for gestural input. Instead, it needs instructed on which kinds of gestures to detect, and this is provided by the programmer. In any non-looping block of code, preferably during the initialisation routines, you’ll need to specify what are called EnabledGestures, which is a property of the TouchPanel static object. Multiple gestures can be configured by OR’ing one or more of the types together in the assignment statement. For example, if I wanted to parse for both a HorizontalDrag and a DragComplete gesture, I would write the following statement:

TouchPanel.EnabledGestures = GestureType.HorizontalDrag | GestureType.DragComplete;

Once this is complete, you’ll have done enough to get Monogame to start playing nice with at least these two kinds.

Parsing gestural input is, in essence, no different than parsing touch input, but there are some minor differences to the process. To start, we must first determine if there are any gestures with which to read data from. If we do not do this, attempts to read directly from the gesture store will generate fatal exceptions. Fortunately, the TouchPanel static object provides a boolean property called IsGestureAvailable, which will inform clients of the availability of queued gesture data. If we have data, we must convert the data into a sample, which is packaged into the GestureSample class. As with the TouchLocation object, the GestureSample object contains several properties that are of practical interest to the programmer, especially when making contextual decisions that respond to this kind of input. GestureSamples include the following properties:

  • Delta – A Vector2 instance which provides the delta, or difference, data for the first touch point in the gesture. This will change over time, and will always be relative to the coordinates where the touch was first recognised.
  • Position – A Vector2 instance which contains the current coordinates of the first touch point in the gesture.
  • Timestamp – A TimeSpan instance that indicates the time when the gesture was first recognised.
  • GestureType – A GestureType instance that indicates what type of gesture was determined based off several criteria.

Additionally, GestureSample contains properties called Delta2 and Position2, which are used to track a second point of contact that’s being measured as part of the current gesture. What this implies is that insofar as the stock gestures are concerned, Monogame will only be able to handle gestures where no more than two points of contact are involved.

My advice here is to experiment with the data through debugging until you’re comfortable with how these gestures are read, because there are some nuances with how the data continuously polls respective to different gesture kinds. For example, a HorizontalDrag gesture will, while the drag is occurring, constantly emit the HorizontalDrag signal until the contact source is released, terminating the gesture. At this point, if one is checking for the DragComplete signal as well, releasing the contact source will cause the touch panel to emit the DragComplete signal.

Examples:

To determine if a single press has been made:

TouchCollection tc = TouchPanel.GetState ();
foreach (TouchLocation tl in tc) {
 if (TouchLocationState.Pressed == tl.State) {
  // Execute your domain-specific code here
 }
}

To determine if a press was made, and has been held in the same position for an arbitrary period of time:

TouchCollection tc = TouchPanel.GetState ();
foreach (TouchLocation tl in tc) {
 if (TouchLocationState.Moved == tl.State) {
  // Execute your domain-specific code here
 }
}

To track the position of a horizontal drag:

(1) During game initialisation:

TouchPanel.EnabledGestures = GestureType.HorizontalDrag;

(2) During game loop:

while (TouchPanel.IsGestureAvailable) {
 GestureSample gs = TouchPanel.ReadGesture ();
 if (GestureType.HorizontalDrag == gs.GestureType) {
  // Execute your domain-specific code here
 }
}

PhysicsFS/PhysFS++ Tutorial

This is a follow-up from a promise that I made in my tutorial video on designing an asset manager using SFML. That video can be found here.

This tutorial is centred around PhysFS++, a C++ wrapper for PhysicsFS. For the sake of the tutorial, it’s assumed that the reader is familiar with PhysicsFS and what it’s capable of. Described here is a workflow for simple use of the library. Anything more discrete is beyond the scope and will have to be ascertained by the reader on their own accord.

Lastly of note, PhysFS++ encapsulates PhysicsFS calls in a PhysFS namespace. The functions are global within this namespace and there are only a few classes that are provided. PhysFS++ further encapsulates key PhysicsFS constructs, notably those corresponding to archived files, into said classes that are derivatives of STL stream classes (a huge boon).

Like some other libraries, PhysicsFS requires explicit initialisation before it can be used. This is facilitated by a function named init. It takes one argument of type const char* and is semantically directed at a terminal invocation argument triaged through the much loved argv. However, this can be an empty string especially if you’re not expecting to handle terminal invocations. Thus, a very general call to init can be performed as such:

PhysFS::init (nullptr);

Right of the bat we have to mention a caveat here. From PhysFS++, there’s no way to assert the initialisation process of PhysicsFS. This is counter-intuitive to the upstream library which relies on the tried-and-true zero on failure, non-zero on success return values as sanity checks. Furthermore, while PhysFS++ implements C++ exceptions, the init function doesn’t throw any at all. Ostensibly, what one is left with is an unchecked call to init. Because one needs to compile PhysFS++ from the source, it is possible to modify the code, as I have done, to add a check to this call.

Once init has successfully completed, the next step is to mount an archive file into the virtual filesystem created by init. This is performed with the mount function. mount expects three arguments: the archive file on disk, a string specifying a mount point in the virtual filesystem, and a boolean which appends the mount point to the search path. One should place the archive file in the working directory for the binary file of their executable so PhysFS++ can see it. The second argument can be an empty string which would force root mounting, and the third can be true. Thus, for our example, if we assume we have an archive file named funphotos.zip on our disk in the binary’s working directory, we can issue a call to mount as such:

PhysFS::mount (“funphotos.zip”, “”, 1);

Unfortunately, as was the case with init, mount wraps an upstream function that adheres to the zero-or-nonzero return value paradigm that is outright dropped by PhysFS++ with no exception catering otherwise. Thus, if mount fails to mount the archive for whatever reason, it’ll be a little difficult to ascertain why; plan accordingly.

Assuming mount has returned properly, one can start to work with the files that are contained in the archive. At this point, you should begin working in the mentality of filesystem calls. It’s possible to have archive files with complex directory layouts which would require one to perform recursive searches. That being said, everything should be considered a file – even a directory. An analysis of the PhysicsFS and PhysFS++ APIs will provide for you the full breadth of your available capabilities so for the sake of brevity, only a select number of those will be touched here.

Enumeration of files in a directory can be performed with the enumerateFiles function. It takes as an argument a string which indicates the directory to use as a root for the enumeration. As a return it provides the caller with a vector of strings indicating the name of the file. For ease of use, a call to this to enumerate the files in root can be performed as such:

auto rootfiles = PhysFs::enumerateFiles (“/”);

To actually work with a file in the filesystem, one needs to use the PHYSFS_file ADT. This upstream ADT is encapsulated by one of three classes: PhysFS::ifstream, PhysFS::ostream, or PhysFS::fstream. Each of these is fantastic in that they encapsulate a PHYSFS_file ADT in a standard stream which means that one can now perform established stream operations on the file itself. Each class has its own use: fstream for reading files, ostream for writing to files, and ifstream for bidirectional file handling. In any case, any of these classes can be instantiated with a string argument that contains a fully qualified pathname to a file in the virtual filesystem that one wants to work with. For example, given that our virtual filesystem has a file named goofycats.png located at the path /textures/cats, we could instantiate a read file as such:

PhysFS::fstream gc (“/textures/cats/goofycats.png”);

Again, the underlying upstream call to open the file goes unchecked.

What you do from here is largely subjective relative to your program’s context. Say, for example (and this is actually pretty specific to my own use case), that you have a series of files of various formats in an archive that are being used in a video game program. The multimedia library you’re using should have ADTs that represent types of assets such as textures, fonts, etc. One could do some work to transpose the raw data of these streams into the aforementioned ADTs for use in the multimedia library. The following snippet of code, borrowed from one of my own projects, illustrates this. A PhysFS::fstream instance named f is created with a certain file. Following up is a char array named d is instantiated with the size of f. The read function of f is called to transpose the bytes from f into d. Then, d is used to instantiate an instance of sf::Music from SFML contained in a std::unordered_map:

code

This covers most the basic and general needs of users of PhysicsFS. Should you require anything else from it, you’d do well to read up on the Doxygen file of PhysicsFS or the source for PhysFS++. Lastly, when one is done with the library, you’ll need to call a deinitialization function called deinit:

PhysFS::deinit ();

Vote!

It goes without saying to most that a presidential election in the United States is a portentous ordeal, not just for its denizens but for the world at large. I’m confident that even those at polar extremes await with anxiety for the climax. Some then receiving their due orgasm, others hobbling away with what males call epididymal hypertension, others still revert to inhaling the smog of indifference, retreating to their suburban caverns and barricading the entryways. Arguably, elections have trended toward polarising society; the poles magnetically ripping us all in different directions for singular and presumably orienteering causes that, sans arrhythmia, invariably places at odds your polar base camp with all others. Localised or globalised, this pattern emerges triumphant.

Saving anthropology, scuttlebutt has emerged that this election in particular has the potential to yield one of the highest voter turnouts imaginable. By the time anyone reads this the verdict here will have already been decided, but it is interesting to think about those so-called citizens who are voting virgins or have made a fanfare-laden return to the cradle of the ballot box. Whether it be one’s first time voting, or participating in the civic duty to assuage peer pressure for that right to complain, or to protect the motherland from that immoral snot-faced moron who takes reins diametrically opposed to your own, all serve as valid equally, simply because you did vote. So then if the turnout is projected to be so high, what provoked it in the first place?

Face it – neither Clinton nor Trump are rock star candidates in and of themselves. Most imagine the latter to emerge as a masochistic despot and the former a considerably irresponsible and fraudulent piece of work who seems entirely incapable of adhering to simple email security practises. Neither has satisfied remotely any holistic perspective relative to the qualifications or the performance required by the executive chief. And this is the best we can produce. Of course there were three other choices but frankly I don’t remember their names and, honestly, you don’t either.

That being said, the atmosphere was one of defence. Every single voter who turned out where I live seemed to be voting simply because they didn’t want the lesser of two evils in the office. Undercurrent focus from previous elections most likely reveals this to be case as well; perhaps one could make the remark about this being a wholly uneducated voter. Educated or not, this was the en masse beat of the drum. Most constituents I know are mortified, I mean scared absolutely shitless, thinking about Donald Trump having his grubby paws that close to the nuclear arsenal. In wake of this aspect alone, their vote was cast, by their own admission, for Hillary. Nothing else about her mattered other than she wasn’t Trump. Conversely, my decidedly Republican peers, of which there are many, had a hoot of a time for weeks leading up to early voting access poking fun at Hillary for anything and everything the FBI could dig up on her.

It’s a wonder anyone has any concept of what’s truly going on in the country. While focusing on candidates for highly isolated reasons, disparity between legislature and culture continues to rip society apart at the seems, identity politics chokes us all to death, the Fed runs rampant with freedom of the press further propagating the central banking fraud, global warming is inarguably true but inarguably argued to be false, overpopulation gets as much attention as whomever was on the ballot for The Green Party, renewable energy has about as much of a concept of renewable as does Keurig with their single-use coffee pods, and not a single candidate, not a single one, gives a damn about anything other than the status quo. Thus in defence, one votes to not rock the boat.

I have come to vitriolically despise the word disruption. The lingering bad taste, similar to the one experienced while drinking black tea, grew from those marketers and investors who wanted to disrupt their industries. It has since, in the wake of this election, festered into a tumour on the back of my tongue as it seemed that this was the sole agenda of Republican citizens (not the GOP itself). They sought to rock the boat by voting for a person who seemed to manifest the popular rage against the government. At what cost, you might ask, and in response receive well ANYTHING has to be better than this! And what might that anything be? What is the price of your disruption? Herein lies the aforementioned issue and it can be polled through reflection: I ask a pseudo-rhetorical question, presumably aimed at Trumpists, and by default you’ve likely assumed I’m a Clintonist, and have readied your arsenal of retorts without catching your breath to permit a thought. Disrupt away!

As for me, I voted not in defence or disruption, but in defiance, and was subsequently told that I wasted my vote; you have to love the tyrannical tones that we enjoin on each other. First it’s you can’t complain unless you vote, and then it’s well now your vote isn’t worth shit compared to mine. For president I voted for an author who even now, exiled to the land of the dead, would have made a considerably more suitable fit than what’s on offer today and am content with my choice. So much so that the lumping with all that is unholy, unjust, immoral, and downright perverted is all that I expect from my fellow citizens. Because at the end of the day, the true leader is only ever the one who can afford it.

When I’m Not Writing…

Admittedly I’m not a professional photographer, but that doesn’t stop me from partaking in the act and playing at it. For me it’s definitely more of an armchair hobby, but it plays nicely into my interest in aesthetic relative to colours: hues, tone, saturation, contrast, etc… Anyway, here’s the album. I’ll be adding more to it as the season progresses to show how the place looks during that process.

https://goo.gl/photos/A983tg2z57atayB6A

 

JUNK PUNCH is Published

This is sort of old news (within the month) but my first book, JUNK PUNCH, has been published and is available for you to consume, literally and figuratively. Although if you do decide to consume it literally, I’m not responsible for damage done to your internals.

The premise of the book is three-fold. The first is a self-help schema to which readers would be able to learn about the importance of the self and how to utilize it. The second is a very small peek into what would otherwise be considered my philosophy, onto which a second book could, would, and actually is being written (this is not like infamous day-one DLC for video games, which is bullshit). The final is a small bit of a memoir which pulls from three years of my life relative to the first point. If any of that sounds like an amazing, near orgasmic time to you, by all means, grab yourself a copy!

I have independently published the book through Lulu, which you can order the paperback version from there. Keep in mind that Lulu doesn’t stock books and instead prints on-demand. So if you place an order from there, be aware that it might take a few extra days to print (I’ve had two to three days on this) plus the shipping time. I am going to keep copies on-hand for people who would rather purchase them from me. Right now I have thirty, of which most are allocated, but I’ll order more soon; I’m still configuring a store page for this so bear with me. The book is also available on the Amazon Kindle.

All proceeds from paperback sales, from now until the end of the Capitalist world, will be donated to a charity relative to substance abuse and recovery. I will only keep those sales made from the eBook which will be used exclusively to fund the next book. At the time of this writing, I’m still vetting out charities but a separate account has been made for this money and it will be allocated as such.

New York City – The Pain of Pleasure

New York. Sometimes affectionately referred to as The Big Apple. Culturally it has long served as the galvanizing catalyst for the United States, as if to somehow represent the absolute best we have to offer as a country. Countless Hollywood movies, video games, fictional literature, music, and live stage plays use New York as a backdrop for one or more subsequent devices. It’s big, it’s loud, it’s flashy, and it moves at lightning speed day and night, never resting for a single moment. For those of us who live outside its boundaries, we look on with awe and wonder at the cascade of imagery that emerges in the press. An itch scratches the back of our minds, causing us to wonder just what the New York Experience is. Some of us will never have an opportunity to immerse ourselves in it, and up until recently I would have counted myself amongst that lot. But the ever emergent circumstances in my life rolled the red carpet out to me and walk down it I did.

Emerging from the depths of the Amtrak Pennsylvania Station at 33rd and 8th, I was immediately taken aback by the sheer volume of people. There could have easily been close to two hundred of them on the block alone. As we walked from the tram station to our hotel, the Marriott Marquis on 45th and 7th, the swarm only seemed to increase in size exponentially. This made sense as we were travelling north on Broadway Ave which runs directly through Times Square, but coming from a far smaller town, one can never really prepare for a shock of this sort. There was no investigation into the current population estimates prior to my departure from Ohio, but I later discovered that there’s roughly nine million people in NYC alone, with nearly 2,750,000 of them being in Manhattan. Of course one doesn’t come into contact with all the residents of Manhattan at once, but it’s not uncommon to do so with a few thousand people a day. To put this into perspective, the town I live in only has a population of 22,500 and you’re hard pressed to see a hundred people a day. Everywhere you look you would find people walking down the street, riding a bike, flagging a taxi or shuttle, or sitting in a shimmed veranda that encroached onto the sidewalks where restaurants took up residence at. They were tucked into nearly every orifice the city had to offer, perhaps even some the city didn’t realize it had. The necessity of the skyline being dotted with skyscraper after skyscraper made so much more sense at that moment. It is quite impossible to facilitate that many people in a horizontal fashion, so the only solution is to go up. You can trust also that every floor of every edifice was occupied by someone. This principal of vertical expansion applied to all sorts of establishments, from small clothiers to bowling alleys where, for example, the third floor hosted a different set of lanes than the fourth. That being said, a recurring proposition in my mind arose when I realized that I was standing in the same exact location of the famous New Year Ball Drop and tried to imagine myself there with all of these people.

The purpose of my trip was relative to my job, as I’m now sure is an entirely common excuse for a visit. However, that didn’t mean that there wasn’t some leeway for tomfoolery and exploration of the touristy kind. Wandering through the streets ended up being a daily occurrence when not involved in something convention related. Prior to my group’s walkabouts, I must confess to professing some trepidation against appearing to be a tourist. They’re incredibly easy to spot, even from within the infinite rabble, and being on foreign soil meant being on guard. All one has to do is look for the extended selfie sticks and angled heads fixated on the towering behemoths that showcase a fruitful marriage of architecture and engineering. Adorning only those closest to the centre of it all were displays that sprawled sometimes the entirety of a single face, constantly cycling one advertisement after another and not a single one of them in tandem with the other to form anything remotely aesthetically pleasing; one was more likely to convulse in epilepsy before they even made it to the shop in the ad. Anyway, this fear of the tabi bito hyōjō was soon proven to be moot once a cardinal rule of navigation was discovered – go with the flow. The sooner one fell in line with the apparent consciousness of the fumbling mass, the sooner one became transparent to even the person rubbing shoulders against you. In this, one could get away with the occasional flick of the phone to grab a photo of something or someone, but if the shutter were ill-equipped to handle motion, every single one would be a guaranteed blur. Amazingly, those who were carting multiple large totes of luggage or, insanely, a stroller housing an infant, were able to occupy space just as comfortably as a single person albeit at the cost of inner-swarm dexterity. Any sign of a shift in the wave would be evident to everyone and, when opened, they would all vie for the ability to move – a sort of material coagulation.

So tourists we were and explore we did. With only five days to spare, it was impossible to see and do everything that Times Square had to offer, but of its many entertainments, we ventured several that stood out. Madame Tussaud’s Wax Museum allowed me to pose with Morgan Freeman, launch nuclear weapons while Barack and Michelle Obama smiled ever so casually, fly E.T. through the skies on a bicycle, sit next to Ernest Hemingway, allow Kelly Ripa to experience hosting a daytime talk show with me, get carried away by King Kong, help Indiana Jones take the golden idol, remind Charlie Chaplin of how short he really was, square-up with Fidel Castro, get my hand moulded into wax, experience my first ever so-called 4-D movie, and participate in a full-range virtual reality simulation of Ghostbusters where we were able to battle and catch ghosts. The Minskoff Theatre played host to the Broadway production of The Lion King which, even all these years after its inception, is still an amazing experience. It was very much like watching the movie all over again, which I made a point of seeing the month it was released in 1994, but breathed such new life into what would have otherwise been a stale monument in my distant childhood. Let it be known that no expense was spared when venturing only ten steps into Central Park by Columbus Circle before briskly turning back and heading toward the nearest shopping plaza. A film crew was on location shooting imagery of a concrete sculpture atop which a golden ornament of some kind sat, and it was fascinating to see how nearly everyone was in one of two camps at that moment: acting entirely blasé toward it or contemplating on how to photobomb the camera at points in an attempt to immortalise themselves on film, regardless of what it was about.

Of course, the foodie in us came out and it was not disappointed in the slightest. The Brooklyn Diner on 43rd was incredible. The décor exuded a subway-esque atmosphere that was very alluring. For me, a hamburger and fries. For my girlfriend, a veggie burger and fries. For my boss and his wife, a hot dog and fries. The catch? The hot dog was nearly an entire pound of meat – it was huge. A little pin was even attached to it that read “15-bite dog.” Challenge or no, it was assiduously avoided as the two cut it into comfortable portions between them. Being a beef and potato fanatic myself, passing positive judgement on my dish wasn’t difficult at all. That had been the first time I’d eaten fries served in a cup with rosemary and bay leaf dressing. I hesitate to speak on her behalf, but the veggie burger didn’t fare as well in the satisfaction department. Wrapping this venture up, to give yet another example of distributable portions in this establishment, a woman seated next to us who no sooner remarked on the size of the hot dog we’d received got a chicken pot pie she’d ordered and it was nothing less of a whopper. Considering the pan and height of the crust, it had to have stood a whole eight to nine inches from the table and easily more than seven inches in diameter. Something tells me she had a distinct amount of leftovers the following day. Next came the desire to have an authentic New York pizza. Despite my near complete lactose intolerance, I was hell-bent on making this happen. Fortunately, a recommendation made to my boss during the first day of the convention lead a crew of us to Don Giovannis. Now I certainly don’t have my finger on the pulse of the city regarding it in relation to others, of which I’m sure invites a war of religious proportions, but I can say with unabated conviction that the pepperoni pizza here is the best that I’ve ever had. Supplanting my long-time local favourite, Victorios, is no minor feat, make no mistake. After consuming three large pizzas and a few beers, a sort of childish depression kicked in understanding that there is no comparable pie in Ohio that I’ve ever tried. To help rationalize this, I’ve partitioned my favourites by localities now. When in Manhattan, it’s Don Giovannis. When in Alliance, it’s Victorios. Although I still wish teleporters were viable…

The only real disappointment in this aspect was from a restaurant called The View. Located on the 45th floor of the Marriott Marquis, this apparent bungalow for the affluent played host to a menu where your only option was to participate in a three-course configuration and deviation from this was not allowed under any circumstances. First strike – totalitarian enforcement of the laws of the kitchen. On a more practical sense, cumulatively this was going to be way more food than I’d ever or could possibly even consider eating in a single setting, yet there was nothing I could do other than stuff it down. Furthermore, my palette for exquisite foods of this sort wasn’t broad enough, thus I was able to eliminate nearly everything on the menu as being something remotely appetizing. Yes, I do have a sensitive palette. Yes, I do have issues with textures. So yes, I am a picky eater. The appetizer, a salad, I ordered reluctantly for fear of it being over lavished in something so exotic that by only smelling it you’d endanger fifteen species of turtle; this turned out to be the case. Second strike – simplicity will always win out over complexity, especially in the food department; I was enjoined to waste the entire dish. The main course was a bit of steak, by that I mean a mere nibble, and steamed vegetables. This was agreeable although I prefer my steaks without butter. Dessert was a flight of gelato: four flavours with four distinct toppings. For drinks I settled for merlot and a glass of water. Verdict? Unimpressed, especially considering the price. The only redeeming quality about the place was the fact that the seating floor gradually rotated. It is exactly as it sounds – the floor rotates while you sit on it. Not in the way that manipulates the G-Force during astronaut training – this was incredibly subtle. Thus it is possible for one to get dinner and see the heights of the Manhattan Mountains all around you. Third strike – if I like your floor engineering more than your food, you’ve confused your priorities.

The streets themselves seemed to emanate with a life of their own – almost as if the very concrete would at any moment reach up to greet one with a handshake and offer recommendations for tourist hotspots. Carousing past the mammoth towers with open doors proved to be far more inviting than initially thought since each of them offered something different than the last. On display was the ingenuity of human design philosophy made real. Even though the employees contained inside were either too uninterested or too excited, they indeed improved the impact substantially, and regardless of the sway of mood, they were at minimum courteous.

However, for all of the distractions and entertainments that are on offer in the core of the apple, for all of the glitz and glamour, for all of the crowning achievements of engineering and Capitalism, when considering humanities it is an absolutely appalling place to experience. It’s important to understand that the lifeblood of this city is money. This is not a facetious exaggeration; everyone, everywhere, at all times is trying to sell you something regardless of how banal the item or service is. Every street is littered with food trucks and kiosks, makeshift tables holding designer product selling for literally seven-eights of its price in a major retailer (which, hilariously enough, we experienced this in Harald Square across from Macy’s), makeshift crafts and souvenirs for the unsuspecting tourist, news stands that offer all sorts of magazines and unhealthy treats and, worse yet, apparently homeless people passively vying for only money. It is not a far-fetched assertion that anyone you see walking on the streets is physically moving only because whatever web of entrapment constructed by money that they’re involved in has compelled them to do so, certainly in perpetuity. Moving for the grind, as some in my generation term it, comes as natural to them as breathing. In this, each of them is a self-maximizing preference seeking agent and the only objective is money – no more, no less; and this is a universal truth for all of its residents.

This very mistaken view of worshipping a pseudo legitimate impetus for the kinetic energy which places all humans in motion relative to society stretches to all aspects of human existence relative to our environment. Once on a walk toward Central Park West, we travelled north on 6th avenue and the closer we got, two things became obvious. First was that the congestion of people tended to simultaneously thicken yet disperse, and intermingled within them on one side of the street was pile after pile of garbage. Waist-high walls, in plain sight, consisting of one white plastic bag after another, each one brimming to the point of bursting, some in fact did, that stretched for nearly two entire north-south blocks that bordered 59th avenue which is the street-wise border between the city and Central Park. Not a single person, not a one (including myself shamefully), tried to do something about it. Burst bags allowed their contents to pour out onto both the street and sidewalk, and one by one people simply walked past them, some stepping on the rubbish, and continuing on with an all too blasé attitude. According to the Centre for Sustainability and Commerce from Duke University, on average, a single person produces roughly 4.3 pounds of waste a day, and the yearly average for the United States is about 220 million tons. Now, according to GrowNYC, a group focused on sustainability relative to New York City, current estimates suggest that the people in that city alone produce 12,000 tons of waste a day, most of which is plastics that are produced using fossil fuel and are only used once. Performing some simple math, we find using the current estimates that the yearly average of waste pounds produced by NYC alone is 4,380,000. One has to ask where it goes? Some goes to incineration, some goes to recycling, but most goes to landfills outside the city. There’s simply too much of it and those in governance have absolutely no idea what to do with it other than to sweep it under someone else’s floor mat. But that’s okay because they’re still raking in record profits and still able to keep their $5,000-per-month high-rise apartment. And the constituents within the city, concerned first and foremost with fulfilling their money-demanding responsibilities, don’t offer a solution the time of day.

On any given day you’d be hard pressed to venture down an avenue and, when being propelled onward by the momentum of the bulge, trip over a few of the city’s homeless. They were affixed to the pavement in one of two locations: on the sidewalk against the wall of a building or elevated on steps. Wherever they could sit that was in the periphery was suitable enough. Their pining for money was performed either passively, by using what is now known as the marker on a cardboard cut-out (the social media plea for help), or aggressively by acting like the criers so often seen with the aforementioned turncoat salespeople on the street. Those in the former lot did nothing but sit and read books or sleep, expecting the cup or container placed in front of them to hopefully produce a yield of something. I should state, for the record, that homelessness is an inexcusable, intolerable, and inhumane reciprocal of our society that goes largely ignored, and that it is the reciprocal of nothing more than our worshipping of money and simple overpopulation. That being said, the truly horrid aspect behind all homelessness is that because it is the byproduct of money, it is morally difficult to ascertain if one is actually homeless or perceptibly homeless. This proves to be an issue when one considers what to do to help, especially when that help manifests as the donation of liquid assets, i.e. cash. One has to ask, legitimately, what is that person going to do with the cash that was given to them? It is a well known statistic that those people who are incredibly wealthy are far less likely to be philanthropic than their poorer contemporaries. Considering that those people rely far too heavily on supposed moral validation, it’s not too difficult to see how feigning homelessness at the right locations and at the right times can prove to be an incredibly lucrative venture. In fact, these types of people have already been drawn out into the open and exposed in some cases, be they regular people or supposed military veterans. Furthermore, even if one is known to truly be homeless, what good is a pity coin going to do them? It never actually addresses the root cause of the matter. Instead it allows the giver the ability to fulfill their daily faux-altruistic requirements and the recipient an all too minor and insignificant lash back against that which put them there in the first place. Existing in this grey matter of subjective morality, we continued briskly past each one of them, ignoring the signs and pleas, just as everyone else did. The suits marched toward their businesses, the hip young crowd ran toward the fashion outlets, and us tourists danced from one safe place to another. The Coalition for Homelessness estimates that a little over 60,000 people are homeless in New York City alone. Think about your surroundings right now. Can you imagine yourself, your spouse, your children, living by the nearest abandoned building? Scraping your food from the inside of a waste bin? Going to sleep, if you can, night after night wondering what the hell you’re going to do to get out of that mess that we impose on each other?

For me, the trip to New York City was both an entertaining and enlightening experience. One that constantly kept me in conflict with myself; to let myself enjoy the experience while simultaneously understanding that none of it wasn’t possible without money. I can’t imagine I would ever visit there on a whim, but it’s sure to go down in recorded history as an interesting place.

Header Image – New York Skyline (https://pixabay.com/en/new-york-city-skyline-building-14606/)