2012/08/31

An Exploration of Human Potential Part 1: Food for All

Fresh out of my college career, it seems appropriate that while I search for daintiful employment ever out of reach by a hair (or in my case, a chasm of inexperience and stupidity on my part) I look forward to all the potential happenings in my time on this ball of rock and iron flying through space.  As a mostly cynical person, it seems odd that I have an optimistic outlook on human potential, especially given the history of empires rising and falling under their own hubris, and being a resident of the currently only remaining global empire, it seems like a forgone conclusion as we approach another presidental election playing out like a sitcom between two talking heads that Americas time is nearing its ultimate demise if radical change doesn't happen, and it would have to happen as a movement of peoples empowered through knowledge using modern technology.

On that note, I want to dedicate a post of this blog to exploring all the potential greatnesses of man that might fall within my life.  Maybe we might even reach immortality this century, and maybe I will become productive enough to afford such a miracle.  Regardless, there are many paths the whole lot of us may walk, and I like to hypthesize them as a thought experiement.  So here they are, in an order I would consider the greatest potential to the least.  This will be a series on this topic, since each idea can take up its own post.

1.  Fully Automated Agriculture - singularity is a popular term in science fiction to denote the point where machines become sophisticated enough to improve themselves without human intervention, leading to a sudden tremendous increase in technological power solely off the innovations and revelations of the computers themselves.  While that will fall lower on this list, it is fully in the realm of possibility that this decade sees a third industrial revolution - the first was a revoluition of power, the second was a revolution of silicon and information, and this third one would be a revolution of work. 

We can already see the saplings of this revolution taking root - from military drones acting independently, to self-driving cars, to Foxconn in China firing the grossly underpaid staff that man their factories to replace them with cheaper automated production lines.  I feel the greatest revelation will come firstly in the form of agriculture - today, one of the last vestiges of manual labor that persistently dominates the American economy is the handling and picking of fruited plants that are not easily harvested by combines in the same way potatoes, carrots, soy, wheat, or corn are.  I'm looking at you, raspberries, priced at almost $5 a box.  More sophisticated advances in robotics will absolutely produce machines capable of analyizing these delecate plants and extracting their fruits with precision currently found in 3d printers and car manufacturing lines of today - except it will require an analysis of an environment rather than a programmed behavior, which is many orders of magnitude harder to properly construct in software, which is the main limitation of this breakthrough. 

A rant for another time, but there is another delimiter of this revolution - and it isn't even the grotesque agribusiness and corrupt farming market of America - it is an introverted community of innovation that is focusing more and more on profit and less and less on value of creation.  It is a society-wide depreciating behavior that is emerging rapidly in this information age of ours, since as we get more connected and intertwined the stakes are raised and competition becomes ever more fierce.  There are few, if any, dollars out there going into proper revolutionary research, especially when easy money grabs like stealing a few fractions of Facebooks market share promise vastly lower risk with tremendous returns if successful.  It is a depressing reality that true innovation is falling to the wayside, as investment is drastically favoring the easy money grabs of the day over revolutionizing society for the better.

The implications of this automated revolution will be more of a shift in culture and morals than anything else - the realization that we have entered an era of "free" resources, where no human input is needed in the production of goods and services while the fruits of the labor go to those who funded the initial creation of such devices rather than those that reap the labor. In the same way the modern copyright stranglehold hurts content creativity by allowing the lucky few who storm the market to sit on their laurels and make perpetual profits on products rendered decades prior, the same will inevitably come of this automated revolution - but in the same way it is inevitable that humanity as a whole will discard bygone conceptions of how digital information be restricted to a select few to allow the distribution, when the distribution itself is inherently free, once we have automated cars and robots that can harvest and deliver food directly to those that desire it, requiring no human input as they are powered by sun, thermal, nuclear and as they transport independently of human intervetion, we will realize the futility in the capital market we have in place - because as things get worse, as the game becomes more and more winner take all, the tremendous wealth divide will either destroy us, or propel us into a new era of reason, where resources are not distributed based on who took an idea to market first and captured the business, but by those who will put in the effort to improve what has come before them.

But agriculture as a fully automated business is not just a potential happening, it is inevitable in my eyes - the writing is on the walls across the board, it is so close that we could potentially have it within months if the bastions of old money stood aside for the sake of progress, in that we could develop and put in place a system of automated farming to such an extent as to feed the world in a few short years of time.  Once the human element is removed, we will have one of the greatest utopian ideals throughout literary history - free and plentiful food.

Not to sound too cheery or optimistic, there are many ways this can go wrong.  Besides the capatalist paradigm shift mandated by the removal of the human element from the means of production in this case, there also needs to be a rapid shift to market of these concepts upon their implementaiton or else it might become akin to organic crops of today - a passing fad.  There is also the factor that as the value of unskilled labor drops, the motivative force driving these kinds of innovations becomes more lax, and I'd aruge that is the current reason such a revolution has not already happened - be it the slaves of old or the slaves of today, who lack mobility in both social and monetary form, who are forced to slave on land for those with more than enough to spare to try to feed themselves and those around them, who can't take the risk without risking their livelihood - they are still functionally dirt cheap, in most nations around the globe.  If the value of unskilled labor goes up (and as another quip, it never will again, because we are accelerating our overpopulation of the globe at the same time as computerized innovation is supplanting the need for almost all unskilled workers) we will see a more rapid drive to this kind of automated utopic state.  I hope for the best on this front, since there is so much potential that can arise so soon.

2012/08/13

Python Learning of the Day : Dive into Python 3

As a big fan of Python 3 (Unicode out of the box, more logical behavior of almost everything in general, etc) I can't wait to be using print() instead of print more often.  So I'm reading Dive into Python 3, besides the fact I forget how to write most of a language whenever I go a few weeks out of practice, and the fact my Python education was probably the least comprehensive of my college languages I experienced (CS120 never even got to classes with Python) I still love the language, even if I hate dynamic languages for the obfuscated bug testing required in them.

The syntax is so clean, and I do my interview street challenges in python every time (even if they still use 2.7) and it is astounding how much brevity and clarity can be stuffed into a small package.  For the Evernote Codesprint, as an example, I had a problem that would finish in Python in 16.15 seconds and the time limit was 16.  I tried some rough optimizations, but the way I wrote it used a dictionary and any attempts to translate the inputs into something else after reading them would have cost more than the inefficient dictionary lookups and deletes that were costing me the time limit.  So I just translated the thing into Java, which took approximately 3 - 4 times the lines of code to do the exact same thing in the exact same way, with the same level of clarity (if I want to get a job anywhere, my code should at least look reasonable).  The Java version ran well under the time limit of 5 seconds (it ran in around 3.1 - 3.2 on the longest run problem of the set) so it doesn't make me feel any better about how painfully inefficient python and dynamic languages in general are.

So I'm reading Dive into Python 3 now, since I don't know crap yet about pretty much any language let alone my least well versed one, so I finally got the concepts behind the different containers down I hope.  Lists are mutable and formed with [], tuples are immutable lists formed with (), sets are unordered collections formed with {} and single elements per comma, and dictionaries are unordered collections formed with {} that are colon separated key:values.  I guess that is enough learning for today!  Time for more yogscast.

If anyone is reading this (you silly goose) the book is nice so far.  A little bit more newbie than what I would hope for (there is a tremendous dearth of books for people that know language concepts but are completely lost with larger scale endeavors like using external libraries / APIs / polyglot applications)  but it seems slightly above the average book level and at least doesn't start with hello world and how to declare a variable.  The first chapter being about how to install Python was a little unsettling though... come on, you should know how to install an interpreter if you want to use a scripting language.

Post-Graduation Jobs Rant

As a recent college graduate, job hunting sucks.  Wading through thousands of messages in a week looking for entry level software positions is a pain, and praying to get a reply is even worse, especially when you are as crappy a developer as me.  As I now cross the 3 months past graduation threshold, I am now beginning to look into just internships to get something going, because after a couple InterviewStreet codesprints that turned up nothing, and a couple of emails of cover letters + resumes (have no fear, mine is pretty sparse, if you are a prospective employer reading this at some later date.. ). 

It is mostly my own indecsiveness that causes it.  I like many different languages, and prefer using the right-task-for-the-job approach instead of focusing on one platform, but then I can't really write down that I am an Android / Django / JS / Jquery / etc developer because I haven't made anything tangible for any of those platforms.  And knowing all the languages in the world is meaningless if you have no large projects to show for it.  The best code sample I even have at this point is my sophomore year game development tower defence game written in Swing without any gaming libraries or GPU rendering.  That will definitely turn some heads.

The greatest hilarity is how I keep hearing stories of these programmers who can't do fizz-buzz or simple string operations getting 80k a year jobs and ruining development teams.  Or projects without source control, any documentation, or any testing.  I feel like I could help there, but whenever I read through a few dozen job ads a day, they all want these technologies I have never worked in, so I am hopeless in endevouring.  The only skills I really have are MPI / Cuda / OMP / Swing and Windows Forms.  I fortunately know a lot of languages and concepts from C / C++ / Java / C# / JS / Python, but all those concepts are meaningless without tangible showmanship.

So hopefully this blog can help.  I am going to develop something for some platform that will help me get my foot in the door somewhere.  It will be open source, of course, because I am one of those neckbeards (even though I am clean shaven) that think proprietary software is unethical because it is like giving someone a car with the engine carriage soldered shut.  I will probably end up writing such software because I need to eat, but until that happens I will keep my condescension above my pay grade.  That would be a nice rant for another day.

2012/08/10

Free Games Culture

I never knew THIS many GPL licensed games / engines existed.  Especially free ones.  What a field day!  Maybe I'll stop putzing around reading books and start contributing to one of them.  That replacement Infinity Engine looks extremely promising, especially with the renewed interest in Baldur's Gate with the "enhanced" edition supposedly coming out soon.  It is such a pain trying to get the originals running on even Windows 7.  Speaking of which, it would be amazing if I had friends to play video games (like Baldur's Gate) with, since that game was amazing.  It must be even better when played like group DND.

2012/08/09

XML and Other Complaints About Data Serialization Formats

I love JSON alot more than XML.  That doesn't say much, considering I've never done a project using either of them for any data serialization ever.  But in the context of data interchages, XML is ubiquitous and oh so crappy.  And it sucks because of the redundancy in both machine and human like context.  Of course, JSON's website itself describes these problems as well as anyone, so read what smart people say rather than idiots like myself on why JSON > XML.

But even if it is better that doesn't mean it is common, and whenever I look at or write C# comments for documentation having to write tags makes me want to punch babies.  Or when I just read html it makes me mad know how much wasted bandwidth and effort goes into every </div> in every document on the internet, ever.  Because JSON gets right what very few do - an order of operations that illustrates what needs to be said and nothing more.

In JSON, answer : 42 is a key value pair that is analygous to how you write a map in Javascript.  Since JSON is Javascript, this comes off as somewhat of a duh.  But the comparable key : value pair in XML needs to be something like <answer value=42 /> or <answer>42</answer> and both use up a superfluous number of characters in a context where they are unncessary.

That is enough praise for JSON though, on to my issues with it, since I am ranting.  My largest gripe with the format is that by setting out to be noble and very JS compatible, the format limits itself to the awful grammar of Javascript that has been documented by much smarter people as sucking in many ways.  If it didn't suck so bad, concepts like Coffeescript would never have arose in the era of web development - but Javascript is not so named without cause, and Sun's influence on the language lead it in many ways to be as "ugly" as it is today.

So my major qualm boils down to this: I want py PYON instead of JSON.  I much prefer the syntax of:

collectionFoo:
   doo : 1,
   loo : 2,
   zoo : 3,

To the JSON equivalent:

collectionFoo {
   doo : 1,
   loo : 2,
   zoo : 3,
}


Yes, to save one character.  To use tab intentation to denote end of statement rather than curly braces.  Because we already use the tabs in the first place.  It drives me nuts writing code in anything but Python anymore, especially in Ruby, because all these other languages have constructs like braces or End to denote the end of intended scope, when you already indent the content anyway!  It is best practices and the most readable, it is why the K&R convention arose after the C book came out, because the collective developer community looked at code and said "You know what really makes this stuff easy to read?  Indentation!" so they indented.  And read with indents.  But kept the braces and other nuances because it make compilers easier to write.

And that is a valid arguement.  If you are writing some 2 week homework assignment compiler and don't want to handle the different conditions for white space.  It takes one integer (or short, or byte - how far to you plan to intent the lines?) to keep count of leading whitespace on each parsed line, and that whitespace can and should denote the scope the line should be considered in.

I also have the conflicting viewpoint in favor of code minimization, and for those who just like things the way they are.  Now this goes against Python syntax by saying you can still just keep the {} syntax in place, but not make it mandatory, and in the absence of braces default to white space significance, but if you have braces, white spaces are ignored.  That is the best of both worlds in my mind, and I feel that the time costs of writing trivial parsers that can just do a switch if the next significant character after a : in a declaration is a {, or a newline, or an indentation, or non-whitespace character.  Or you can have it so that if the following character is { it is whitespace ignorant or if it is : it is whitespace deterministic.  You can save the collective milliseconds of developers writing the code, and then the dozens of times it will be read following, for the sake of clarity.

2012/08/08

Blogger Fonts

This place is fun!  I was editing the html and made this thing look like crap (my mediocre html skills do not apply well here, especially in the context of page design, css, remembering color hex codes.. yeah).  Great waste of an hour though.  I found this font called Permanent Marker with absolutely no sense of character balance or stroke, so since there is option for Comic Sans to make anyone reading this irrationally angry, I am using this new font instead.

I do find the lack of the Deja Vu, Ubuntu, and Liberation font sets somewhat lacking.  I really like those over the Droid family, just for personal reasons.  Shame on you blogger for not catering to my desires alone!

The Silly Plot To Forge a Blog (possibly in fire)

In case anyone is reading this (how foolish of you!) I might post things here in the future, and if I do, they will probably be nonsensical rants about various subjects I have no right forming an opinion on because I am probably wrong in some way.  Anywho, I have a variety of online tags along the form of Zanny on various sites, be it reddit / hacker news as Xanny, steam as Zanny, skype as LordZanny, my email is LordZanny@gmail.com, etc.  Hence the name.  

So without further adeu, I guess I might start posting some rants about things at some point in time.  I will primarially use this place as a general place to link back to for various rants and nerdisms I complain about on the various internets at indeterminate times so I don't have to repeat myself too much.  I do like hearing myself talk (or write illegible text, in this case) way too much, like a lot of anonymous internet nerds.