At the office

Here are a few photos of objects around my office, taken a few years ago. One of the photos has the exact date and time when it was taken written on it, but not in the typical way, where the camera imprints the text in the corner. I’ll let you see it for yourselves. Enjoy!

See the ColdFusion handbook in this photo? ColdFusion (by itself, without the Java layer recently shoehorned into it by Adobe) was and is the best programming language. It’s so high-level that a few lines of code can do what would otherwise take pages of low-level code in other languages. I find that very elegant.


Java finally acknowledges upgrade issues

Not sure how many of you have been aware of this, but Java upgrades over the past several years have been problematic for Windows users. When a new version of Java came out, the installer would prompt you to upgrade, but would never prompt you to remove the old version, or do it for you. In my work, I’d see computers with as many as 10-12 different versions of Java on them. The user, unaware of the messiness built into the Java upgrade, would leave the old versions on their machine, and they’d keep piling up. You could see them in the Add/Remove Control Panel, but how many people know how to look there, and how many know that it’s okay to remove old versions of Java?

So I was heartened to see that Java is finally acknowledging the problem with old Java versions sitting on Windows machines, and is now prompting users to remove them after installing the new version. See the screenshot below.

Ideally, their upgrade engine ought to remove them for the user, but at least this is a step in the right direction. And to think that Java is being used everywhere these days (even where you don’t want it), and it took all this time for them to straighten out the upgrade issues. It’s a bit shameful if you ask me.


Java I/O 2nd Edition by Elliotte Rusty Harold

Java I/O discusses in great detail a subject that is, in many ways, the bread and butter of Java: input and output. Given the expanded capabilities introduced with Java 1.4, 1.5 and 1.6, this book’s attention to them is timely and on target.

Here are some techniques that the book teaches:

  • Reading and writing files
  • Communicating over network sockets
  • Filtering data
  • Interpreting a wide variety of formats for integer and floating-point numbers
  • Passing data between threads
  • Encrypting and decrypting content
  • Calculating digital signatures for streams
  • Compressing and decompressing data
  • Writing objects to streams
  • Copying, moving and renaming files and directories
  • Choosing files from a GUI
  • Reading and writing non-English text in a variety of character sets
  • Talking directly to modems and other serial port devices
  • Controlling printers and other parallel port devices
  • Managing and communicating with USB devices
  • Transmitting data wirelessly with Bluetooth
  • Communicating with the outside world from small devices such as cellphones and PDAs

The book has 25 chapters, divided into the following logical parts:

  • Basic I/O, or the stream
  • Data Sources, such as files and networks
  • Filter Streams, or processing data as you read or write
  • New I/O, which deals with the changes made in Java 1.4
  • File System: moving, deleting, renaming and choosing files
  • Text: reader and writer streams
  • Devices: the Java Communications API, USB, J2ME and Bluetooth

Java I/O isn’t for everyone. It’s an in-depth book that assumes you already have a basic familiarity with Java, and you know its syntax. You should already know object-oriented programming, and you should already have written simple applications and applets. Although the examples given in the book are straightforward, you will quickly be overwhelmed if you’re a Java beginner, so you may want to pick up another book such as Learning Java or Java in a Nutshell first.

Elliotte Rusty Harold put a lot of hard work and detail into making Java I/O understandable and usable, and it shows. This book will prove an invaluable resource to the Java programmer interested in strengthening his or her I/O knowledge.