Sunday, August 29, 2010

Books on tech

A visit to the Book Thing yielded some interesting books. (The Book Thing gives away books, mostly used books from different vintages. You can find them here: http://www.bookthing.org)

I came home with a several recent books and a couple of "early vintage" books. The recent ones include:

"Mac OS X Hacks"
"Python Cookbook"
"lex and yacc"
"Practical C++ Programming"

These are all from O'Reilly, the well-known and well-respected publisher.

The early vintage books (from the pre-PC era, in my mind) include:

"The Joy of Minis and Micros" by Stein and Shapiro
"Human Performance Engineering" by Robert W. Bailey
"Programming Business Computers" by McCracken, Weiss, and Lee

"Joy" and "HPE" are from 1981 and 1982, so possibly not strictly from the pre-IBM PC era, but neither talk about IBM PCs, MS-DOS, Windows, or the internet. Indeed, "HPE" is more about psychology than technology.

"Programming Business Computers" is a very nice text and I picked it up after I saw the name "McCracken" on the spine. I have a few books by him on Fortran and I find his books both informative and readable. (More readable than many of the O'Reilly books.) I guess that is known as star power -- I picked up the book because of the author, not the content. (I find the content informative, although a bit dated. Yet I enjoy the reading of the book. Reading tech books as literature?)


Wednesday, August 25, 2010

Networking

I attended the "Innovate Baltimore" social this evening. It was held at Red Maple, a bar/club that is within walking distance of my apartment. (How could I not attend?)

The event saw a fair number of people (perhaps fifty?) from various tech areas of Baltimore. There were graphics designers, startup entrepreneurs, and even folks providing a physics engine for game deverlopers. I talked with a number of folks (no, not all fifty of them) and even some folks from UPS.

It's nice to see these events here in Baltimore. We need a group to pull together the startups and small technical companies.

Friday, August 20, 2010

Less is more

I accomplished a lot today, although the numbers would indicate otherwise. In truth, it really depends on the numbers you choose to examine.

I made some code changes that fixed some defects. The number of changes and the number of lines of code changed were small. I changed perhaps thirty lines of code across five modules. A manager using lines-of-code or lines-of-code-changed metrics would say that I did very little this day.

The number of defects fixed was small. You could say that it was really only one defect, which expressed itself in several scenarios. So the number-of-defects metric also indicates that I did very little today.

Yet my changes transformed the program from not-useful to useful. The defects prevented us from using the program -- the calculations were wrong -- and my changes fixed the defect. So the metric of "can we use it" went from "no" to "yes", which means a lot to people.

It's not how many lines of code one writes, its which lines of code.

Tuesday, August 17, 2010

My first presentation

I gave a presentation to the local Baltimore Linux User Group tonight. I think this counts as my first (public) presentation. I've given presentations for employers, so this really isn't my first presentation. But one must start somewhere!

(The presentation was about cloud computing,)

Sunday, August 15, 2010

Letting them vent

Today I had lunch with two former co-workers. It was a good lunch, although it was a bit of a venting session for them. They are in tough but not impossible situations, with problems that range from staffing to managerial politics. I let them vent, and then we had some interesting conversations about outsourcing, on-shoring, talent management and retention, and staff morale.

Earlier this week-end I gained some hardware experience. I installed a second hard drive in a PC, and not only did I learn about drive configuration I also learned about Linux capabilities for partition management and file system mount points. Perhaps not something that belongs on my resume, but it is nice to know that I can still learn!

Wednesday, August 11, 2010

More success and a Linux meeting

At the office, I had more success with C++ and spreadsheets. Today I integrated more code into the existing spreadsheet libraries and now they can write an XLSX file. (One that Microsoft Excel opens and reads without complaint.)

After work, I attended the CALUG meeting. This is the mostly-informal group that meets once per month. Tonight saw no speaker so we talked among outselves, and sometimes about Linux!


Monday, August 9, 2010

Some modest progress

I made some progress for the client today. (Well, I like to think that I make progress every day, but today's was worth noting.)

Today I successfully integrated the new XLSX libraries into the existing system and read a Microsoft Excel XLSX spreadsheet. This is a big win for the client, who has wanted this functionality for a long time. (I've been building test cases and support scaffolding, so new features were deferred.)

I also integrated the routines to write an XLSX spreadsheet, and they work... sort of. They create an empty spreadsheet that Microsoft Excel accepts with complaints. I think it is due to the lack of content. I expect to fix that problem tomorrow.

But for a few moments, a little rejoicing. Yay! for me!


Saturday, August 7, 2010

Stuck in my head

I solved most of a problem yesterday. Almost. I implemented three-quarters of the problem in the last thirty minutes of the day. I need ten more minutes for coding and another ten for testing. (THe test framework is already in place.

The problem was in the reading of Microsoft Excel OOXML spreadsheet files. The OOXML files are much easier to read than the previous BIFF files, with data stored in XML and therefore as text. The one aspect I was not expecting was E notation for some numbers, and my existing parser considered these values as text, not numbers.

The solution is fairly simple: change my parser. I found a state machine description for validating a number (including E notation) in Cay Horstmann's "Practical Object-Oriented Programming in C++ and Java". I was able to convert his description into code. All that remains is to run the tests.

I would like to leave my work at the office, yet this problem is stuck in my head. I keep thinking about it. I know that I cannot simply forget it, I must find something else to think about.


Tuesday, August 3, 2010

Microsoft's Reactive Extensions

I attended the CMAP (Central Maryland Association of .NET Professionals) meeting. They had a presentation on Microsoft's "Reactive Extensions", a poorly-named package of classes to handle interrupt-driven programming. I also chatted with a few folks who I see only at the CMAP meetings.

The Reactive Extensions package is an interesting addition to the Microsoft toolset. They built it for .NET and also for Javascript, so there are two versions. Microsoft claims that they have the same capabilities. (If they do, then that says something about Javascript. If they don't then that says something about Microsoft.)

Microsoft makes a big deal about this package solving the programming problems of inter-system non-synchronized communication. And it does solve the problem, although Microsoft seems to have forgotten that this solution was available at least thirty years ago before PC-DOS 1.0. The package is a simple variant on event-driven programming, or even interrupt-driven programming, in which a process is interrupted by a second process. Or you can view the solution as a variant on the Observer pattern (which Microsoft does).

My impression is that it is useful, but a but clumsy in implementation. The classes do the job, but I'm not sure classes are needed. A simple interface may be sufficient. And it seems that Microsoft has packed in some extra features (throttling methods and "if" methods) that seem to belong to a different API.

This and other recent innovations in programming tools (Silverlight, Internet Explorer 9, IronPython, IronRuby, etc.) show that Microsoft feels competitive pressure. This is a good thing; Microsoft will provide better products for the market and everyone will gain.

I think the Reactive Extensions will be a big factor in development. It allows for the extension of an event-driven framework. This kind of extension will allow for a coherent set of changes to events and event processing. It may take some time, but the changes in application design will be significant.

I'm not sure about the name, though. "Reactive Extensions" sounds a bit dorky to me. But if my biggest complaint is with the name, then Microsoft is on the right path.


Sunday, August 1, 2010

The PC puzzle

I assembled the parts to my found PC. This is the Dell GX280 that I found a few weeks ago. It had no memory and no hard disc but was in good shape -- no signs of abuse. After installing all of the parts (which went without problems), I tried to attach it to my KVM infrastructure. I use KVM switches to reduce the number of keyboards and monitors.

The GX280 has no PS/2 ports. Apparently it was an all-USB machine. My KVM infrastructure is based on VGA and PS/2, so now I need a few more adapters. I ordered them today, after not finding them at the local Radio Shack.

In other news, I dropped a few bookmarks. The big one was InformationWeek. I had it in my "weekly favorites" list, something to read once a week. I have a number of web sites there, and I use them to keep up with current events in tech. I dropped InformationWeek since I've been unimpressed (and uninterested) in their stories. Not just this past week, but for the past several months. I get news from other sites, and Information Week not only didn't have repeats of the stories from other web sites, their stories were boring and irrelevant. Such is the fate of some web sites.