Archive

Archive for the ‘Open Source’ Category

Working On the Dark Side of the Technology Stack: A .NET Developer Working in the Java Community

February 26th, 2009

Over the past couple months I had the pleasure of working in a Java shop. Up to this point I've spent most of my time in the .NET realm. Working with Java was a great chance to experience the similarities and contrasts between environments, cultures, and web application implementations. Here are a couple of my observations.

Java developers are more knowledgeable than the typical .NET developer. Java developers tend to gravitate towards complexity, Linux, UNIX, open source, and continuous learning. They are less familiar with the wizards and drag-n-drop style development that often characterize .NET development. The Java developers I worked with didn't depend on a single unified IDE (like Visual Studio), instead each developer chose their text editor / environment (Emacs, Eclipse, TextMate, E-TextEditor, and jEdit were all being used on a single project). Each developer was responsible for being productive with their editor; and took responsibility for learning shortcuts, and other performance enhancing techniques. This broad use of editors placed an emphasis on the core command line tools which ensured that developers knew how the application was put together, and cultivated broad application troubleshooting skills within the team.

Unified IDEs (like Visual Studio or Eclipse) do not result in faster development, better developers do. Developers empowered with the ability to choose their development environment / text editors / operating system resulted in more passion and responsibility. Informal friendly rivalry between editor users drove development faster while providing diversity within the work place.  

Programming languages and technology stacks don't matter to experienced software developers. As a developer it's easy to become a fanboy of languages or technologies stacks, but… they don't matter – writing good software within the bounds of our project do. There's no reason to be tied to a specific language or technology stack. Sure, languages fall into a specific category (dynamic, static, classical inherited, prototypical inherited) but programming languages are very similar.

Steve McConnell has been saying this all along:

mastering more than one language is often a watershed in the career of a professional programmer. Once a programmer realizes that programming principles transcend the syntax of any specific language, the doors swing open to knowledge that truly makes a difference in quality and productivity. – Steve McConnell, Code Complete 2nd Edition

The Law of Two Feet

December 19th, 2008

The Law of Two Feet is just as applicable to life, as it is to Open Spaces.

The Law of Two Feet:

If at any time during our time together you find yourself in any situation where you are neither learning nor contributing, use your two feet. Go to some other place where you may learn and contribute. – Open Spaces, Wikipedia

By applying this philosophy to software development (programming languages, operating systems, and development ecosystems), I’ve really been been re-igniting my passion as a software developer. I am foremost a software developer and the tools and products I choose are secondary, but I lost sight of this over the past couple years. I was buying into being a [insert your choice of ecosystem, language, operating system here] developer.

Anyhow; this isn’t to say I won’t be raising my concerns (running away), I’ll continue to make noise (because I believe it has value), but when change doesn’t manifest. I will (like so many people before me) use my own two feet and move towards a situation where I can continue to learn, contribute, and be the change I’d like to see .

Author: Adam Kahtava Categories: Musings, Open Source, Personal, Software Tags:

Twitter on PowerShell

December 5th, 2008

Adam Geras originally wrote a script in PowerShell that saves all the Twitter posts for a specific user into a file (view Mr. Geras original post here).

I built on his script and extended it to:

  • Post messages to Twitter
  • Retrieve Twitter replies
  • View my Twitter friends conversations
  • Display the classic Twitter Fail Whale when an error occurs

Screen Shots

Sending a Twitter message:

Viewing my friends conversations:

The classic Twitter Fail Whale:

There’s something beautiful about the classic green console on a black background – I think it’s about being closer to the metal. :) What do you think?

Contribute, view, or download the openly available script here: Twitter on Powershell

Author: Adam Kahtava Categories: Open Source, PowerShell, Twitter Tags:

Passion, Quality Over Quantity, Domestic Failure: Microsoft, Ford, GM, Chrysler?

November 24th, 2008

Steve Ballmer (the CEO of Microsoft) made this comment during Mix ’08 during his interview with Guy Kawasaki:

GUY KAWASAKI: Okay. … so it was like in the ashtray of your Lexus?
STEVE BALLMER: I’m a Ford guy, and I’m slightly offended by that. My father who worked for Ford would be offended, but nonetheless …

Fair enough, Ballmer likes Ford, but what kills me is that he apparently made his choice by association. Like Ballmer, my extended family are (were) also employed by Ford in the US Rust Belt. However, I still value quality and the economics of a purchase over my family affiliations. Of course, this is a broader issue – many people favour historical affiliation / brand loyalty over critical thinking and this may never change, but Ballmer is the CEO of Microsoft!

Now Ford, GM, Chrysler are on the verge of bankruptcy, and while many factors contribute to their situation. I think most people agree that these automakers kept making poor decisions for short term revenue gains – they kept making bigger expensive, less efficient cars, they were inward focuses and failed to look at possible future scenarios (like a global economic recession, skyrocketing oil prices, doomsday, blah-blah-blah). Basically, the big three automakers have been out of touch with the rest of the world. People like me (and probably you too) have never owned a domestic car. For myself, imports offered better value for my money (better fuel efficiency, a higher resale value, and a longer life). In addition, imports felt safer, sturdier, and were more aesthetically pleasing. Imports offered quality over quantity, and they looked nice too - imports made me a happy satisfied consumer.

Like the big three automakers, Microsoft (or Ballmer at least) is out of touch with their community (their developers). For myself, the community oriented / collaborative communities outside Microsoft are continually drawing me in. The openness of these communities and their open solutions is one part of the interest, but I’m also growing tired of working in an ecosystem (and with developers) that literally lag years behind the rest of the software world. Down here in the trenches Microsoft centric developers bear a striking resemblance to the unionized American autoworkers – inflexible, arrogant, and inward focused.

I want a development stack I can be proud of, that embraces quality over quantity, to work with developers that share my values, and an environment that offers more aesthetics. In short I want to be a happy satisfied developer.

In all fairness, it’s great how Microsoft is opening up (i.e. IronRuby, IronPython, MVC, etc…), but there are already more open established and mature communities outside Microsoft. I also really like C#, WCF, ASP.NET MVC, and Server 2008, but it’s all the baggage associated with the Microsoft ecosystem. It’s also fair to mention that the ALT.NET community is making great strides, but it is fundamentally discouraging that ALT.NET had to be formed in the first place. I mean, where are all the ALT.Rails, ALT.Ruby, ALT.Linux, ALT.Java communities?!

Author: Adam Kahtava Categories: Musings, Open Source, Personal, Software Tags:

Vernacular Culture and Heretics: Humanity the Zen of Zen?

October 30th, 2008

I found Art Kleiner’s concept of vernacular culture interesting in his book The Age of Heretics: A History of the Radical Thinkers Who Reinvented Corporate Management.

Vernacular as described by Kleiner:

Despite the power of corporate practice, something desperately desirable has been lost in everyday corporate life, and without it, corporations could not truly perform. This lost quality, unnoticed and yet desperately needed, was the vernacular spirit of everyday life …

there is no better word than vernacular for the quality of relationships and culture that dominated community life before the advent of the industrial age … 

Vernacular life was the way of life that still exists in these villages of our dreams … In a vernacular culture the best things in life are free, economic and personal life are mixed together … and every exchange of goods is not just an economic transaction but an expression of the community’s spirit …

the builders of industrial culture didn’t have to reject vernacular culture; they merely ignored it or destroyed it in passing, while the power of finance and operations, the power of the numbers culture, undermined the relationships that vernacular culture depended on.

There’s strong parallels to the vernacular culture, the Agile / Lean movement, open source, buying locally, the Toyota Way and an innate human need for community and contribution. Today, many of the institutes that have been built on industrial culture (GM, Ford) seem to be faltering, whereas those that have been built on vernacular culture (Toyota, Google) seem to be succeeding.

Through the book the author suggests that heretics are often responsible for transforming industrial cultured institutes to ones that embrace vernacular culture.

Kleiner describes a heretic as:

someone who sees a truth that contradicts the conventional wisdom of the institution to which he or she belongs and remains loyal to both entities – the institution and the new truth.

One of the concepts that is continual presented within this text is that conventional wisdom and institutions are often incorrect, as individuals we can change our situation, our work environment, and our world, but in order to make change we need to identify, verbalize, and seek out new ideas and approaches.

I don’t know how I was recommended this book, but I’m really enjoying it!

Author: Adam Kahtava Categories: Book, Musings, Open Source Tags:

How To Display Your Amazon Reviews and Wish List (on your site) Using Amazon’s Web Services

October 6th, 2008

If you’ve ever landed on Amazon then you’re probably familiar with their reviews and wish lists. Amazon provides access to these items (and many-many more) through their extensive web services – the Amazon web services can be complex and overwhelming when all you want is a review list and a single user specific wish list. For this site I wanted to pull in my reviews and wish list – displaying them alongside my blog. It’s fair to note, that user reviews are available via an RSS feed (but this feed doesn’t include all the details I wanted) and the wish list page still doesn’t provide an RSS feed. So a custom Amazon web service request was in order.

Let me try to make this story short.

If you want to request your reviews and your wish list you need the following:

Once you have a wish list or review, you then need to:

Once you’ve collected all those bits, you need to:

  • Checkout and download the source code for the project and build the assembly or download the pre-compiled assembly.
  • Add the assembly reference to your project (remember, I’m assuming you’re using .NET).
  • Make a call to the application which will generate XML files containing your respective reviews and wish list.

Setting up the call would look something like this:

IAmazonRequest amazonRequest = new AmazonRequest() {
 AssociateTag = "adamkahtavaap-20",
  AWSAccessKeyId = "1MRF________MR2",
  CustomerId = "A2JM0EQJELFL69",
  ListId = "3JU6ASKNUS7B8"
};

IFileParameters fileParameters = new FileParameters() {
  ProductFileNameAndPath = @"Products.xml",
  ReviewFileNameAndPath = @"Reviews.xml",
  ErrorFileNameAndPath = @"Errors.xml"
 };

IAmazonApplication amazonApplication = new AmazonApplication(amazonRequest, fileParameters);

amazonApplication.Save();

And Viola!

If you’d like to provide some design guidance, fix a bug, or request a feature, then visit (or join) the project on Google Code.

Alternatively, you might also be interested in the LINQ To Amazon source featured in the book LINQ in Action.

Author: Adam Kahtava Categories: .NET, ASP.NET, Amazon, Open Source, Software, XML Tags: