NeWS, NeXT, VMS, and Windows NT … connections

HyperLook

Quick note…

As you may recall in the past, I’m late to the game in noticing that WNT was 1 letter off from VMS.

Well, as I was thinking about a neat old windowing system (more on the great history on the web later…) called NeWS… I noticed something.

It was developed at Sun around the same time that NeXT computer was forming… (late 1980s … LATE 1980s!!! Has it been that long!)

Here is another parallel.

Sun made Workstations. NeXT was making a workstation. The NeWS system was based on PostScript. The NeXT system was based on Display PostScript. Hmm, I can’t think of any other companies attempting to use PostScript as their graphics engine!

Similar technology choices and an un-canny similarity in naming! Which came first? NeXT or NeWS? Notice that ‘WS’ is 1 letter off from ‘XT’?

James Gosling worked on NeWS. James was the architect of Java. Arthur van Hoff worked on NeWS for James. He built a SimCity clone on their interface toolkit called HyperLook. Arthur was part of the original Java team that left to start up Marimba. He formed another ‘stealth’ company after that which sold Java tech to Tivo for their platform.

The initial magic numbers on a Java class file are ‘0xCAFEBABE’.

I remember working on NeXTSTEP / OpenSTEP on Intel and ALSO seeing that signature. A quick search reveals that I wasn’t crazy. The question now is: who came up with it first? NeXT or Sun??

Posted in General | Comments Off on NeWS, NeXT, VMS, and Windows NT … connections

Error handling

error dialog

Updated: there is now a page on this site dedicated to this topic.

About 8 months ago, I was going to a big blog post on error handling in programs. I think its an interesting and practical topic. Proper code requires lots of good error handling. I was trying to understand which systems work the best and I couldn’t really come to a conclusion myself.

So before going on, what is the best system for error handling that you have used?

How does language X, Y, or Z handle it. (C, Smalltalk, Objective-C, Forth, Common Lisp, Io, Erlang Haskell, Ruby, Python, PHP, Java). What about OS level systems or windowing systems?

What is the best system that you have used?

Just to get things started. I’ve found that a lot of the C style systems to be too laisez faire. On the other end of the spectrum, putting a try / catch/except handler for every possibility doesn’t make me feel too good either. Then you have things like PHP which toss errors if you use an ‘@’ symbol on the function call.

Anything innovative out there?

Posted in General | 3 Comments

Apple’s New iPhone

apple iphone

Steve keeps talking about how he is waiting to buy a phone when the iPhone comes out. For a while, I thought this phone was just BS. I told him to just get a RAZR. Well there has been recent news that shows they will actually go through with this and build a product. Whatever they come up with, I will get since I am in the Apple New Product Subscription Program.

It will be interesting to see what they finally release. Still, like all products today, Apple or Otherwise… it is generally not a good idea to get the first generation. They always have bugs and the ‘fix’ is to buy the next version.

Posted in General | Comments Off on Apple’s New iPhone

New Desktop Theme for XP

Zune Desktop Theme

MS released some new themes for XP that look kinda cool. Until Vista comes out, I will be using the above pictured Zune theme. The artist who knows about it (who uses a MacBook) was using an internal incarnation of it at Microsoft for a year. They decided to touch it up and release it as a Zune theme. Nice.

(Note: apologies for the color glitches in the JPG above. MS Paint decided to add that when saving)

Posted in General | Comments Off on New Desktop Theme for XP

more vids…

old, yet still accurate… listen to the lyrics…

The Band: The The Album: Mind Bomb

Note, this band had Johnny Marr of the Smiths in the band at the time.

Posted in General, Movies, Music | Comments Off on more vids…

64 bits is necessary… for me at least

ram chip

For quite a while, I thought that 32 bits was more than enough for most people. I had this belief in 1999 and I had it up to yesterday.

Today, I read something that made me change my mind. For some reason, I had some pretty big blinders on to the whole Linux memory system. Linux’s kernel has a performance hit when addressing more than 1 gig of physical memory. This is pretty serious. It turns out that a lot of the 32 bit OSs don’t have a great answer for this (Windows uses a 2gig user and 2 gig kernel split, so basically a 2 gig physical system for windows).

Also, I have had the need to work with some large in memory data sets that easily consume 2+ gigs at a time. Linux barely handles this with its 3/1 – user/kernel split. I’ve run ‘Out of Memory’ enough times to consider just moving to a 64 bit arch.

So, originally I thought the vast majority of users would be OK, but I was ignorant to the 1 gig physical design choice. I thought that a machine that had 4 gigs was 4x as good as a machine with 1 gig. That was wrong.

From now on, all of the big data machines that I have will be 64 bit systems. My next desktop OS will be 64 bit as well. The time has come.

Posted in General | Comments Off on 64 bits is necessary… for me at least

My new favorite scm – SVK

SVK logo

Many years ago, I used CVS for my personal projects. After that, I used Perforce. The free perforce license for small guys was a good thing, but I didn’t find perforce to be the perfect solution. It had its issues with branching, web support, and other little nits. When subversion was mature, I started using that. After moving to subversion, I thought I had a great solution that had the good features from Perforce (like the atomic commit) with an environment similar to CVS. Oh yeah, I also hated the perfoce ‘edit’ procedure. I should never have to worry about my workspace becoming inconsistent with my scm. CVS and Subversion are very good about that.

So back to the story. I’m using subversion at work and I had to do some branching and I was about to do a merge. I had never done one so I read up about it.

Wow. What a let down. They really didn’t have a solution for that. Essentially, you, the programmer, have to keep track of the last items you previously merged! You would think in the era of gigahertz cpus and gigabytes of storage that saving this information wouldn’t be a hard problem.

This prompted me to research the SCM space again. It’s actually an interesting space. Recently (the last 5-6 years), there have been a lot of alternative and interesting SCM systems developed and released. One of the ones that a bunch of friends use is darcs. darcs is written in Haskell and it allows the developer to treat every workspace as a repository. Steve thinks it works well for him, but acknowledges issues… especially performance. I was considering reading more about it and possibly switching over when I stumbled upon a different solution.

SVK

svk is a tool written on top of the subversion storage system. It is written in Perl and it delivers distributed/disconnected development (like darcs and a few others), and a smarter merge (like GNU arch). It even does this without having to get rid of your existing subversion repository, which is very nice! There are already a lot of tools that work with subversion so keeping that investment makes the decision easy.

Did I mention that the merge is smart! 🙂 It’s called smerge and it is much easier to use than the subversion merge.

So after doing a lot of research, I started noticing that various tech bloggers had good things to say about svk. There are also some decent tutorials on the net as well.

So…. I decided to try it out. They have Windows binaries that install easy on the main site. I followed the example usage documents and tried it out. Here is what I learned:

  1. The software is quality work. All commands and operations had help and functioned correctly.

  2. ALWAYS use a local branch for smerge, push, pull operations – and always use ‘-C’ to see what it would do. I made a mistake and pushed a merge the wrong way (from dev to release). I was also using a non-local branch (ie. a mirror) for the operation and I was online. The net-net was that I pushed the wrong code and it got propagated live to the main subversion repo. I had to spend a lot of time fixing this. NOTE, this was really a user-error, not a flaw in svk design. They tell you to use a local branch because everything is geared towards using local branches. Also, doing things with the trunk tend to not work the way you would expect. svk assumes you are on a branch since the branch has a known spot where it forked from the tree, whereas the ‘trunk’ does not.

  3. After I used it for a day, I find that I like the way it works better than subversion. The merges worked and I was more productive with the mirrors setup. I’m also pulling in more mirrors since I have more than one repo that I’m using.

OVERALL, I think this is going to be a great new tool for the toolbox and I highly recommend it.

Posted in General | 1 Comment

Era of the Mega, Giga and Tera

In the 80’s we had megahertz speed processors, megabyte sized disks, and kilobit speed wans with megabit lans.

In the 90’s we still had megahertz processors, but gigabyte sized disks, megabit wans and 100 megabit lans. wireless was megabit.

Here we are in the 2000’s and we have gigahertz processors and soon, terabyte sized disks. On the wan side we are in the multiples of megabits still but lans are gigabit. wireless may reach the gigabit with UWB.

We may never have terahertz processor cores.

What will he do with terabyte disks and terabit lans?

Posted in Computers, General | Comments Off on Era of the Mega, Giga and Tera