Welcome to Savarese.Org
2013-03-26T01 Rearrangement of Guitar Arrangements.
I split up my classical guitar arrangements into a separate page for each piece. That will make it possible to list revision changes every time I update a piece. Up to now, I have been silently updating pieces, making it impossible to know that a score has been revised.
Also, I added Preludio en Do Menor by Augstín Barrios.
2012-09-11T01 BareHTTP version 1.0.2 released.
Even though BareHTTP is little more than a toy example program for a magazine column I wrote eleven years ago and my preference is to avoid Java programs at all costs, I still find it useful for various software testing tasks. Therefore, even though the code is what I would call awful and has been relegated to the archival section of my Web site, I occasionally (as in every couple of years) fix a glaring bug that crops up.
BareHTTP version 1.0.2 has been released. This version fixes a potential problem with binary file transfers caused by using an OutputStreamWriter with the default system character encoding. HTTPSession now writes bytes to an OutputStream instead of using an OutputStreamWriter wrapper.
2012-08-10 Skip Lists
continues to be one of the most common operations performed by
computer programs. Java programs are no exception. The Collections
Framework recognizes the fundamental need for ordering computer
data by providing the
Comparator interfaces. If you
cannot determine the natural ordering between two objects, you
cannot sort a collection of
allows an object to control its ordering by implementing the
allows you to implement
compare(Object,Object) method that
returns the ordering of an arbitrary pair of objects that may not
have been designed with ordering in mind.
2012-05-24 The Trouble with Distributed Objects
The benefits of object-oriented programming do not translate from shared-memory programming to distributed programming. It's time we face up to this problem and look for ways to resolve it. Web services may facilitate integration and interoperability, but they don't do much to let you specialize component behavior to meet application-specific requirements. If you work with distributed object or service component frameworks on a daily basis, you may feel that it is much too hard to build systems that do exactly what you want done and do it exactly how you want it done. I have felt this way for years. Let me explain why.
2012-05-23 Approximation Algorithms
Programming is often more about writing business rules and less about implementing, or even inventing, algorithms to solve problems more efficiently. Programming involves using a third-party API or designing an API more than it involves devising data structures that make optimal use of available system resources. Enterprise development is concerned more with systems integration than systems optimization. Perhaps programming is now less about computer science and more about software engineering—if the two can even be considered separately.
2012-05-19 Recursive Descent Parsing
Even though XML provides a versatile information representation structure, it is not appropriate for use by all applications. Sometimes information is expressed more appropriately in a form as close as possible to its natural representation. For example, even though mathematical expressions can be encoded in XML, it is more natural to define a grammar for parsing mathematical expressions if you are writing a calculator or spreadsheet program.