Category Archives: Technology

Tiny Laptops

I’m in the market for a small laptop. A very small laptop. And it has to be rugged.

The first one to make it to the top of my list was the iBook. Small, rugged, and good Linux support.

But then I noticed the Actius MM20. Only 2 pounds and 3/4″ thick. Wow. I’d buy it right away if it weren’t for the 20GB HDD. I’m hoping they’ll update that line soon.

Thoughts on Languages

I’ve lately been working with OCaml and Haskell. Both are functional languages, and I’ve enjoyed functional languages for some time. that’s one reason I used Python for so long — while imperitive, it has a number of features commonly found in functional languages, such as anonymous functions and certain types of list manipulations.

OCaml and Haskell are both appealing to me. OCaml can be compiled to byte code, native code, or interpreted. It is a blindingly fast language, often beating C++ for performance, and occasionally even beating straight C code. This is quite a feat for a functional language, and helped get me interested in OCaml to start with.

OCaml has a marvelous type system. It is strongly statically typed, but has type inference and polymorphism. In short, this means that the type system stays out of your way (unlike Java) while still catching type problems in advance (unlike Python or Perl).

OCaml also has an OOP system, which is powerful though a bit odd.

One annoying thing about OCaml is that you have different operators for integers than for floats, and for lists than for strings, and the list operators are more powerful.

Haskell is a lazy, pure language. Its typing system looks very similar to OCaml’s, but it extends it in several significant ways. One way is with the use of typeclasses, a great way around OCaml’s problem with different operators.

Haskell also has a nicer module hierarchy system, and has a stronger standard library in most respects.

Haskell is not as fast as OCaml, especially relating to string manipulation. On the other hand, it’s no slower than Python, and has some powerful ways to exploit its lazy lists. (Haskell lists are the same as OCaml queues, but are also used for strings.)

One thing OCaml has that Haskell seems to lack is camlp4. Haskell has template Haskell, but it doesn’t seem as versatile. Haskell also lacks overt OOP implementations, but the OOHaskell people would want you to believe otherwise. (I’m learning about that now.)

I Still Hate Phone Companies

I’ve never been a big fan of phone companies. I’ve dealt with a small independent local company, lived in SBC territory in several states, and now live in Sprint Local area. I’ve never had good service, ever. The only thing worse than my phone company service has been cable company service.

Here’s my latest saga.

Sprint finally decided to offer DSL in our area. Great, I thought. We had been using fixed wireless for a couple of years since it was the only thing better than dialup available out in the country. But it has a huge problem: it require line-of-sight to the remote antenna. We have some very big trees here. Despite the company saying that the most powerful antenna should penetrate them, and mounting it on top of our roof — giving it a good 40 feet off the ground — we couldn’t clear the trees. So in summer, our connection would be very unreliable, and slow when it did work.

So we signed up for DSL the very day it became available here. Sprint scheduled someone to come out to install a DSL splitter the next week.

Our DSL modem arrived by UPS the day before the installer showed up. But the first problem: I ordered a static IP but there was nothing telling me what my IP is. Sprint DSL tech support (the one bright light in all of this — almost all of those people have a clue, and are helpful and can actually fix problems!) gave me the info I needed.

The next day, Sprint’s installer showed up at about 3:30, and said she had to leave very soon to get the brakes on her truck worked on. Great.
Continue reading I Still Hate Phone Companies

Battle of the VMs

There are a lot of virtual machine interpreters out there. Java was the first well-known one, but VMs are also used for .NET, OCaml, Python, and the new Parrotcode VM will likely be used for Perl 6.

I started a discussion on the OCaml mailing list about some other bytecodes OCaml could target, with very interesting results. OCaml interpreters or compilers already exist for both Java and .NET.

There’s more to this than meets the eye, though. There are many different languages supported by .NET even though the .NET CLR does not lend itself to many of them very well. There are also a number of languages supported by the Java JVM, and Parrot is looking to support a good number, too. So it appears that no VM is going to promise the mythical language convergence .NET was talking about. Rather, we’re going to have too many choices. I wish we could standardize on a single VM and go with that.