After giving the idea a bit of thought and the desire to further alienate myself from my fellow Mac developers (i've noticed the drop in hits when I started mentioning Windows development versus Mac development), I've decided to turn "Windows Eye for the Cocoa Guy" into a series of posts detailing some of the architectural and semantical differences between developing applications in Cocoa on Mac OS X, and .NET on Windows. I've found myself lamenting my performance at the CocoaHeads Silicon Valley meeting because I felt like I either didn't have the time, or carelessly glossed over a lot of details that should have been mentioned. I was cramped for time before the presentation as well so I couldn't prepare enough (see: any) code samples or demos beforehand to pimp out some features of .NET or Visual Studio that are still lacking in Objective-C 2.0 and Xcode.
I'm still crafting some of my points to make in upcoming posts, by user request (here) I intend to cover XAML in general (as well as Silverlight) contrasted against the "freeze-dried objects" model that Interface Builder, with a dash of Windows Forms Designer too.
Also on the yellow notepad of bloggery, I would like to touch on the differences between C# Events in how they're handled and created versus the less than popular NSNotification way of doing events in Cocoa. Major differences also exist between the ways of doing .NET asynchronous I/O compared to Cocoa "asynchronous I/O," in quotes because, as much as I love the runloop, scheduling tasks to the runloop doesn't count in my opinion as asynchronous I/O [1].
While I enjoy being slightly provacative, I'm really aiming to be pelted with rocks at WWDC. You'll be able to find me sitting at a table all by myself outside Moscone. Regardless of the certain doom I will face posting about Windows development from a Mac developer perspective, I hope the series will at the very least be interesting and educational.
1. The lack of "real" asynchronous calls in Cocoa bugs the hell out of me. Darwin is one of the few operating systems I've developed on with functions like aio_read(2) and friends. Besides scheduling a call on the runloop, you can spawn a worker thread yourself, both options don't take advantage of the aio_* functions which just...sucks.
Howdy!
Welcome to my blog where I write about software
development, cycling, and other random nonsense. This is not
the only place I write, you can find more words I typed on the Buoyant Data blog, Scribd tech blog, and GitHub.
Twitterbot Recap
While trudging through some comment spam, I came across some older comments that I felt needed recapping in this post about my Twitterbot. An anonymous poster had asked about some issues with Mono on Mac OS X returning 401 Unauthorized errors when using HTTP authentication within the Twitterbot. The issue was fixed relatively quickly after I brought it to the attention of some of the Mono developers, and the fix will be included in Mono 1.2.4 (preview available).
There shouldn't be any more issues with regards to running the Twitterbot on any platform supported by Mono now. In the future I would also like to add better history and duplicate checking by using either a flat-file datasource or one that feeds on a database, but the latter would probably make the program far more complex and difficult to use. Ideas, as usual, are always welcome.
There shouldn't be any more issues with regards to running the Twitterbot on any platform supported by Mono now. In the future I would also like to add better history and duplicate checking by using either a flat-file datasource or one that feeds on a database, but the latter would probably make the program far more complex and difficult to use. Ideas, as usual, are always welcome.
Windows Eye for the Cocoa Guy
I finally got around to posting the slides for my presentation at the april CocoaHeads Silicon Valley meeting.
The motivation for the talk was to introduce my fellow Mac developer colleagues to some of the goods and bads of modern Windows develolpment. One of the primary points I tried to bring across was that Apple doesn't yet have an IDE that I would put on the same level as Visual Studio 2005, which is arguably one of the most complex and complete IDEs out there (with Eclipse in a close second, in my opinion). Xcode (and friends) in Leopard are very close to taking the throne away from Microsoft in that respect, but there are still a few things that are holding them back, such as gdb, which is still a relatively primitive debugger.
With .NET 3.0 however, Microsoft is fighting back hard for the make-believe "most cool framework" award, with additions like Windows Presentation Foundation (formerly called Avalon). The downside of a lot of .NET 3.0 however is Microsoft's incessant love of all things XML, as WPF is based primarily on XAML which is grotesque on a good day.
Unfortunately I can't repeat my entire presentation, and I didn't want to post my presenter notes, but hopefully you can ascertain enough information from my presentation.
Windows Eye for the Cocoa Guy
With .NET 3.0 however, Microsoft is fighting back hard for the make-believe "most cool framework" award, with additions like Windows Presentation Foundation (formerly called Avalon). The downside of a lot of .NET 3.0 however is Microsoft's incessant love of all things XML, as WPF is based primarily on XAML which is grotesque on a good day.
Unfortunately I can't repeat my entire presentation, and I didn't want to post my presenter notes, but hopefully you can ascertain enough information from my presentation.
Windows Eye for the Cocoa Guy
Im in ur phonez
In a weird sort of cosmic coincidence, I happened to be researching some of the mobile developer tools available after a weekend of toying with the Windows Mobile 5.0 framework (which is pretty cool by itself) within Visual Studio 2005, and while I was doinking around on the internet, I came across Nokia's Open C platform. By itself Open C is pretty impressive, but after digging around some more the entire Nokia development platform is certainly not what I expected. Quicker than you can say OMIGOSHSYMBIANSUCKS I found myself immersed in whitepapers and code all targetted at developing for the gigantic mobile market.
Before I dive into Windows Mobile, I must first disclaim that I'm a relatively big fan of the .NET platform, usually by means of the Mono Project. The .NET Compact Framework (referred to as .NET CF) is merely an extension of the .NET framework meaning you can use a lot of the same code and know-how for developing Windows Forms interfaces for Windows Mobile enabled smart phones as well as already existing code for the backend of your embedded application (there is also an interesting extension on .NET CF available at OpenNETCF). The power of this sort of portability should go without saying, but why not say it anyways? Because of .NET CF I can write the same services and network interoperability code that can be used in my desktop application and take it straight over to my embedded application with zero or minimal hassle (optimizing your bloated desktop code for an embedded application is always a good idea). In addition the normal trimmings of .NET, the Microsoft.WindowsMobile namespace offers a myriad of device-specific APIs for sending messages, interacting with a smart phone's contacts, calendaring, camera, media player and all the rest that comes stock on modern Windows smart phones. With a saturday afternoon spent in an empty office pouring over API documentation and hacking furioiusly on some test applications, I could send messages, take pictures, play with contact information and do some G-rated damage to a Windows smart phone (Rory Blythe's screencasts on the subject are a fantastic resource as well). The obvious downside is that it is Windows (Mobile) and that the consumers that tend to own Windows smart phones tend to be business types who walk around with suits and have the word "synergy" tattooed on their buttocks. Not my cup of tea, nor my target market. Next!
On the other side of the world to Nokia. Nokia's S90 platform is expansive to say the least, and runs on quite a few devices as well. While I'm certainly not "in the biz" with regards to mobile device development, the sheer size of the entire S90 platform and the varying means of using it surprised me. Nokia's S90 platform builds on top of Symbian (ick!) which, fortunately, powers more than half the mobile market but, unfortunately, sucks. You know it, I know it, even Symbian Ltd. knows it, so let's stop pretending. With regards to Nokia's developer tools though, they offer a relatively stock Java API for developers to use (eSWT? gross!), their Carbide C++ framework which builds on top of Symbian's own C++ libraries, and even a Python API for their SDKs (the Maemo work is worth a look too). Most interesting to me was their Open C project which borrows some of the best bits and pieces from a few open source projects and brings them to the mobile platform. While Nokia obvious doesn't have a clue with device design they do seem to be with it in terms of the open source world. Open C is built primarily on top of OpenBSD and OpenSSL libraries with a bit of libz and GNOME thrown in there as well.
Either somebody at Nokia really wants to piss Theo de Raadt off, or they have a high opinion of his work! Personally I wouldn't have chose OpenBSD, but their unwaivering committment to the "absolutely open source" ideology seems to make their projects an ideal fishing ground for commercial ventures who are really looking to stand atop the shoulders of giants.
Even Blackberry has tools readily available for developers, but I can't say I've researched them too much. I'm pretty sure that people who develop applications for Blackberries go sterile or get cast outside the universe at armageddon or something.
The device development world is riper than ever for some killer application development, the Opera guys seem to get it (they use Qtopia from what I can tell), the Google guys seem to get it, where are the smaller shops? If the iPhone turns out to have some sort of "Cocoa Mobile Edition" (a poor ripoff on my part from JavaME) then I think we will see an influx of Mac independent developers to the iPhone as a platform all battling for a tiny niche of a niche just as they are on the Mac platform. What about the entire rest of the mobile market?
With the growing ubiquity of the mobile devices market the opportunity for independent developers to write killer applications for Windows Mobile, Symbian, embedded Linuxes, and possibily the iPhone, is more attainable than ever. The tools to develop are either free or cheap, and you don't necessarily need to be a hero-programmer to develop applications for these embedded systems anymore either.
That said, Brent, I'll buy you a beer when I see NetNewsWire iPhone Edition.
Before I dive into Windows Mobile, I must first disclaim that I'm a relatively big fan of the .NET platform, usually by means of the Mono Project. The .NET Compact Framework (referred to as .NET CF) is merely an extension of the .NET framework meaning you can use a lot of the same code and know-how for developing Windows Forms interfaces for Windows Mobile enabled smart phones as well as already existing code for the backend of your embedded application (there is also an interesting extension on .NET CF available at OpenNETCF). The power of this sort of portability should go without saying, but why not say it anyways? Because of .NET CF I can write the same services and network interoperability code that can be used in my desktop application and take it straight over to my embedded application with zero or minimal hassle (optimizing your bloated desktop code for an embedded application is always a good idea). In addition the normal trimmings of .NET, the Microsoft.WindowsMobile namespace offers a myriad of device-specific APIs for sending messages, interacting with a smart phone's contacts, calendaring, camera, media player and all the rest that comes stock on modern Windows smart phones. With a saturday afternoon spent in an empty office pouring over API documentation and hacking furioiusly on some test applications, I could send messages, take pictures, play with contact information and do some G-rated damage to a Windows smart phone (Rory Blythe's screencasts on the subject are a fantastic resource as well). The obvious downside is that it is Windows (Mobile) and that the consumers that tend to own Windows smart phones tend to be business types who walk around with suits and have the word "synergy" tattooed on their buttocks. Not my cup of tea, nor my target market. Next!
On the other side of the world to Nokia. Nokia's S90 platform is expansive to say the least, and runs on quite a few devices as well. While I'm certainly not "in the biz" with regards to mobile device development, the sheer size of the entire S90 platform and the varying means of using it surprised me. Nokia's S90 platform builds on top of Symbian (ick!) which, fortunately, powers more than half the mobile market but, unfortunately, sucks. You know it, I know it, even Symbian Ltd. knows it, so let's stop pretending. With regards to Nokia's developer tools though, they offer a relatively stock Java API for developers to use (eSWT? gross!), their Carbide C++ framework which builds on top of Symbian's own C++ libraries, and even a Python API for their SDKs (the Maemo work is worth a look too). Most interesting to me was their Open C project which borrows some of the best bits and pieces from a few open source projects and brings them to the mobile platform. While Nokia obvious doesn't have a clue with device design they do seem to be with it in terms of the open source world. Open C is built primarily on top of OpenBSD and OpenSSL libraries with a bit of libz and GNOME thrown in there as well.
| libc | OpenBSD |
| libcrypt | OpenSSL |
| libcrypto | OpenSSL |
| libglib | GNOME |
| libm | OpenBSD |
| libpthread | OpenBSD |
| libssl | OpenSSL |
| libz | libz |
Either somebody at Nokia really wants to piss Theo de Raadt off, or they have a high opinion of his work! Personally I wouldn't have chose OpenBSD, but their unwaivering committment to the "absolutely open source" ideology seems to make their projects an ideal fishing ground for commercial ventures who are really looking to stand atop the shoulders of giants.
Even Blackberry has tools readily available for developers, but I can't say I've researched them too much. I'm pretty sure that people who develop applications for Blackberries go sterile or get cast outside the universe at armageddon or something.
The device development world is riper than ever for some killer application development, the Opera guys seem to get it (they use Qtopia from what I can tell), the Google guys seem to get it, where are the smaller shops? If the iPhone turns out to have some sort of "Cocoa Mobile Edition" (a poor ripoff on my part from JavaME) then I think we will see an influx of Mac independent developers to the iPhone as a platform all battling for a tiny niche of a niche just as they are on the Mac platform. What about the entire rest of the mobile market?
With the growing ubiquity of the mobile devices market the opportunity for independent developers to write killer applications for Windows Mobile, Symbian, embedded Linuxes, and possibily the iPhone, is more attainable than ever. The tools to develop are either free or cheap, and you don't necessarily need to be a hero-programmer to develop applications for these embedded systems anymore either.
That said, Brent, I'll buy you a beer when I see NetNewsWire iPhone Edition.
Site Upgrade
Just a side note, I upgraded this site to Drupal 5.1 this weekend. I'm not sure if there will be any visible changes besides the obvious theme change, but overall things should work smoother.
Choosing a platform, Windows and Linux
Came across an article through slashdot (I should almost template that intro) that presents the opinion that Microsoft wins over developers by not offering the wide variety of development tools for Windows that are available on Linux. I've got quite a bit of insight on this topic, and I'll get to that in the context of some quotes from the article, but let me start with one thing I think the author has absolutely right.
Every time I thought I was going to be stuck, there were a dozen articles explaining how to do exactly what I needed to do, with sample code that was up to date with the versions of the software I was using, and that actually related to the problem I was trying to solve.
There are always cases where you end up thinking "this example isn't what I want" on any platform, but by and large the material you can find on MSDN is second to only the OpenBSD man pages in documentation that I've found useful and usable. There is also a huge amount of additional information online for .NET programming (Code Project comes to mind). This is the only part of the article I can say I strongly agree with.
I thought I’d share a few thoughts on why people seem to be drawn to the Microsoft Way.
The reason I do Windows development is because it has been the platform available for every job I've had since 2001. When I was a co-op student working with industrial control systems I did PLC programming and the manufacturers provided Windows tools to work with. When I started my current day job they were looking for a nice Windows replacement for an old DOS program. I do a lot of quick data acquisition setup for experiments and I typically grab a Windows laptop and one of a pile of cheap PCMCIA data acquisition cards that we have lying around that don't have Linux drivers. I'm doing some freelance application development for a medium sized company which is an all-Windows shop. None of these reasons have anything to do with lack of choice, and I suspect my experience is fairly similar to a lot of Windows developers.
Microsoft offers the certainty of no choices. Choice isn’t always good
There is no lack of choice on Windows. Most of the options available for Linux also apply to Windows. I can do a project in Visual Basic, C, C#, C++, Java, Ruby, Python or Perl, or choose Win32, .NET, Mono, GTK+, Qt, WxWidgets, or nearly anything else under the sun. I will admit this may or may not apply as much to web development, since that is an area I generally stay away from, but saying there is no choice for development on Windows is simply not true. Just because there is an obvious preference doesn't mean the choice doesn't exist. I should state explicitly that I won't consider only products offered by Microsoft to be the same as choices for programming on Windows. Just because the OS provider is also a tool provider does not preclude the existence or use of other tools.
The astute among you may have noticed I've sidestepped the choice of Linux distributions, and I did so intentionally. I consider it prerequisite for becoming a developer on either platform to be a user of that platform. If you are talking about converting Windows developers to Linux developers they first have to be Linux users, at least to some level of proficiency, and vice versa. The distribution choice is much relevant to users than to developers.
The takeaway I get from this entire line of reasoning is this: that somehow, someway, we need to start doing some winnowing
What I really think about why developers program on and for Windows instead of Linux is that Windows is still the dominant environment for most of these developers, exactly the reasons I gave for my own programming on Windows. I've done some Linux programming at my day job in addition to my Windows programming. The longer I'm here the more I'll do and the less dominant Windows will become in this one organizational group. The issue as I see it isn't the quality of the OS or the available development tools, nor is it the number of tools available, it is simply a matter of inertia.
Unfortunately I'm in no position to bring Mac into this discussion, but it'd be great to see some discussion of that as well.
Every time I thought I was going to be stuck, there were a dozen articles explaining how to do exactly what I needed to do, with sample code that was up to date with the versions of the software I was using, and that actually related to the problem I was trying to solve.
There are always cases where you end up thinking "this example isn't what I want" on any platform, but by and large the material you can find on MSDN is second to only the OpenBSD man pages in documentation that I've found useful and usable. There is also a huge amount of additional information online for .NET programming (Code Project comes to mind). This is the only part of the article I can say I strongly agree with.
I thought I’d share a few thoughts on why people seem to be drawn to the Microsoft Way.
The reason I do Windows development is because it has been the platform available for every job I've had since 2001. When I was a co-op student working with industrial control systems I did PLC programming and the manufacturers provided Windows tools to work with. When I started my current day job they were looking for a nice Windows replacement for an old DOS program. I do a lot of quick data acquisition setup for experiments and I typically grab a Windows laptop and one of a pile of cheap PCMCIA data acquisition cards that we have lying around that don't have Linux drivers. I'm doing some freelance application development for a medium sized company which is an all-Windows shop. None of these reasons have anything to do with lack of choice, and I suspect my experience is fairly similar to a lot of Windows developers.
Microsoft offers the certainty of no choices. Choice isn’t always good
There is no lack of choice on Windows. Most of the options available for Linux also apply to Windows. I can do a project in Visual Basic, C, C#, C++, Java, Ruby, Python or Perl, or choose Win32, .NET, Mono, GTK+, Qt, WxWidgets, or nearly anything else under the sun. I will admit this may or may not apply as much to web development, since that is an area I generally stay away from, but saying there is no choice for development on Windows is simply not true. Just because there is an obvious preference doesn't mean the choice doesn't exist. I should state explicitly that I won't consider only products offered by Microsoft to be the same as choices for programming on Windows. Just because the OS provider is also a tool provider does not preclude the existence or use of other tools.
The astute among you may have noticed I've sidestepped the choice of Linux distributions, and I did so intentionally. I consider it prerequisite for becoming a developer on either platform to be a user of that platform. If you are talking about converting Windows developers to Linux developers they first have to be Linux users, at least to some level of proficiency, and vice versa. The distribution choice is much relevant to users than to developers.
The takeaway I get from this entire line of reasoning is this: that somehow, someway, we need to start doing some winnowing
What I really think about why developers program on and for Windows instead of Linux is that Windows is still the dominant environment for most of these developers, exactly the reasons I gave for my own programming on Windows. I've done some Linux programming at my day job in addition to my Windows programming. The longer I'm here the more I'll do and the less dominant Windows will become in this one organizational group. The issue as I see it isn't the quality of the OS or the available development tools, nor is it the number of tools available, it is simply a matter of inertia.
Unfortunately I'm in no position to bring Mac into this discussion, but it'd be great to see some discussion of that as well.
City of Lost Boys
I have struggled to characterize the city of San Francisco ever since first coming out here for a job interview almost a year ago. The city escapes generalization because of the sheer magnitude of intermixing of races, cultures and economic classes, regardless I still am constantly fascinated by San Francisco (that and
Despite the obvious age differential between some of my coworkers, and the different types of people that I meet either walking down the street or into a bar, I feel amongst my peers. It is uncanny to come from a place like Texas where the lines between young and old are drawn firmly in the dry, cracking soil, to a place like this where the more traditional boundaries between people have deteriorated. As a weird karmic side-effect, almost everybody seems to be perpetually stuck in their mid-to-late twenties.
The youthful exuberance that floods over most of the bay area, and Silicon Valley, seem to be one of the many reasons why the topsoil is so welcoming to startups. Like most starry-eyed young people, not yet jaded by the harsh realities of an unforgiving world, so many people here have a dream to strike it rich. Unfortunately, like those that came to this part of California so long ago for the gold contained in the hills, almost nobody will strike gold. But just like birthday presents to your grandmother, it's the thought that counts.
The perpetual optimism of San Francisco has made it the butt of numerous jokes but also the target of many envious eyes and in general a fun place to be. While it is very possible that Buzz might be (temporarily) leaving the insanity, I'm thrilled to join in just the same.
Despite the obvious age differential between some of my coworkers, and the different types of people that I meet either walking down the street or into a bar, I feel amongst my peers. It is uncanny to come from a place like Texas where the lines between young and old are drawn firmly in the dry, cracking soil, to a place like this where the more traditional boundaries between people have deteriorated. As a weird karmic side-effect, almost everybody seems to be perpetually stuck in their mid-to-late twenties.
The youthful exuberance that floods over most of the bay area, and Silicon Valley, seem to be one of the many reasons why the topsoil is so welcoming to startups. Like most starry-eyed young people, not yet jaded by the harsh realities of an unforgiving world, so many people here have a dream to strike it rich. Unfortunately, like those that came to this part of California so long ago for the gold contained in the hills, almost nobody will strike gold. But just like birthday presents to your grandmother, it's the thought that counts.
The perpetual optimism of San Francisco has made it the butt of numerous jokes but also the target of many envious eyes and in general a fun place to be. While it is very possible that Buzz might be (temporarily) leaving the insanity, I'm thrilled to join in just the same.
CocoaHeads Silicon Valley
Scott Stevenson beat me to the punch in announcing it, but I might as well reflect the sentiment and invite you all (even those of you who actually don't live in Silicon Valley) to come out to Cupertino tomorrow (thursday) night to see if I can actually pull off a Windows-esque presentation in front of a room full of Mac developers.
I will be discussing a lot of the latest developments in .NET 3.0 and Visual Studio 2005 and contrasting them where appropriate to the state of Mac development with Xcode, Cocoa, Objective-C and all the other niceties that Leopard's developer tools offer. If possible I will also try to work in a bit about Mono as another alternative in the sea of options for developers these days.
I'll make sure that I either post my slides to my flickr stream or the PDF of the slides to this blog after the fact. If I don't however post before Saturday that means I've probably been beaten up and left for dead by a room full of angry Mac developers.
I will be discussing a lot of the latest developments in .NET 3.0 and Visual Studio 2005 and contrasting them where appropriate to the state of Mac development with Xcode, Cocoa, Objective-C and all the other niceties that Leopard's developer tools offer. If possible I will also try to work in a bit about Mono as another alternative in the sea of options for developers these days.
I'll make sure that I either post my slides to my flickr stream or the PDF of the slides to this blog after the fact. If I don't however post before Saturday that means I've probably been beaten up and left for dead by a room full of angry Mac developers.
In the fifth dimension
I figured I might as well come out and say it, things have been changing quite rapidly lately, thus the latency on blog postings. In the past two weeks, I have accepted a job offer, moved to San Francisco, and started working at Slide, Inc. with a friend of mine David Young (and quite a few other folks who are prime friend-candidates).
I'm not sure yet how this is going to affect my Mac (development) musings, but what I do know is that in the coming weeks Python and I are going to become best of friends...or I'm going to kill it.
There's still quite a few things in the pipeline, such as an update to the Twitterbot, and Twitterer, a customized version of Sparkle, and of course, Emission. I hope that the dust settles soon so I can return to wasting endless amounts of time blogging and hacking on open source projects, but that remains to be seen.
I'm not sure yet how this is going to affect my Mac (development) musings, but what I do know is that in the coming weeks Python and I are going to become best of friends...or I'm going to kill it.
There's still quite a few things in the pipeline, such as an update to the Twitterbot, and Twitterer, a customized version of Sparkle, and of course, Emission. I hope that the dust settles soon so I can return to wasting endless amounts of time blogging and hacking on open source projects, but that remains to be seen.
I'm Seriously Famous
Okay, maybe not. But as it turns out, the Twitterbot however, is! A short 5-minute guide to setting up the Twitterbot has been created over here on the engtech blog, and does a far better job of documenting how to get started with the Twitterbot than I ever wanted to. With the help of a Twitterbot, twitter can be a great news-to-SMS gateway, or damn near anything else you can think of doing with about 140 characters worth of content either IMed or SMSed to you.
Perforce On The Road, p4tunnel
The best means of accessing a Perforce repository is over an SSH tunnel, to access my home repository while I'm on the road I use a handy-dandy little script to do a few things:
The proxy is more so I can have some semblance of security while on open wireless networks, the rest should be self explanatory.
Anyways, straight from /usr/local/bin, here's my p4tunnel script:
- Access Perforce
- Access P4Web
- Setup a SOCKS5 proxy
The proxy is more so I can have some semblance of security while on open wireless networks, the rest should be self explanatory.
Anyways, straight from /usr/local/bin, here's my p4tunnel script:
#!/bin/sh
HOST="yourhost.com"
PROXY_PORT="8081"
echo "===> Creating tunnel to ${HOST} with a SOCK5 proxy on port ${PROXY_PORT}"
ssh ${HOST} -L 1666:localhost:1666 -L 8080:localhost:8080 -D ${PROXY_PORT} -C
A Review: The Metamorphosis
Imagine yourself awaking to find that you simply aren’t; aren’t yourself that is. Such is the situation that Gregor Samsa, Kafka’s unfortunate “victim” in The Metamorphosis, finds himself in. Gregor awakens one morning from “unsettling dreams” to find that “he” has transformed from a (presumably) twenty-something traveling salesman into a beetle-like vermin. The story of Gregor’s unfortunate predicament begins with the climax, the transformation, and slowly descends from there to Gregor’s ultimate demise. Unlike some of the past philosophers I have read who tend to write essays or prose, Kafka’s insight takes the form of a parable of the conflicts of Gregor Samsa’s internal “self” with his external self and surroundings. This mask of fiction concealing the philosophical musings of the story makes them quite difficult to spot upon initial inspection (in my opinion), making a second read through or browsing of academic articles on the piece if not a necessity, highly recommended.
Kafka’s splitting insight is not for the faint of heart, at the same time that Gregor is lamenting his condition (specifically when he, as the vermin, attempts to get out of bed) he is also pleased with his escape from some of his “human” responsibilities that have shackled him to a miserable existence as a traveling salesman working in a soul-grinding firm paying off a debt owed his employer by his parents. As the story progresses, unbeknownst to Gregor, the reader is shown more to convince them that the family was more akin to vermin than Gregor may have transformed into. In Gregor’s early reflection he cites the importance of his work to help support his family and the necessity of his sacrifice (of freedom) to work in the firm that his parents are indebted to. As time wears on however, and Gregor is incapable of working (contrary to popular belief, vermin don’t sell too many Encyclopedia’s door to door) his father attains a job as a bank-messenger and his family lets out one of the rooms, in the spacious apartment Gregor provided, to three “roomers” indicating that Gregor’s degrading sacrifice at the firm may not have been necessary at all, ergo the Samsas may have been the vermin feeding off of Gregor instead of the inverse.
The issue of food, or rather nourishment, is another interesting theme Kafka adds into the already complex literary-gumbo of The Metamorphosis. The first day of Gregor’s transformation he is offered some of his favorite food by his sister Grete (we can assume she is trying to help cure what is perceived as an illness by Gregor’s family as opposed to the transformation it truly is) to which he refuses and scurries back under the couch to which he oft finds refuge. As the story wears on Grete slowly discovers that Gregor, the new Gregor, prefers what essentially boils down to table-scraps and garbage, but this is still not enough to “nourish” Gregor. He consistently complains (in thought) about a longing for nourishment, a lack of fulfillment of some sort that is finally placated one day when he hears the beautiful violin music Grete has taken to playing for the three “roomers.” This still doesn’t seem to be enough to “nourish” Gregor in the sense that he still longs for something, a certain something that he finds the fateful morning when he exhales his last breath with the rising morning sun (finding contentment, or fulfillment, with death is an interesting point Kafka raises for me after reading a few essays on both Absurdism and Existentialism).
Slowly Gregor becomes more of a curse in the eyes of the rest of the Samsas instead of a son with an inordinate amount of legs. When Gregor dies, it is a release in more than one sense. While Kafka cites most immediately the lifting of the burden from the Samsas’ backs, it is apparent that Gregor has also been relinquished of his conflicts with the firm, his parents, and most importantly, himself; with his death Gregor is finally set free, just as he had hoped to become after repaying his parents’ debt to his employer. While there is some academic discussion on whether the metamorphosis itself relinquished Gregor from some of his bourgeois-responsibilities, it is without a doubt that in his death he finds the freedom for which he had longed. An interesting point was raised in one of the analysis of the piece that pointed out that maybe the parents were truly the “blood-sucking vermin” with regards to the last few pages of The Metamorphosis, when the parents turn to Grete, the daughter, and prepare her to be married off to a good husband, pointing out that with Gregor (the initial host) gone they must switch to a new one, Grete.
Unlike most stories, there are no likable characters in The Metamorphosis, as Gregor continues to act more and more like the “vermin” he has transformed into and his parents react negatively to their son’s predicament, the reader is left without solace. Although Gregor eventually attains the freedom he had so desired, he is still a poor choice for the “hero” of Kafka’s work. That is not to say however, that there are no identifiable characters; Gregor typifies a lot of the internal struggle most found themselves in, in the whirlwind of capitalist growth in the early 20th century along with the lessening of the importance of the individual; both very fundamental conflicts most (including Kafka) found/find themselves in, especially in western culture. Simultaneously many can identify with the denial the Samsas find themselves in with their disgust of the vermin that comes to inhabit Gregor’s room. The Metamorphosis is widely regarded as one of, if not the, most important pieces of literature Kafka ever had published, but is a difficult pill to swallow and at the same time a worthwhile exposure of the conflict that Kafka, and many others, have struggled with.
I highly recommend, if you have not already read The Metamorphosis, purchasing the “Bantam Classics” version of The Metamorphosis which includes over one hundred pages of critical essays and academic discussions on Kafka’s masterpiece. Translator (and PhD) Stanley Corngold made a fantastic selection of analytic essays on the story ranging from incisive psychological analysis of Gregor’s transformation to the oedipal conflict and reversal of roles between the father and son that constantly lurks beneath the surface. Dutifully reading all of the explanatory notes on the text as well as the critical essays that Corngold included in the book drive the point firmly into place, Kafka was a brilliant writer and, like his tragic heroes, was a tormented individual who may have found solace in the escape that his death (from tuberculosis) ultimately offered him.
Kafka’s splitting insight is not for the faint of heart, at the same time that Gregor is lamenting his condition (specifically when he, as the vermin, attempts to get out of bed) he is also pleased with his escape from some of his “human” responsibilities that have shackled him to a miserable existence as a traveling salesman working in a soul-grinding firm paying off a debt owed his employer by his parents. As the story progresses, unbeknownst to Gregor, the reader is shown more to convince them that the family was more akin to vermin than Gregor may have transformed into. In Gregor’s early reflection he cites the importance of his work to help support his family and the necessity of his sacrifice (of freedom) to work in the firm that his parents are indebted to. As time wears on however, and Gregor is incapable of working (contrary to popular belief, vermin don’t sell too many Encyclopedia’s door to door) his father attains a job as a bank-messenger and his family lets out one of the rooms, in the spacious apartment Gregor provided, to three “roomers” indicating that Gregor’s degrading sacrifice at the firm may not have been necessary at all, ergo the Samsas may have been the vermin feeding off of Gregor instead of the inverse.
The issue of food, or rather nourishment, is another interesting theme Kafka adds into the already complex literary-gumbo of The Metamorphosis. The first day of Gregor’s transformation he is offered some of his favorite food by his sister Grete (we can assume she is trying to help cure what is perceived as an illness by Gregor’s family as opposed to the transformation it truly is) to which he refuses and scurries back under the couch to which he oft finds refuge. As the story wears on Grete slowly discovers that Gregor, the new Gregor, prefers what essentially boils down to table-scraps and garbage, but this is still not enough to “nourish” Gregor. He consistently complains (in thought) about a longing for nourishment, a lack of fulfillment of some sort that is finally placated one day when he hears the beautiful violin music Grete has taken to playing for the three “roomers.” This still doesn’t seem to be enough to “nourish” Gregor in the sense that he still longs for something, a certain something that he finds the fateful morning when he exhales his last breath with the rising morning sun (finding contentment, or fulfillment, with death is an interesting point Kafka raises for me after reading a few essays on both Absurdism and Existentialism).
Slowly Gregor becomes more of a curse in the eyes of the rest of the Samsas instead of a son with an inordinate amount of legs. When Gregor dies, it is a release in more than one sense. While Kafka cites most immediately the lifting of the burden from the Samsas’ backs, it is apparent that Gregor has also been relinquished of his conflicts with the firm, his parents, and most importantly, himself; with his death Gregor is finally set free, just as he had hoped to become after repaying his parents’ debt to his employer. While there is some academic discussion on whether the metamorphosis itself relinquished Gregor from some of his bourgeois-responsibilities, it is without a doubt that in his death he finds the freedom for which he had longed. An interesting point was raised in one of the analysis of the piece that pointed out that maybe the parents were truly the “blood-sucking vermin” with regards to the last few pages of The Metamorphosis, when the parents turn to Grete, the daughter, and prepare her to be married off to a good husband, pointing out that with Gregor (the initial host) gone they must switch to a new one, Grete.
Unlike most stories, there are no likable characters in The Metamorphosis, as Gregor continues to act more and more like the “vermin” he has transformed into and his parents react negatively to their son’s predicament, the reader is left without solace. Although Gregor eventually attains the freedom he had so desired, he is still a poor choice for the “hero” of Kafka’s work. That is not to say however, that there are no identifiable characters; Gregor typifies a lot of the internal struggle most found themselves in, in the whirlwind of capitalist growth in the early 20th century along with the lessening of the importance of the individual; both very fundamental conflicts most (including Kafka) found/find themselves in, especially in western culture. Simultaneously many can identify with the denial the Samsas find themselves in with their disgust of the vermin that comes to inhabit Gregor’s room. The Metamorphosis is widely regarded as one of, if not the, most important pieces of literature Kafka ever had published, but is a difficult pill to swallow and at the same time a worthwhile exposure of the conflict that Kafka, and many others, have struggled with.
I highly recommend, if you have not already read The Metamorphosis, purchasing the “Bantam Classics” version of The Metamorphosis which includes over one hundred pages of critical essays and academic discussions on Kafka’s masterpiece. Translator (and PhD) Stanley Corngold made a fantastic selection of analytic essays on the story ranging from incisive psychological analysis of Gregor’s transformation to the oedipal conflict and reversal of roles between the father and son that constantly lurks beneath the surface. Dutifully reading all of the explanatory notes on the text as well as the critical essays that Corngold included in the book drive the point firmly into place, Kafka was a brilliant writer and, like his tragic heroes, was a tormented individual who may have found solace in the escape that his death (from tuberculosis) ultimately offered him.
Soldiers of Fortune
I am watching this show on "the long war [on terror]" ("Our childrens' childrens' war") which is covering private contracting firms that are working with the military, specifically Blackwater USA which is seriously one of the scariest companies I've read about in a while. I'm not a fan of our ever growing federal government, but turns out they're dutifully employing mercenaries in a war on an already questionable moral foundation? Fun.
There is no question that we're involved in a global war of ideologies, but we're walking a fine line between that and a crusade, and mercenaries only sweeten the pot.
There is no question that we're involved in a global war of ideologies, but we're walking a fine line between that and a crusade, and mercenaries only sweeten the pot.
Teeny-tiny Updates
If you look at the sidebar, you might notice a new "Twitter" column has been added, which I intend on using to keep a good aggregated feed of the unethical blogger users' twitters. I have also added a new category "Literature" which I hope I'll be able to populate soon enough with book reviews, and other miscellaneous bits of criticism and commentary.
I've noticed a few registered users that haven't commented or blogged about anything yet, which I hope they will remedy soon enough as I'd really like to sucker more folks into using the site or "blogging unethically" (har, har).
I've noticed a few registered users that haven't commented or blogged about anything yet, which I hope they will remedy soon enough as I'd really like to sucker more folks into using the site or "blogging unethically" (har, har).
BarCamp Austin, Again
It seems that I might be going to BarCamp Austin2 this next weekend. I'll be presenting on "the importance of webservices" or something about as exciting. I'm still working on my presentation (ick) and I'm going to try to incorporate as many useless buzzwords, pot-shots at George W. Bush, and cult movie references as possible. I'm not sure how it's going to be, at least 41% more exciting than my last BarCamp presentation on Cocoa hacking and why everybody should, but still 12% less turtle-neck than a Steve Jobs keynote. I'll be sure to post my slides and hopefully a video or audio of the presentation later, but we'll see if I can make a presentation worth posting first.
The Visual Basic Stigma
I recently recommended to a client that a project they were looking to have done in Visual Basic should be done in C#, but I found that it wasn't as easy as I thought it would be to articulate *why* I was recommending that. The easy answer was because I'm a C programmer at heart and C# is what I'm into these days, but given that the bulk of my professional experience in the last 4-years has been in Visual Basic, and that both C# and current versions of VB are fairly interchangeable for someone familiar with both, that reasoning seemed a bit weak.
I came across this article on programming in Visual Basic and it really rings true to me. I don't enjoy programming in VB quite as much, but at the end of the day I'll look back and realize that it made almost no difference to me at all. I have the same embarrassment about programming in VB that the author talks about on occasion, and I have the same thing with Windows programming in general in comparison to C on Unix-like systems.
I also thought the wikipedia article comparing VB and C# had a pretty interesting section on the VB and C# programming cultures. I know that my first project in VB6 was terrible. I had a fairly strong C on Unix programming mindset and even though the concepts should have been the same it took me a long time to figure out how to adapt what I knew about programming "The Right Way" to that environment. I can't honestly say for certain that was the fault of VB, it may have been my unfamiliarity with doing graphical user interfaces, but to this day it still feels more natural to follow good programming practice in C#.
Speaking of that first VB program, I'm inclined to agree that, given enough time I will think my old code was crap when I look back ...
I came across this article on programming in Visual Basic and it really rings true to me. I don't enjoy programming in VB quite as much, but at the end of the day I'll look back and realize that it made almost no difference to me at all. I have the same embarrassment about programming in VB that the author talks about on occasion, and I have the same thing with Windows programming in general in comparison to C on Unix-like systems.
I also thought the wikipedia article comparing VB and C# had a pretty interesting section on the VB and C# programming cultures. I know that my first project in VB6 was terrible. I had a fairly strong C on Unix programming mindset and even though the concepts should have been the same it took me a long time to figure out how to adapt what I knew about programming "The Right Way" to that environment. I can't honestly say for certain that was the fault of VB, it may have been my unfamiliarity with doing graphical user interfaces, but to this day it still feels more natural to follow good programming practice in C#.
Speaking of that first VB program, I'm inclined to agree that, given enough time I will think my old code was crap when I look back ...
I'm Shocked
I'm shocked that anything as simple as a music download site offering popular music (not major label stuff, but still some high profile artists) in unprotected mp3 files could be done so poorly. Seriously, how crappy must that system be if they have to force a .wma extension onto the mp3s? If they have a non-ActiveX download setup what's the deal with Mac downloads? How hard is it to have a properly descriptive error message for Mac users?
I can't even come up with words to describe how poorly they've done this. Has nobody involved with this mess ever actually thought of testing the site?
I can't even come up with words to describe how poorly they've done this. Has nobody involved with this mess ever actually thought of testing the site?
Completely Off-topic
I try to separate my political leanings from my work, especially when it comes to blogging, etc, but this is too much. The House passed non-binding resolution on Iraq which is the latest in the long list of completely neutered actions by our legislative branch.
It's not a question of "supporting the troops" or "protecting the children" or "stopping terrorism" if you don't have the spine to keep the executive branch in check (what a quaint idea) resign so we can find somebody who isn't an absolute coward. Regardless of which side you lean towards politically, any executive branch that's given carte blanche is dangerous.
It's not a question of "supporting the troops" or "protecting the children" or "stopping terrorism" if you don't have the spine to keep the executive branch in check (what a quaint idea) resign so we can find somebody who isn't an absolute coward. Regardless of which side you lean towards politically, any executive branch that's given carte blanche is dangerous.
Twitterbot Basic HTTP Authentication Errors
As some of you may have noticed, the Twitterbot seems to always fail to authenticate properly against twitter's basic HTTP authentication prompt when run from Mono 1.2.3 on Mac OS X. This was neither an error in twitter's webservice (I have been running my bots from a FreeBSD machine with Mono 1.1.13 for some time now) nor in the Twitterbot code itself, but rather a regression in the System.Net.Configuration namespace, I'll let "kangaroo" (the developer who found and fixed the bug) explain:
The patch should make it into the next bug-fix release of Mono (1.2.3.2) and should allow you to once again run Twitterbot on Mac OS X, otherwise you might want to try another machine, or step back a few point releases if it's that critical to have you Twitterbot running.
13:03 <@kangaroo> ok its falling in to DoPreAuth
13:04 <@kangaroo> Authorization auth = AuthenticationManager.PreAuthenticate (this, creds);
13:04 <@kangaroo> thats returning null
14:04 <@kangaroo> got a patch for you
14:04 < rtyler> to compile into mono or my app?
14:05 <@kangaroo> http://monoport.com/1821
14:05 <@kangaroo> mono
14:05 <@kangaroo> you need a new System.dll
The patch should make it into the next bug-fix release of Mono (1.2.3.2) and should allow you to once again run Twitterbot on Mac OS X, otherwise you might want to try another machine, or step back a few point releases if it's that critical to have you Twitterbot running.
In the news last week: DRM
DRM made news thanks to Steve Jobs' open letter. I don't really have anything to say that hasn't been said already, but I found an article today that sums it up pretty nicely.
Of course I don't use iTunes much anyway, I'd much rather buy-and-rip CDs. I guess I'm doing just what Bill Gates says.
Of course I don't use iTunes much anyway, I'd much rather buy-and-rip CDs. I guess I'm doing just what Bill Gates says.