my laptop purchasing history

Those of you who know me well, know I'm rather good at getting top of the line stuff (with regards to technology) for cheap.
I've been through my fair share of laptops over the last couple of years.
2 years ago I bought a Dell Inspiron e1505.

I paid about $1200 for it. It had an Intel Core Duo 2.0Ghz. with 2GB of RAM, and a 120GB HD. It had the highest res. screen (1680*1050) and the best wireless card. The specs were very high for the time. There were just two problems:
It had an ATI graphics card (which had/has very bad driver support in Linux) and it was quite bulky (15.4")

I decided I wanted a laptop that was smaller and had an nVidia graphics card. I also wanted a laptop with a pretty good graphics card, so I could also play games.
I ended up getting an Asus A8Jm. It was fantastic.

The chassis wasn't brilliant, and the screen wasn't that bright, but it was brilliant in every other regard. Unfortunately, It was a little more expensive (I paid $1350) and was not as high spec'd as the Dell. It had just 1GB of RAM, a 1.83 Core Duo with 'only' a 100GB hard drive. But, the best part was the graphics card. It had a 512MB nVidia GeForce 7600. Simply unheard of in laptops (especially in 14.1" laptops). Another benefit was the number of ports. It had 5 USB ports, both VGA and DVI out, IR, a card reader and the other normal stuff.
I was very happy with my purchase, and kept it for about a year. I was a little miffed that it wasn't 64bit compatible and I'd considered just buying a Core 2 Duo and replacing it, but Asus never released a BIOS update that enabled support for it.
I sold it, and borrowed an old Apple Powerbook G4 from work while I bought something to replace it.
As luck would have it, I couple of days after selling the Asus, I happened to be browsing a site that posted a bunch of coupon codes and employee-level pricing for IBM (Lenovo) Thinkpads. I was quite quick to the mark, and purchased one.
I, of course, purchased their top of the line model, the Thinkpad T61 (They do offer a T61P with a better video card, but not in the 14.1" widescreen like I wanted).
I'd wanted a Thinkpad for a while, but they were always more expensive than other comparably spec'd machines. This was my chance. They delayed my shipping, as they were in short supply of lots of parts. I got a free 6 cell battery for my suffering :)

It was equiped with the latest chipset from Intel: Santa Rosa, and Intel's new 4965 802.11 a/b/g/n wireless card. I got a slightly larger 160GB hard drive (which was the most available at the time) and 2GB of RAM again. It was just as good as I was hoping. The build quality was impeccable. The chassis was strong, and the keyboard was stiff. It was the perfect business machine.
Unfortunately, because Thinkpad's are aimed at businessmen, it didn't have a card reader, but that really didn't bother me.
I didn't have a desktop at the time, so I bought a dock for it. Also, linux support for Santa Rosa laptops was flakey, so I had to compile all sorts of stuff to get it working. (sound, wireless and 3d acceleration were broken out of the box)
In my haste to purchase the Thinkpad, I'd not realized the implications of only getting an extended battery. I figured I'd want great battery life, and didn't think the added bulk would bother me. It did.

Despite being fairly thin, the extended battery added bulk and weight.
Then, Black Friday came along and I bought all the parts to build myself a desktop.
As I posted before, here and here. Now I didn't really need my laptop to be my only machine, so I figured I should just get something smaller and lighter. The problem is, the smaller the laptop, usually the more expensive.
Before finding an alternative, I put up my Thinkpad for sale on Craigslist, and sold it (for more than i paid, as I'd bought it at employee pricing) and just used my desktop.
Not soon after, I spotted a deal for Dell's latest ultra portable laptop, their XPS (their gaming line) m1330.
I know, I know, I went from a Thinkpad to a Dell, but this Dell is actually manufactured by Samsung. The build quality is surprisingly good.

In all reality, this machine is the machine that people should buy instead of the ridiculously stupid and expensive Apple Macbook Air.
The Macbook Air weighs 3 lbs, which sounds amazing, BUT, Apple has made so many compromises that they should be ashamed of themselves.
How dare they show off for having a thinner laptop, when it has less of EVERYTHING.
It would be like Ford making a car with a 1 cylinder, 1 litre engine with a top speed of 20mph, and then boasting that it was the most fuel efficient care ever. WHO CARES. It's just not practical. Apple should feel dishonest for comparing their thin piece of junk to thicker, more capable laptops.
:)

Anyway, this Dell actually weighs in at under 4 lbs, and also has an LED screen.

So, lets get this straight. I paid under $1000 for it:
It has 4GB of RAM (compared to the Air's 2GB),
a 250GB 5400RPM hard drive (compared to the Air's 80GB, slower 4200RPM),
a dedicated nVidia GeForce 8400 M GS graphics card (compared to the Air's onboard X3100 piece of junk).
Port wise, it has 2 USB ports compared to the Air's 1
An Ethernet port (Air doesn't have one without an extra adaptor)
An HDMI video/audio out port
2 headphone ports (compared to the Air's 1)
Microphone port and, a DVD drive (yep, the Air doesn't have one - that's how it's so thin/light)
An SD/MS card reader (Air has nothing!)
It also has a 2.2Ghz Core2 Duo, compared to the Air's 1.6Ghz)

So, It's better in every respect, costs half the price, and actually has a DVD drive.
Unfortunately, Apple has so many people obsessed with their products that people will just buy them anyway. I'm just waiting for the time I walk into the library and see dozens of them owned by ignorant freshman!

I suppose for the average user, the more compelling reason is to use OS X, which is leaps and bounds beyond the disgrace that is Vista.
Since I run Linux anyway, there seems little point in paying the stupid Apple premium on hardware.

Digg this

1 comments

explanation of some optimizations done at compile time

I got a couple of complaints that recent posts have been aimed at techie people.
In my last post, I explained a little about gcc, which is the C compiler used in linux distributions (and some BSD)

I'll give some examples.
I mentioned that if you compile for your CPU, you can include SSE, which are special instruction sets that the CPU has to speed up certain processes. Here's a very basic explanation.

Imagine your CPU does the basic functions. It can add numbers together, subtract, multiply, divide etc..
But what does it do when you need to calculate the square root, or find prime numbers, or find the multiples of a certain number. generally, the compiler will convert such statements (from source code) into something the computer CAN do.
For example, there are many ways to calculate the square root of a number. Some involve doing lots of multiplies and divides, and take a long time. For this reason, if the CPU maker knows that a certain command is likely to be used frequently, they'll build an extra part on the CPU that basically has just that function, and does it extremely quickly.
So, in the case of square root, if Intel knew that certain programs used them all the time, they'd have a special square root instruction that would do square roots.

The problem is, since Microsoft has a monopoly on PCs, and they want Windows do work on old and new CPUs, they can't include any of these special instructions that would work on newer CPUs.

The end result, companies build their binary (the code that a computer runs) using very few optimizations, as that's the safest way, as it will be supported on more hardware.
Imagine Firefox only working on a Core 2 Duo CPU or above....
The benefit of compiling your own programs then, is that it can use all the new fancy things your new CPU has (and not the ones you don't).

Next comes Loop unrolling.
It is very common for computer programs to have loops.
Imagine you need to do something a certain number of times
The source code would look something like this.

for(i=0;i<=10;i++)
{
doSomething();
}

So, you have your current position in the loop declared and instantiated as '0' and you increase by '1' until you reach '10'

This program will run the function 'doSomething()' 10 times
You start out with i=0. you then check that it's equal to or less than 10, increment it, and run the function. You then start over (i will equal 2 on the 2nd loop, and so on). This happens until you check the value of i, and it's greater than 10 (then it will quit out of the loop, and continue after that).

A quicker way of doing this would be to just write it all out.
Obviously in certain situations (like when you're asking for user input) you don't know how many times you want to do something, but in this case, it's a predetermined 10 times.
So, why not write it out like this

doSomething();
doSomething();
doSomething();
doSomething();
doSomething();
doSomething();
doSomething();
doSomething();
doSomething();
doSomething();

They're both do the exact same thing. The latter is optimized for speed, and the former is optimized for filesize.

This should explain the previous post about compiling firefox.

Digg this

0 comments

can firefox be improved just by recompiling ?

I took an Engineering class a year ago that was all about compilers and Computer Architecture.
Using GCC, (which used to stand for GNU C Compiler, but now stands for GNU Compiler Collection, as it does more than just compile C) a C compiler, you're able to do much more than merely compile.
The most interesting for me, is the optimizations.
When GCC Compiles a C program, depending on the settings you choose, you can optimize for the end binary file size, or for speed. Surprisingly, Mozilla have optimized for size. I don't see why you'd care if you firefox executable was 5MB or 10MB, but apparently, they do.
Mozilla uses "gcc -O"
I chose to use "gcc -O3" and the speed improvements are quite obvious.
From a compiler perspective, speed optimizations include loop unrolling, as well as architecture specific SSE's (among other things).
I wasn't the first one to think of this, however.
If you're running Windows Linux, you can download Swiftfox and those guys have done it for you. You just download the executable based on your CPU. They have versions optimized for AMD, Intel etc..
Also available is swiftweasel
For those who don't know the difference, despite being open source, firefox uses copyrighted images. Since certain linux distributions are against including anything that is not completely open and free some of them -namely debian, recompile the firefox source code, using only free artwork, and rename it iceweasel. So, on linux, you combine both situations. The free artwork, and the speed optimizations, giving you swiftfox.

I'm currently running Firefox 3.0 beta2, and the improvement is quite substantial, and I've yet to have it crash despite it being 'beta.'
I'd recommend anyone using firefox try out one of the aforementioned optimized builds

Digg this

2 comments

A guide to help geeks punch

I came across this article that was explaining how to win a fist fight (seems like it was aimed at geeks.
Anyway, it showed 3 pictures that should help you form the correct fist.
I thought it was funny enough to repost.

Isn't it hilarious?
I especially like the middle one.

Digg this

0 comments

Bill Gates admits Vista sucks

watch the 10 second clip here
I must say, as much as I hate most microsoft things (except Office), I do like Bill Gates.
It's a shame Steve Ballmer will be taking over.
In the video, he's asked what product in the last 5 years did not receive enough polish (bug fixing).
He very openly replied "Ask me when we launch our next OS, and I'll be more inclined to give you a blunt answer."

He's not only admitting that Vista sucked, but he's also saying that he's not allowed to officially admit their mistake until they have a replacement.
priceless :)

So, if they keep saying Vista is great, and then the very second that they release the next version (currently codenamed Windows 7), they say Vista sucked, what should that do for our trust of Microsoft?

Digg this

3 comments

review of Google's Mobile OS: Android

Unless you've been living under a rock, or perhaps, aren't interested in new and cool technologies, you must have heard of the iPhone.
The iPhone is a fantastic piece of technology, that goes FAR beyond microsoft's very slowly improving Windows Mobile OS.
The iPhone hardware is fantastic, and the software is running a Darwin 9 kernel (same as Leopard). The biggest problem is that Apple has become very greedy.
They make AT+T pay them 10% of every iPhone users' bill.
They also have been extremely against anyone customizing, or modifying the interface, or adding apps. Quite ridiculous, when you consider the fact that most of the people who are willing to blow that much money on a tech device want to fiddle with it.
The other problem is that the iPhone is tied down to AT+T, which has a pathetic 3G network (and the iPhone runs on the ancient EDGE network).
In comes Google with its mobile Operating System: Android.
Here's the home screen.

Android has been in the works for at least 2 1/2 years, and runs on the latest 2.6.23 linux kernel.
proof can be seen in the screenshot, where I'm running an emulator, and accessing the Android shell through my terminal.
Also, it uses the open source webkit rendering engine. (same as used by Safari). I've already discussed webkit's origins from Linux's KDE KHTML here Layout Engine


The SDK (Software Development Kit) is pretty good. It lacks some documentation, but has lots of good examples. The fact that it runs linux also helps for those of us who prefer that platform for coding on anyway.
It seems to be almost a blend of the iPhone and Windows Mobile.
The Today Screen is like WM, yet the core aim of the project is more like that of the iPhone.
It has a good contacts list.

It's not fancy with the graphics, but it's perfectly functional, unlike WM, that still requires either an accurately aimed stylus, or a separate application such as PocketCM.
It also, obviously has google Maps, and an email client.

Overall, I think my predictions should be obvious.
It will be an iPhone for the masses.
If you like the iPhone, but are a cheap-skate,
If you like the iPhone but you hate AT+T,
If you like the iPhone, but you hate Apple's greedy/proprietary-ness,
If you love all things Google,
If you love Linux/Open Source stuff,
Then android is for you.

Despite Steve Ballmer, and his useless counter arguments (like actually daring to defend Vista), there is no stopping Google, or Android.
I'm sure by 2009 all the tech guys will be running around with Android. (I personally will have one in mid-2008)
Best thing is, I'll only have to upgrade my phone if I want better hardware. All the software updates will be free, and I'll be able to program my own stuff too, in Java......

Digg this

0 comments

Review of Brasero 0.70: gnome burning software

Built on GTK+ 2, the burning program Brasero is now part of the GNOME project.
Upon opening, it gives you a great, unbloated (cough, cough Nero) menu

It easily lets you see past projects, to quickly let you re-burn them.
The program is split into 4 parts.
Audio Project, Data Project, Disc Copy, Burn Image. No junk, and no fluff like PC burning software.
An old version is included in Gutsy, as 0.70 came out last week. It is already available if you are running Hardy (Ubuntu 8.04 LTS)
The easiest way to get it is to just download the source and compile
as usual.
It saves problems if you get the dependencies.
sudo apt-get build-dep brasero
then you just browse to the DIR and do the usual
./configure
make
sudo make install

Just make sure to remove the old version of brasero if you installed it (sudo apt-get remove brasero)

For too long people have recommended using the qt based burning program k3b. Finally now, with latest update do we get a program that does everything most people will need in a clean, efficient program with no bloat. k3b still does extra stuff, but the interface is much more cluttered. All I need is a basic program with an attractive interface.

Now, with 0.70 the windows when you transition between windows everything is readable, and the windows aren't too small.
This is similar to the program I used to like when I used to use windows, CopyToDVD (also a great, efficient burning program)
I'd consider it a must have for anyone running a GNOME desktop.


It even lets you preview sound/video files before you burn them.

Digg this

0 comments

A quick music lesson on chords

Knowing that basic chord structure seems a mystery to most, I thought I'd post about it, though just in basic form.

Often when I post music I've written, or a famous song that I've arranged I get people asking about chords.
Here are the basics

All examples will assume the key of C.
C Major is C E G in its first inversion (2nd inversion is E G B, and 3rd is G C E)
To make that chord minor, you just flatten the third, so C Eb G (where 'Eb' means E flat)
To make diminished, you flatten both the third and fifth, so C Eb Gb.
To make the chord augmented, you sharpen the fifth C E G#.
a C7 always implies a dominant 7th, C E G Bb
Cm7 would be the same, but with E being flattened.
a CMaj7 is C E G B
Another tricky one is Csus (C suspended) which usually means to include the perfect fourth, and sometimes the major second, so you'd play the C chord, including the F. Problem is, The F is next to both the third, and the fifth, so it can make it sound odd.

That's really all there is to it. Those are the chords that most pieces require you to know.

Also, and less important, each of the notes of the scale have specific names
in order
1. tonic (often incorrectly called the root). Root is for the chord, tonic for the scale.
2. supertonic
3. mediant
4. subdominant
5. dominant
6. submediant
7. subtonic (or leading)

These are all relative to the key that you're in. So in the key of C, C is the tonic, D is the supertonic and so on.
Some of the names should be obvious. The 'super' and 'sub' are one above and one below.
Tonic means first note in the scale.
Mediant is a third above the tonic (and middle note of the major triad in first inversion)
submediant is a third below the tonic (and middle note of the major triad in second inversion)
Dominant (creates the dominant chord)

Digg this

0 comments

how to fix an annoying firefox bug

I know a lot of people who would notice firefox bugs, but, as they aren't coders, don't do anything about it.
There is another way. The beauty of firefox's 'about:config'
Think of it as a windows registry. You can enable/disable and modify many of the browsers features without coding or compiling.

I was having a pretty annoying bug in firefox.
When my mouse in in the bottom left hand of the the screen, a right click would switch page direction. REALLY ANNOYING.
I'm not sure the cause. when you right click, the last option is 'switch page direction,' and it seems to get selected by just right clicking when your cursor is in the bottom right corner.

so, to fix this:



Type "about:config" into the address bar.
In the "Filter:" text box, type "bidi"
double click on the first entry (should be "bidi.browser.ui")
This should change the value to 'false'
the restart firefox, and that option will no longer be available!
It's just an option for right-to-left languages anyway, which most won't need.

There are lots of things you can fix in about:config.
The best thing is, if you screw something up, just delete your profile, and create a new one (although it's probably best to just make a backup of your profile first, as your profile may have useful bookmarks etc..)

While I'm at it, I'll share another cool tip.
Remember how the older versions of firefox had just one close tab button?
I happened to prefer this, rather than separate close buttons on each tab.
to change this
filter:browser.tabs.closeButtons
value 1=default
value 2=no close buttons (funny, as you can close tabs with CTRL-W, and this will confuse people)
value 3=old firefox style.

remove the 'go' button that no one uses anyway
filter:browser.urlbar.hideGoButton
set to true.

Digg this

0 comments