When did Linux become mainstream?

My answer might surprise you.
An article on lxer.com talks about perceived changes in the culture of LinuxToday.com. It blames the widespread adoption of Linux as the culprit which shooed away the hard-core geeks from the site. Of course Linux adoption was a slow, gradual process brought out by a series of events in the computer world. The article gives several examples including IBM embracing Linux at the LinuxWorld Conference & Expo in 2001 and a congressman from Venezuela telling Microsoft to drag its underhanded business practices elsewhere because he was going to adopt Linux for use in his country.

I personally think the shift started back during the United States vs. Microsoft case. I can't remember, but I think it was Ballmer who stated, "We're not a monopoly, because there's that Linux thing." Well, that statement unleashed the curiosity of the American media, gave Linux plenty of free press on national television, and launched it into the mainstream.

Why? Linux had been around for almost a decade, existing only as source code passed around the Internet between only the most hard-core of geeks. But now Aunt Helen, located in a little town somewhere in the Corn Belt of America, found out about Linux by watching Fox News even before she was able to get broadband.

This is one of the few times I will say, "Thank you, Microsoft".

Setup MarsEdit with Quills 0.9 Final

How to get MarsEdit working with Quills (kind of).
I have been wanting to find a better way to write blogs rather than using the Plone interface. I was happy to find that MarsEdit and Quills both implement several blog APIs. Though it seems the implementation for both the BloggerAPI and the MetaWeblogAPI are not complete, MarsEdit can still be used to post articles using the BloggerAPI.

I'll put up screen shots later, but here are examples of necessary configuration:

Name: MyBlogHome URL: http://www.davidmccuskey.com/weblogSoftware: Other Blogger-compatibleRPC URL: http://www.davidmccuskey.com/weblogBlog ID: weblog.2006-01-10.2395214781

The tricky part is the Blog ID. Plone uses an immutable identifier for all objects so that they can be found even after renaming them.

Quills uses this ID to get at your weblog object. To get this ID you'll need to login to your Zope Management Interface (ZMI) and go digging through the uid_catalog in Plone. When you have clicked on the catalog, click on the tab labeled Catalog. In the list of results, find your blog object and click on its link. On the popup page, look for the key UID. The value of this key is what you will need to use for the Blog ID.

Because of errors in the implementation of the MetaWeblog API, you will see a Zope error after posting.

Design Patterns - The Decorator

The Decorator was the focus of our second design pattern discussion.
Tonight was the second night of my design patterns meeting I hold with some friends from work. Most of us already had the book Head First Design Patterns by O'Reilly Publishing, but never made the time to go through it. Jennifer was the one who came up with the idea to start having a meeting every two weeks. We all agreed that it was a good idea.

We're currently working on our format, but so far have settled on one person being the 'teacher' for the evening. This person is responsible for presenting the highlights of the chapter to everyone even though we have all read it. After they are finished presenting, we then go around the table and share our ideas on how the pattern could be used at work or on personal projects.

Tonight we discussed the Decorator Pattern.

Here were my solutions:

• Recipe card

In this design, the recipe card is the base object and the decorators are ingredients. As per the design, ingredients would be stacked up to create the ingredient list.

Some of the interesting characteristics of recipes is that they often have to be scaled (4 to 12 persons) or translated to another type of measurement (metric/english). This functionality can easily be added down at the ingredient level. The different ingredients could also have superclasses based on their type - liquid, solid, etc. This makes it easy to separate scaling and measurement translation as necessary.

Here is a rough cut at the recipe card class diagram.

• Invoice discounts

In this example the base object is an invoice and the decorators would be different types of discounts or rebates. This would allow a sales team to be creative with the types of discounts given to a particular client.

Discount objects could be applied to different products, plus you have them expire at certain times (free for 3 months), also be percentages or flat dollar amounts.


Next time I'm presenting the Command Pattern.

Added AdSense by Google

With just a little bit of work, I managed to add Google Ads to my web site.
One thing that I like about Google is that they make things easy.

One thing that I like about Plone and Zope is that they make things easy.

In about an hour or two, I managed to put AdSense ads on my web site.

1) Go to Google.com/adsense and sign up for your account. Click on all of the emails to activate your account. Log in and grab your AdSense code.

2) Add a portlet to your custom area in Plone. Paste Google's AdSense code in the body of your portlet.

3) Add portlet to your root Plone right_slots property. Refresh your browser to see your Google ads.



Resources


• Plone book errata

An example of Google AdSense portlet

http://www.agmweb.ca/plone/book/scripts.html (look for "Page Template: google_ad_portlet")

• Plone.org

Page with an example page template used for a portlet

http://plone.org/documentation/how-to/create-static-slot

• Plone.org - how to control portlets

Reminder for properties used to activate portlets.

http://plone.org/documentation/how-to/control-portlets

New Canon Digital Rebel XT

Last week I received shipment of my Canon Digital Rebel XT.
Last week I received my Canon Digital Rebel XT from Dell. It's my third digital camera in 6 years and I'll say I'm happy again to have come back to an SLR with real lenses.

For the past week I've been taking photos around my apartment and outside just to get used to it and its controls. I have shot around 700 photos.

Here are the top reasons why I chose the Digital Rebel XT:

• (almost) instant on

• real lenses (SLR)

• low shutter lag

• highly rated

• upset at Nikon's decision to lock down their RAW format


I looked through many of my old photos taken with my Kodak DC240 and Nikon 4500. I saw that many of the photos were unusable for these following reasons:

• slow focusing (missed photo)

• shutter lag (missed photo)

• slow boot up time (missed photo)

• difficult manual focusing (blurry photo)


Also there are some features of the camera which have pleasantly surprised me:

• the battery life !! (350 photos)

• speed of autofocus (fast)

• flash range (really far)

I have no regrets at all buying this camera. All of the previously mentioned issues I had with my other cameras are now a thing of the past. I feel like a have a real tool in my hands. The experience has been very very liberating.

Thanks Canon!