The Cost of Printer Ink

August 19th, 2005

I remember when printer ribbon was 1/10th the price of the printer, and the decision to purchase more ribbon was simple. Today, I face printer ink prices that are 15/16th the price of new model printers that include printer ink. Purchasing a whole new printer is an obvious option to purchasing and replacing printer ink, however, a deeper cost analysis will uncover more costs of purchasing a new printer. These costs include time in reconfiguring computer systems that rely on the old printer. Measurements on the print quality and time efficiency of new model printers, amount of ink consumption, and replacement ink catridge prices should be part of any returns of investment analysis.

I recently bought printer ink, and I was surprised to find that prices have increased to the point where I considered buying a new printer simply for the ink that is included. After thirty minutes of cost and ROI analysis at a traditional computer parts store, I decided that purchasing a new laser printer through an online vendor would be a good decision, but I purchased the printer ink anyway to meet schedule constraints. Perhaps, the printer companies are becoming more responsible and are pushing consumers like me, who continue to use older printers, to purchase new efficient models. I am certain that other people have also made the consideration, and the printer companies are certainly aware of this. I expect printer ink not to be included with new printers in the near future.

Edsger W. Dijkstra (1930-2002)

August 15th, 2005

In Selected Writings on Computing: A Personal Perspective, Dijkstra states:

It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

It has been three years since his death, and it is obvious that I have not forgotten him, his quotes, and his graph algorithm.

Remembering Function Pointers

August 13th, 2005
Posted in C++ | No Comments

While driving on my way back home at the end of the day, I thought about the things that were very exciting to learn about during my early computing years. The notion of a function pointer was one of those things. I was very familiar with functions and variables. I was also familiar with the idea of using pointers and references to variables as a means of adding layers of indirection to those variables. However, I admit, I did not independently expand my understanding of the concept–increasing layers of indirection by using pointers–to functions.

Microsoft vs. Google

August 4th, 2005

I’ve been following the conflict between Google and Microsoft over the employment of Kai-Fu Lee . It seems that Microsoft is having a difficult time retaining their employees. Microsoft would rather litigate and mar their company image, and at the same time, enhance Google’s image as an employer that is willing to take risks when employing the people it wants. Perhaps, instead of reacting to Kai-Fu Lee’s departure, Microsoft should be more proactive and exert more effort in preventing the loss of other vital company members. They are also not doing much to attract fresh, innovative developers. While Microsoft appears to be relying on brand recognition to attract candidates at traditional career fairs, Google uses a fresh, kooky recruitment campaign including billboards that feature math puzzles and active sponsorship of an online coding competition forum. At one point in my life, I considered seeking employment with Google as a result of activities that were similar to these. Perhaps, it is time for a new giant to reign over the technology industry.

As an aside, I do hope that a new, distributed, reliable, secure operating system is in the works.

Function Overloading and PHP

August 3rd, 2005

I’m proud of writing elegant code that can be easily read and intuitively understood. I use whitespace to increase my code’s readability, and I utilize simple, specialized programming language constructs to make my code more concise. For example, I’ll use PHP’s foreach construct, instead of a traditional for loop, to eliminate unnecessary indexers. This construct can also be found in Java, C#, Perl, as well as other programming languages. I also frequently use a PHP idiom, which I have never used in other languages, that allows for the convenient addition of elements into an array.

Because PHP features nonessential elements such as the array append operator, I am irked by PHP’s lack of a more useful feature: function overloading. The popular approach of appending a formal argument’s type to a function name is bothersome and inconvenient. The scheme begins to deteriorate source code aesthetics when the functions that require overloading accept more than one argument. Additionally, calling functionName($objectOfTypeA) and functionName($objectOfTypeB) is clearly more elegant than having to call functionNameTYPEA($objectOfTypeA) and functionNameTYPEB($objectOfTypeB). Function overloading would allow people to use a consistent interface, while allowing the implementation of a function to vary depending on the number and types of supplied arguments. Surely, there must be a way that type hints can be exploited to implement this much needed feature.