As the title suggests this book concerns itself with antinatalism, a philosophical school of thought that is against human beings reproducing. In a nutshell the book contends that the human race should voluntarily become extinct by not producing more children.This viewpoint is explored through various short essays relating directly or indirectly to the authors less than idyllic life. The book is similar in tone to Jim Goads the redneck manifesto or some of Henry Rollins writings on the less savory aspects of working class American life. As such most of these essays come across as a caustic blue collar rant about why life sucks for most people and hence why bringing more people in to the world is a bad idea.
Needless to say this is not the book to get someone as a present for their baby shower. Setting writing style and the fact that this book is ninety percent navel gazing polemic aside for a moment lets attempt to distill the main perspectives the author puts forward to justify this position:
1) Buddhism or rather his take on one of the “four noble truths”. AKA, the first one: All life is suffering.
2) The work of David Benetar a south african philosopher who advocates antinatalism.
3) The authors experiences and subsequent disillusionment with being a christian fundamentalist.
Position number one pretty much consists of the authors condensed version of the early life of Siddartha told in an extremely mocking tone, stopping at the realization of the four noble truths where upon a brief commentary is provided on each of these aforementioned truths. Suffice is to say all apart from the first truth, all life is suffering, a maxim which the author agrees with, are subjected to a folksy bar room style critique and are rejected as valid techniques for coping with reality or justifying bringing more kids into existence. Being as I am not a buddhist this position is not really that interesting to me, hence I am not going to explore it any further.
Position number two: David Benetar is the author of a philosophical work entitled better never to have been (which I am currently reading, it’s quite dry). The main argument put forward in Benetar’s book relates to a perceived asymmetry between the positive and negatives aspects of life and how this asymmetry relates to those yet to be born. The argument is expressed as follows: 1) The presence of pain is bad. 2) The presence of pleasure is good. 3) The absence of pain is good, even if that good is not enjoyed by anyone. 4) The absence of pleasure is not bad unless these is somebody for whom this absence is a deprivation. The argument pretty much boils down to the fact that by not bringing kids into the world you don’t expose them to pain which is good but you also deny them the possibility of pleasure which is not considered bad because they never experienced pleasure in the first place. Therefore don’t have kids. Jim’s contribution to this argument is a bunch of crappy analogies and some bitter personal anecdotes which don’t add anything to the discussion in my humble opinion.
This position itself however does interest me a great deal, so lets dig into a bit. I am currently still in the process of reading Benetar’s book and doing my own research so my opinion on this is a little half baked right now. My basic problem with it boils down to the question, what is pain and how does it relate to pleasure? I don’t think you can neatly separate the two or represent them on a one dimensional graph, like temperature, with a sliding scale going from playing with a puppy dog to being crucified. As such I don’t think you can make assertions such as pain is the opposite of pleasure, I think physical experience is too full of nuanced mixed pain/pleasure sensations for such a crude model. For example how do you account for painful experiences which become pleasurable i.e endorphins released during sports like running or other intense physical activities which cause pain with transitions into a pleasurable sensation. Also just the fact that in some cases pain can be useful (alerting you to the fact that you might bleed to death unless you get medical attention) and in some cases pleasure can be quite harmful (drug overdose much?) kind of make me suspicious of this argument. In any case, I digress, Crawford does not do a good job on expanding on Benetars argument and if you are interested in learning more about this position you would be better served going straight to the source material.
Position number three: Jim takes the position that if you are a Christian fundamentalist who believes that the rapture will come and that most of humanity (8 out of 10 people) won’t get into heaven then statistically this means if you have kids they will in all likelihood go to hell (i.e suffer the worst pain imaginable for all eternity). By not having kids you wont expose them to all the pleasures of life but then again you don’t put them at risk of such torments, therefore you should not have kids. I am not nor have I ever been a fundamentalist Christian so I am not going to comment on this point of view.
I would rate this book at about 2 and 1/2 amazon stars mainly because I enjoy the authors angry writing style and think he comes across as pretty articulate and at times amusing (I have a pretty dark sense of humor). However, if I were to travel back in time and buy this again I probably wouldn’t pay more than $3-$4 for this book. At the time of writing thats about the price of a pint of PBR which I would happily buy the author in sympathy for his crappy life. The reason why I dock the other two and a half stars is that this book pretty much reads like a collection of reasonably well written blog posts cobbled together into dead tree format. Their is little depth to any of the opinions proffered here most of which you can find on the authors blog for free.
In case you are wondering why I bothered with this book in the first place: I am a huge Thomas Ligotti fan and am in the process of reading the conspiracy against the human race (which I am enjoying thus far). Jim Crawford/David Benetars names popped up pretty frequently in discussions surrounding the book hence I decided to buy them. I am not finished with conspiracy against the human race yet but I would recommend it over this in a heart beat as it covers much of the same material but does so with better style, greater depth, more variety and less personal anecdotes.
July 18, 2010
June 7, 2010
PyGameSF meetup Wednesday June 9th 6pm @ Main SF public library 4th floor Sycip room
The June PyGameSF meet up will be at the Sycip conference room on the fourth floor of the main San Francisco public library beside civic center BART. The library closes at 8pm so we will reconvene to frjtz on hayes street for dinner/drinks afterwords.This month’s presentations are:
- Casey Duncan: “Grease: it’s a game framework, no it’s a game engine, no it’s a framework for making game engines; and now it’s more than just vaporware!” Grease is an open-source project for rapid Python game development. Casey is going to give a little guided tour of the not-just-sci-fi-anymore Grease API and talk a bit about future directions. He is also going to talk about using Sphinx to document Grease, and how you can, and should, use it to document your own projects and ideas.
- Al Sweigart : “Invent Your Own Computer Games with Python.” Al’s presentation will cover his book which teaches kids (and adult beginners) how to program by making computer games. Al will talk about the methodology his book uses, things he’s learned about teaching programming and games, and about how games can bring more people into software development. The book is under a Creative Commons license and is available for free at http://inventwithpython.com. The book is also for sale in print on Amazon.com.
May 23, 2010
PyGameSF meetup Wednesday May 26th 6pm @ Main SF Public Library
The May PyGameSF meet up will be at the Sycip conference room on the fourth floor of the main San Francisco public library beside civic center BART. The library closes at 8pm so we will reconvene to frjtz on hayes street for dinner/drinks afterwords.This month’s presentations are:
- Dan Grover : Audio on the iPhone/iPad. produce visually striking results. Dan (guy behind shovebox, etude, simplechord and phonefinger) will give an overview of the audio APIs available on the iPhone OS.
- Warren Stringer: Ontological synesthesia – performing visual music on the iPad. Warren Stringer will be showing Tr3, a platform for creating real time ontologies. Warren will be using Tr3 and OSC to create a visual music performance, using two iPads, projector, one iPhone, and one iPod touch. Anyone with OSC music controllers are welcome to join in. More information can be found here.
May 22, 2010
How to manually update your n1 to Froyo (Android 2.2)
Download the 2.2 image from here. Mount your n1, rename the image file update.zip, copy it to the top level of the mounted n1 filesystem, follow these instructions here. I bought my n1 from google directly, its not rooted and the previous instructions work for me. If you are an ATT user and are having problems with the previous instruction here is another install guide.
One problem I encountered after updating was that helix launcher (app thats a dock for Android devices) would perpetually crash and request to be force closed thus blocking all access to the phone. I solved this by using the Android developer tools to uninstall the apps from the command line issue the following command: adb uninstall com.helixproject.launcher2
Once you have updated to 2.2, you can install flash from here.
One problem I encountered after updating was that helix launcher (app thats a dock for Android devices) would perpetually crash and request to be force closed thus blocking all access to the phone. I solved this by using the Android developer tools to uninstall the apps from the command line issue the following command: adb uninstall com.helixproject.launcher2
Once you have updated to 2.2, you can install flash from here.
May 19, 2010
Google IO day 1
Just got back from google IO 2010 day 1. Here are my disjointed ruminations concerning the event. The keynote was all about pimping html 5 and chrome. It was a total yawn fest consisting mainly of boring web app demo’s, dreamweaver, etc. In short nothing particularly new or exciting was revealed. The most interesting facts I took away: chrome now has 70 million users up from 30 million, their is some sort of chrome app store in the works and google also blew $120 million on buying a company with a bunch of video codecs which they are open sourcing.
While the keynote was all about the web most of the people in attendance seemed to be all about Android and the mobile space. From the breakout sessions to the floor, everything todo with Android was jam packed compared to the other google technologies on offer. Based on some of the conversations I had, I would say about 50-70% of the people attending were at the event for Android related stuff. Towards the end of the conference some of the Android breakout sessions were so packed that me and a large number of other developers could not get in despite arriving more than ten minutes early. In contrast the google enterprise room looked totally empty.
The wall of Android devices on display was an impressive testament to how far the platform has come since the launch of the g1 October 2008, my touch April 2009, nexus one January 2010. The list of devices running android is impressive and growing. Notably absent from the event was Dell, despite the fact that several of their devices were included in the wall. An interesting thing about seeing all the different Android phones/devices on display together was that you really got to see what a fractured experience the whole platform currently is right now. Samsung, HTC had great looking phones with Android 2.0/2.1, very shiny fun to play with. Most of the Motorola/Sony/LG’s stuff was all 1.5/1.6, some of the hardware was nice but the confusing custom UI skins and bizarre half baked in house apps just made using them a total shit show.
One of the sessions I attended was on writing real time games for Android. The session was quite OpenGL ES focused and gave a nice high level overview of the Android hardware landscape. Specifically the technical part of the session dealt with: practical differences between Android operating system versions which you need to think about when writing games, common OpenGL extensions used to achieve better performances and how to design a multithreaded java/native code game for the platform and the accompanying pit falls you might encounter.
One thing I had hoped to get out of the session was a hint as to where google is going to take Android with regard to audio/multimedia programming capabilities. No hints were revealed in this session. In fact one of the first question the speaker received was about doing audio programming in games. I was not super impressed by the answer given which was basically do your mixing with PCM using native code (c/c++) and pass it back to the java Android media stack… So how is this going to gel with Android x86 devices? If Intel really is part of the big google tv/set top box announcement thats supposed to happen tomorrow that means some or all of those devices will be running on x86 not ARM (chip architecture that most Android devices use) which means the current crop of apps will have to recompile to target those platforms. Audio games are pretty hot right now (checkout titles from Smule, guitar hero, rock band, etc). Iphone has OpenAL support, which is an open industry standard, why not Android? Multimedia is still very much the achilles heal of the Android platform in my book.
Another point that came up in the game development session I attended was the way that games get noticed and become hits in the Android app store. The google guy giving the presentation had a graph showing the download rate for his game replica island which was free and had a few million downloads since it launched. With no press release, just uploading it and giving a single talk to about 200 developers to announce its launch, he saw roughly 8k downloads per day. A subsequent press release which he had written and being featured by a prominent blog such as gizmodo got him a significant bump in download traffic but all of this paled in comparison to the massive jump that being a featured app in the market place got him. This is the same story as in the Iphone app store.
The takeaway is that discovery in both google/apple’s app stores is a big problem exasperated by the fact that many mobile games companies seem to adopt the following strategy: Chrun out about 50 low quality games, pray for one of them to hit gold, then abandom them all once interest drops off. This causes the market to be flooded with shitty low quality apps. Another interesting piece of information from the game development talk was that the average paid app seemed to go for about $3.50 a pop, a price not to far from the average paid app on Iphone. Mobile games/apps have a lower price elasticity than desktop/console games. Hence the aforementioned business model.
Gaming is all about the numbers and with mobile devices the rule is going to be all about lowering production costs by leveraging existing assets (i.e easily porting games to different platforms is huge). I got to see a demo of Unity running on an Android tablet (looked good) at the conference. Very interesting considering the recent rumblings about apps developed with such toolkits as flash/Unity being banned from the Iphone app store. Unity is a game editor which allows developers to write games which will run on multiple platforms (wii, ps3, web, iphone/ipad, osx, etc), apparently they are about to release an Android version of their product which they were demoing at the conference. This is significant as a number of the top ten games on Iphone are built with Unity. Given the effects that a ban on games developed with such tools could have on the cost of creating cross platform mobile games it will be interesting to see how the economics of the mobile game development scene plays out.
Tomorrow seems set to be the big day: froyo (Android 2.2), possibly some free tech goodies given out, what are Logitech/Sony/Intel going to unveil with regard to set top boxes, what will flash be like on Android. Fun times.
While the keynote was all about the web most of the people in attendance seemed to be all about Android and the mobile space. From the breakout sessions to the floor, everything todo with Android was jam packed compared to the other google technologies on offer. Based on some of the conversations I had, I would say about 50-70% of the people attending were at the event for Android related stuff. Towards the end of the conference some of the Android breakout sessions were so packed that me and a large number of other developers could not get in despite arriving more than ten minutes early. In contrast the google enterprise room looked totally empty.
The wall of Android devices on display was an impressive testament to how far the platform has come since the launch of the g1 October 2008, my touch April 2009, nexus one January 2010. The list of devices running android is impressive and growing. Notably absent from the event was Dell, despite the fact that several of their devices were included in the wall. An interesting thing about seeing all the different Android phones/devices on display together was that you really got to see what a fractured experience the whole platform currently is right now. Samsung, HTC had great looking phones with Android 2.0/2.1, very shiny fun to play with. Most of the Motorola/Sony/LG’s stuff was all 1.5/1.6, some of the hardware was nice but the confusing custom UI skins and bizarre half baked in house apps just made using them a total shit show.
One of the sessions I attended was on writing real time games for Android. The session was quite OpenGL ES focused and gave a nice high level overview of the Android hardware landscape. Specifically the technical part of the session dealt with: practical differences between Android operating system versions which you need to think about when writing games, common OpenGL extensions used to achieve better performances and how to design a multithreaded java/native code game for the platform and the accompanying pit falls you might encounter.
One thing I had hoped to get out of the session was a hint as to where google is going to take Android with regard to audio/multimedia programming capabilities. No hints were revealed in this session. In fact one of the first question the speaker received was about doing audio programming in games. I was not super impressed by the answer given which was basically do your mixing with PCM using native code (c/c++) and pass it back to the java Android media stack… So how is this going to gel with Android x86 devices? If Intel really is part of the big google tv/set top box announcement thats supposed to happen tomorrow that means some or all of those devices will be running on x86 not ARM (chip architecture that most Android devices use) which means the current crop of apps will have to recompile to target those platforms. Audio games are pretty hot right now (checkout titles from Smule, guitar hero, rock band, etc). Iphone has OpenAL support, which is an open industry standard, why not Android? Multimedia is still very much the achilles heal of the Android platform in my book.
Another point that came up in the game development session I attended was the way that games get noticed and become hits in the Android app store. The google guy giving the presentation had a graph showing the download rate for his game replica island which was free and had a few million downloads since it launched. With no press release, just uploading it and giving a single talk to about 200 developers to announce its launch, he saw roughly 8k downloads per day. A subsequent press release which he had written and being featured by a prominent blog such as gizmodo got him a significant bump in download traffic but all of this paled in comparison to the massive jump that being a featured app in the market place got him. This is the same story as in the Iphone app store.
The takeaway is that discovery in both google/apple’s app stores is a big problem exasperated by the fact that many mobile games companies seem to adopt the following strategy: Chrun out about 50 low quality games, pray for one of them to hit gold, then abandom them all once interest drops off. This causes the market to be flooded with shitty low quality apps. Another interesting piece of information from the game development talk was that the average paid app seemed to go for about $3.50 a pop, a price not to far from the average paid app on Iphone. Mobile games/apps have a lower price elasticity than desktop/console games. Hence the aforementioned business model.
Gaming is all about the numbers and with mobile devices the rule is going to be all about lowering production costs by leveraging existing assets (i.e easily porting games to different platforms is huge). I got to see a demo of Unity running on an Android tablet (looked good) at the conference. Very interesting considering the recent rumblings about apps developed with such toolkits as flash/Unity being banned from the Iphone app store. Unity is a game editor which allows developers to write games which will run on multiple platforms (wii, ps3, web, iphone/ipad, osx, etc), apparently they are about to release an Android version of their product which they were demoing at the conference. This is significant as a number of the top ten games on Iphone are built with Unity. Given the effects that a ban on games developed with such tools could have on the cost of creating cross platform mobile games it will be interesting to see how the economics of the mobile game development scene plays out.
Tomorrow seems set to be the big day: froyo (Android 2.2), possibly some free tech goodies given out, what are Logitech/Sony/Intel going to unveil with regard to set top boxes, what will flash be like on Android. Fun times.
May 18, 2010
Featured in Wired article on Google IO 2010
Just a quick post to say I was interviewed by Wired magazine for an article on Google IO 2010 yesterday. I am looking forward to having some fun and hearing about all the great new things google have been working on tomorrow.
May 15, 2010
Great article on the Irish economy
Recently I read a fantastic article in the financial times about Irelands economic crises. Overall I agreed with the piece but I found it a touch too optimistic about Irelands prospects going forward. The following are a collection of points I would make to support my thesis that Ireland is screwed for the next decade: 1) The vast majority of Irelands economy was construction or financial/legal services supporting construction (I think about 60% GDP was the figure I saw when I did a course on banking back in 2007). 2) Irelands current infrastructure (everything from roads to internet) is a joke and unlikely too get better due to the fact that massive amounts of public funding has been diverted into propping up property values through NAMA. 3) Current Irish bankruptcy laws are incredibly severe. A consequence of this is that many business are locked into inflated leases which puts limits on how quickly prices of food and other goods can come down. The end result of all this is that Ireland is still very over priced despite the fact that the ass has fallen out of the economy.
The big question this article raises for me is, given all of the above, how will Ireland’s economy reinvent itself? My prediction is changes in Irish bankruptcy laws will have to happen, massive gutting of public services (i.e education, healthcare) will occur and a decade of emigration for most young people while the nuclear winter clears itself up. The scary thing about all of this is that the USA, UK and a bunch of other countries seem to be in a similar position (i.e a large percentage of their economies were based on construction, this collapsed, the government stepped in and pumped a huge amount of money in to propping up banks/property prices). Even more disturbing is the fact that 50-60% of China’s economy is construction, what will happen when this property bubble pop’s?
The big question this article raises for me is, given all of the above, how will Ireland’s economy reinvent itself? My prediction is changes in Irish bankruptcy laws will have to happen, massive gutting of public services (i.e education, healthcare) will occur and a decade of emigration for most young people while the nuclear winter clears itself up. The scary thing about all of this is that the USA, UK and a bunch of other countries seem to be in a similar position (i.e a large percentage of their economies were based on construction, this collapsed, the government stepped in and pumped a huge amount of money in to propping up banks/property prices). Even more disturbing is the fact that 50-60% of China’s economy is construction, what will happen when this property bubble pop’s?
May 14, 2010
Location helper utility for Android
One of the killer features of Android smartphones is the ability for applications to grab your location and provide tailored service based on it. Implementing such location services on the Android platform is pretty easy but doing it in such a way so as to not unnecessarily drain your battery can be a little tricky. I just added a location utility called GeoUtil which does just this to my crossfit workout tracking application. The following is an explanation of this utility and how to integrate it into your Android activity and if you so wish add location information to your notes using the Snaptic API.
Lets review whats going on in the above code and talk about what GeoUtil actually does. mLocationManager is the system LocationManager service. Our GeoUtil class is the update-handler class for location updates sent out by the LocationManager service, it is a sub class of LocationListener. We indicate that we want location updates and designate that these updates shall be handled by mGeoUtil. The requestLocationUpdates() call to the LocationManager service dicates how often we will get updates on the location (those parameters have direct impact on battery drain, so they've been picked for a reasonable use-case tradeoff). In the above example we ask for updates no closer than 5 seconds apart (they can come longer apart, if the system decides to) and we also put a 10m change radius on the updates, anything less than that will be filtered out and no messages sent.
| Java | | copy code | | ? |
| 01 | |
| 02 | //Add the following member variables to your activity class |
| 03 | private LocationManager mLocationManager; |
| 04 | private GeoUtil mGeoUtil; |
| 05 | private static final int LOCATION_UPDATE_INTERVAL_MILLIS = 5000; |
| 06 | private static final float LOCATION_UPDATE_DISTANCE_METERS = 10; |
| 07 | private Location externalLocation = null; |
| 08 | |
| 09 | |
| 10 | //Add the following code to your activity onPause, onResume, onCreate |
| 11 | |
| 12 | @Override |
| 13 | protected void onPause() { |
| 14 | mLocationManager.removeUpdates(mGeoUtil); |
| 15 | super.onPause(); |
| 16 | } |
| 17 | |
| 18 | @Override |
| 19 | protected void onResume() { |
| 20 | super.onResume(); |
| 21 | if (externalLocation == null) { |
| 22 | // Register for location updates |
| 23 | mLocationManager.requestLocationUpdates( |
| 24 | LocationManager.NETWORK_PROVIDER, |
| 25 | LOCATION_UPDATE_INTERVAL_MILLIS, |
| 26 | LOCATION_UPDATE_DISTANCE_METERS, mGeoUtil); |
| 27 | mLocationManager.requestLocationUpdates( |
| 28 | LocationManager.GPS_PROVIDER, |
| 29 | LOCATION_UPDATE_INTERVAL_MILLIS, |
| 30 | LOCATION_UPDATE_DISTANCE_METERS, mGeoUtil); |
| 31 | } else { |
| 32 | mLocationManager.removeUpdates(mGeoUtil); |
| 33 | } |
| 34 | } |
| 35 | |
| 36 | @Override |
| 37 | protected void onCreate(Bundle savedInstanceState) { |
| 38 | mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); |
| 39 | mGeoUtil = new GeoUtil(getApplicationContext()); |
| 40 | } |
| 41 | |
| 42 | //Now when you want to add location information to a note do the following |
| 43 | if(mGeoUtil.hasLocation()) {//Create a note |
| 44 | SnapticNote note = new SnapticNote(); |
| 45 | Location location = new Location(mGeoUtil.getLocation()); |
| 46 | note.latitude =location.getLatitude(); |
| 47 | note.longitude = location.getLongitude(); |
| 48 | note.text = "Post note with location information"; |
| 49 | int returnCode = mApi.addNote(note); |
| 50 | if(DEBUG)Log.d(LOGCATNAME, "Print out note lat: " + note.latitude+ " note long: " + note.longitude ); |
| 51 | } else { |
| 52 | if(DEBUG)Log.d(LOGCATNAME, "No location available"); |
| 53 | Toast.makeText(getApplicationContext(), |
| 54 | "No location available", |
| 55 | Toast.LENGTH_LONG).show(); |
| 56 | } |
| 57 | |
| 58 | //Also make sure you have the following permissions in your applications manifest |
| 59 | android.permission.INTERNET |
| 60 | android.permission.ACCESS_FINE_LOCATION |
| 61 | android.permission.ACCESS_COARSE_LOCATION |
| 62 |
May 12, 2010
How to query Snaptic and just get notes containing a specific tag
I just added a function to search for a given string in your snaptic.com notes to our android-lib. This function returns a list of all notes containing that given string. In the following example I search for all notes containing the workout tag.
| Java | | copy code | | ? |
| 01 | |
| 02 | ArrayList<SnapticNote> notes = new ArrayList<SnapticNote>(); |
| 03 | int getNotesReturnCode = mApi.searchNotes("#Workout", notes); |
| 04 | |
| 05 | //Only proceed if notes were fetched |
| 06 | if(getNotesReturnCode == SnapticAPI.RESULT_OK){ |
| 07 | //Search for notes containing descriptions of exercises |
| 08 | for(SnapticNote n : notes){ |
| 09 | if(DEBUG)Log.d(LOGCATNAME, "Note: " + n.summary); |
| 10 | } |
| 11 | } |
| 12 |
May 10, 2010
Adding a login screen to your Snaptic android app.
A number of users have emailed me requesting an android example with a simple username/password screen and an accompanying flow for signing into a Snaptic account. I have updated my example crossfit tracking app to provide just such an example. After syncing the latest changes from github, simply load it onto your phone and hit the menu button, you will see two buttons, sync (which currently does nothing) and settings which will take you to the sign in screen.
Most of the sign in form magic takes place in SigninActivity.java. The menu code is inflated from an xml file and most of the code which drives it can be found in the functions onCreateOptionsMenu and onOptionsItemSelected in WorkOutEditor.java.
Most of the sign in form magic takes place in SigninActivity.java. The menu code is inflated from an xml file and most of the code which drives it can be found in the functions onCreateOptionsMenu and onOptionsItemSelected in WorkOutEditor.java.