Ruby vs. Java
By Bill Kayser (9) on February 4th, 2009

It’s not that we don’t have enough people offering opinions on what is a better language.  It’s just that some of us never tire of discussing it.  There are so many perspectives, so many arguments, and so many people willing to   Continued »

What I Learned from Ward Cunningham
By Bill Kayser (9) on February 2nd, 2009

Ward Cunningham is well known in the software engineering community and was famous in his own right for his work on WyCash and the development of CRC Cards, Extreme Programming, and Programming Patterns, even before his Continued »

OSGi from Here to There, Part II
By Bill Kayser (9) on February 14th, 2008

So what does it take to migrate a large, multi-tier product to the OSGi Equinox runtime?

We started out with a large, over-frameworked set of applications built with a creaky buildsystem cobbled together from perl scripts and ant build files. We had all the code crammed into two projects, one for core libraries and the Continued »

OSGi from Here to There
By Bill Kayser (9) on January 2nd, 2008

In the last installment I talked about programs built on the OSGi runtime, how they consist of discrete bundles of code and resources loosely coupled with each other, using a service registry to communicate, much the way discrete Continued »

SOA in a JVM
By Bill Kayser (9) on November 26th, 2007

There has never really much debate about whether Service Oriented Architecture is a good idea or not. Based on principles such as loose coupling, encapsulation, location transparency, and the separation of infrastructure Continued »

The Usability of Programs, Part 2 of 2
By Bill Kayser (9) on October 22nd, 2007

Here are some other principles of UI design that apply to program design:

Reduce Cognitive Load. This guideline in UI design is about minimizing the amount of things a user has to know in order to be able to use a tool effectively. Likewise, a programmer shouldn’t have to subclass five different classes just to effect one small change to an application. For instance, I often find that in order to add a new behavior interactive application I may have to learn the logging framework, the undo/redo mechanism, the localization framework, and the validation framework–on top of whatever complicated hierarchies exist in the model and views. Things usually reach this state when developers anticipating future needs and striving for reusability and generality in their frameworks end up sacrificing simplicity and, ultimately, usability.

Continued »

The Usability of Code, Part 1 of 2
By Bill Kayser (9) on October 12th, 2007

Not long ago Ken Arnold wrote an article for Queue magazine called Programmers are People Too. In it he talks about applying the principles of User Interface Design to the design of APIs. It turns out the practices of Human Factors and Usability Engineering have a lot to offer the implementors of public APIs and frameworks. Think of an API as the “user interface” of a larger programming model. Users are application programmers and the usability of the API is judged not just by it’s richness, but on the ease of use and learnability of the API. It’s not sufficient to address usability with thorough documentation any more than it’s sufficient to compensate for a bewilderingly difficult user interface to a mobile phone with a five pound user manual.

Continued »

Programmers as Channel Surfers
By Bill Kayser (9) on October 2nd, 2007

If a program is to be a work of literature, then where does that leave object-oriented programs? In the era of functional decomposition, programs were built around algorithms and data structures. They executed in a single thread as a sequence of steps and subroutine calls, not unlike a story. Our object-oriented programs, on the other hand, don’t have such a fixed path of execution. Whether server or client applications, they start up multiple threads and make heavy use of message passing and asynchronicity. The essence of a program is not in a sequence of steps and subroutine calls but in the subtle relationships between classes spread across many frameworks and subsystems, relationships such as inheritance, aggregation and collaboration. So how does one read a Java application like a story? The whole idea of object oriented programs seems at odds with literate programming.

Continued »

The Literacy of Programs
By Bill Kayser (9) on September 30th, 2007

Bill1

What is the purpose of a computer program?

Your colleagues and you all write software.  You generate software prose on a daily basis, crafting these artifacts called programs, line by line.  You utilize a common language that you all agree upon, a language which bears scant resemblance to a spoken language.  So what is it that you are creating?  What is the purpose of these lines of code?

You might say a program elaborates how a computer is to execute an algorithm.  It describes what the system should do and how to do it.  As programmers, we are the narrators and the computer is our audience.  That’s basically what we were taught in our very first computer class.

Continued »

Introducing Bill Kayser
By Manas Fuloria (2) on September 30th, 2007

Bill holds a Masters in Computer Science from Stanford University. He has more than 20 years of experience with object technology and languages including C++, Smalltalk and Java (he’s a certified Java programmer and architect). He has served as a member of Sun JCP expert groups on RMI Custom Remote References (JSR78) and EJB Performance Benchmarking (JSR131). His career spans IBM, Schlumberger (on oilfield applications), WorldStreet Corporation (on financial applications, as Chief Architect) and SupplyChainge (again as Chief Architect) At SupplyChainge, Bill interacted with Nagarro and visited Delhi as well. After SupplyChainge, Bill joined the very successful application performance management company Wily Technology, which was acquired by Computer Associates in early 2006 for a large sum. He currently works on the Wily Introscope™ product. He is also the co-founder of StepZero, LLC, a performance management consulting firm. He collaborates informally with many open source gurus including Ward Cunningham, the father of the Wiki.

Continued »