Sunday, October 25, 2009

Geode Caching and Windows 7

We geo-cached today. We broke a personal record and found a series of 30 caches over 4 hours. It was a blast! Isaac came up with his own joke: What do you get when you cross a rock with geo-caching? Geode-caching (hence the title). Pretty funny!

We also went to the carnival that was in town. Sandi, Isaac and Anabelle drove, I decided to walk Cookie (one of our dogs) to the carnival. We got there and at first she was just a little anxious. Over time she grew more and more anxious until a booth where you threw darts at balloons just pushed her over the edge and the poor thing was terrified. I took her away from the carnival and waited for Sandi and the kids to finish up.

Other than that the only thing left to announce is that I am legal now with Windows 7. My official copy of Win 7 Ultimate arrived today and I've installed it. It was a bit of a pain since there was no upgrade path from beta to final, but that's alright, sort of starting with a clean system and I saved off a lot of my data ahead of time - using the transfer took and some manual backups. I kind of miss the little beta message at the bottom, right-hand corner of the screen.

Tuesday, October 20, 2009

Crowning achievements as a programmer

I guess "crowning achievements" is a bit extreme, but there are several applications or bugs I've worked on that I was pleased with. I'll just list some of them out and provide a brief explanation as to what the were and why I was pleased with them.

1) My first program used on-the-job ever. I was working as a material handler and going to school for CS at night. I wrote a program to create receipt documents for items that were not expected or properly shipped to our site (at DEC).

2) ARS (Action Reporting System). This was probably my first MAJOR application. It was basically a "call desk" application that allowed users from several facilities to log requests to various operations groups. It could be for IT or Facilities and others. It was flexible, and well laid out, but it took me several months longer than I had estimated it would take.

3) Automated backups. Not really a programming task, altho' it did involved making changes to some of our software that helped manage our tape library. Not only did I automate backups for 3 sites, but also met with the operations managers of several other sites and we created a rotating schedule with one another to store our tapes off-site; this saved DEC about $250,000 per year (Or was that per quarter? I cannot remember now) in off-site storage fees and also in personnel.

4) My first "money making" application. It was a silly application that ran on Windows or Mac OS (7 or 8). It's purpose was for tracking software on company-owned computers and adding the lists to our asset tracking software that the companies also used to manage their physical inventory.

5) Another application used in conjunction with our inventory software. It tracked (and kept an ongoing history of) a company's parts inventory in a manufacturing site. It was also smart enough to predict (based on past usage) when you would need to reorder. The fun part was devising a file layout that acted as not only a file of current inventory, but mapped the actual history of the transactions.

6) Mortgage application. It was huge. It was powerful. And we had a chance to make good money on it by selling it to a competitor but we did not and they squashed us anyway (since they dominated the market). A LOT of dynamic data mapping and interesting structures and logic managing it all.

7) Data mapper. Heh. What? Mapping data? Big deal! Well this one was. It had to map LOC and BA data from one bank to another (back in the day of large bank takeovers). Both banks used completely different tracking and management systems. It was a challenge but it was great fun! It had to be dynamic, determining how it should map raw data on the fly, not in any specific format.

7a) DES. I had to implement a DES encryption library in DEC BASIC, and some basic methods to do stuff like encrypt/decrypt/generate PINs, MACs, etc.

8) Bug #1. I was working in OpenVMS for DEC and THE Andrew Goldstein logged a bug report and it was assigned to me. I looked at it and pretty much figured out the issue within a week but I spent over a month looking at it simply because it was logged by Mr. VMS and I did not want to blow it. Turned out it was NOT a bug, but a POTENTIAL bug if we ever completed an unused section of our backup code (a framework was in place but never activated, the bug was in that code). I documented the heck out of it and closed the bug.

9) Bug #2. I worked in the security section of the VMS group. I got to see some cool bugs. This problem was in memory management. A few lines of assembly language were out of place and an object was being cleared when it should not have (under very special circumstances). It was my first big kernel issue.

10) Bug #3. This one was daunting. But, like the bug before it, it simply came down to code being executed in a certain order that caused an issue. I can't actually go into detail with this one. I can say it was obscure.

11) Finally, in my current job, I wrote a little servlet that conformed to certain library specifications that would indicate to the caller whether or not items were available for use based on certain criteria. It was designed to be simple and very quick because it was called on the fly from someone else's website that interlinked their library services with our permission services. It was a lot of fun to write and my first solo project after moving.

And that's the short list of the things I had the most fun with. I have written many other applications (including disk scanners that were used by other people in their own products) and graphical queue management software, graphical system management software, data gathering software (for QA), data generators, data sifters, etc., but those stand out in my memory.

Saturday, October 17, 2009

Another Mac OS X and Windows 7 comparison of sorts.

There are a number of reasons why I still prefer OS X over Windows, specifically, 10.6 vs. 7.

First let me list why I like Windows 7:
1. MUCH improved Task Bar.
2. Less of a resource hog than Vista (more like XP).
3. Polish (it is very pretty).
4. I can play my favorite games, natively.
5. Improved preferences and UAC controls.
6. Some really useful development tools are Windows-only.
7. Explorer favorites can be renamed. **
8. Improved searching.

Now what I do NOT like about Mac OS X:
1. The dock is hacked from NEXTSTEP.
2. Cannot rename items in the places section without renaming the original. **

Now onto a comparison of the features I prefer in Mac OS X over Windows and some explanations of what I do not like in Mac OS X.

I am a fan of older and alternative operating systems. There have been many that SHOULD still be alive today but are not because of competition with Microsoft and Apple. One of those is the grandparent of Mac OS X: NEXTSTEP. Mac OS X is an amalgam of Mac OS and NEXTSTEP - mostly NEXTSTEP under the hood, but with the UI of Mac OS fused into the front end.

Whenever two separate paradigms are fused into one there are going to be problems. One of the problems is the Dock. The Dock in NEXTSTEP made complete sense in the context of the NEXTSTEP UI. It was almost genius. But fusing the Dock into the Mac OS UI makes little sense, they come from different parents, they have differing pedigrees and really are not meant to be together. That being said, the Dock is STILL useful and I appreciate having it as an application switcher.

Another problem is that it took many releases to make the NEXTSTEP equivalent of Finder work [spatially] like the Mac OS Finder. It still does not behave 100% like the old Finder, but Apple has improved it over the years.

The other thing that bothers me about the Finder is that if you rename an item in the "Places" section, it renames the original. OUCH. This should be a "soft link" and you should be able to call it whatever you want. If you have an application or folder with a LONG name and want to abbreviate it, you should be able to do that in Places.

But what I DO like like about Finder is that it incorporates 2 features of the NEXTSTEP equivalent [the WorkSpace Manager] that I cannot live without: Column Mode and breadcrumbs. Column mode is simply (for me) the BEST way to browse files if you no longer have the true Finder spatial mode. Open a windows and zip back and forth through level after level of folders... it is great. And with that, you can have a breadcrumb trail telling you where you are and enabling you to jump back along the path at any position. In fairness, the breadcrumb of Finder is also crippled. It was a MAJOR part of the NEXTSTEP interface and had prominence, you could not miss it. Now it is relegated to a small strip of real estate at the bottom of the window.

Another inherited aspect of NEXTSTEP is the command line interface. Yes, OS X is more or less POSIX compliant and has a SH or BASH interface. This is far different from Mac OS. Mac OS was 100% UI. NEXTSTEP and Mac OS X are UIs layered on top of an entire, functional operating system that has a command line interface. And I love it. I love getting down into the nitty gritty, modifying things at the Terminal level. Brings me back to the "good old days" of VMS and other mainframe operating systems (time shares to some).

Finally, for whatever reason, OS X just feels like everything works well together. Windows can have a disjointed feel to it, flipping from application to application... in OS X (while not perfect) applications feel like they are implemented from a parent class of objects and they all bear familial resemblances.

Oops! One last nitpick. Games STILL stink on OS X. The latest trend for game producers is to create Mac OS X versions as well as PC versions... but this is a lie. In reality the developers are simply wrapping their games in CIDER... a WINE derivative that enables Windows applications to run on Mac OS X (or Linux). This is really not cool in my book, on the other hand you take what you can get, right? But performance is always worse on OS X than playing the game in Windows because of this layer that tricks the games into thinking they are running on Windows and the libraries that must map Windows functionality to Mac OS X functionality, etc.

Oh wait, still not done...

When my copy of Windows Ultimate arrives, it is possible I will shift back to Windows 7 at some point, but I might have to wait for improved calendar and email functionality, which is crippled in Windows and "just works GREAT" in OS X.

We shall see. There is always Linux!

Thursday, October 8, 2009

The world is passing me by...

I feel old. I've been away for a little over a week and it seems as though my kids have grown up and the world has moved on without me.

Not true, of course. But I swear Anabelle literally grew older by a year just on her birthday. Isaac has always enjoyed gobbling information, but now he is taking it a step farther by taking French and Japanese (culture and language) after school. Voluntarily. He also still loves the Boy Scouts.

My wife has become an information junkie of sorts herself. She totes her iPhone around and seems to be "plugged into" the universe around her now. Strange.

Work has been fine for me. More or less completed the tasks allocated to me for a project at work and am now waiting for more to do.

Per my last blog: I am back to Windows 7 full time. It just makes more sense for work, but I miss the more posix-like environment provided by Mac OS X. I guess I am always searching for that OS that will replace BeOS.

It was nice to visit my mother in Malden, and to see my co-workers once again, but it is also nice to be home with my family.