Much has already been said about the fact that Microsoft’s shiny “new” search engine, Bing.com, happens to have a little bias. I think I just discovered a new example of this bias. Try finding the Monkey Boy video on both Google and Bing, and see which one’s auto-complete is the most helpful.
Bing’s Ballmer Bias (in search of monkey boy)
Fighting Juno’s address book lock-in with Python
This week I helped a friend with an OS re-install (XP unfortunately). He used Juno for his email service, which refused to work properly when re-installed. I helped him switch to Gmail, but it turns out that Juno refused to implement an export feature for their contacts. After a little hunting around, I discovered the text file the software used to store contacts, somewhere in it’s Program Files folder. What follows is a quick bit of code I wrote to convert the contacts into a CSV file. Hopefully it will be useful to someone else in their efforts to fight lock-in.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | #!/usr/bin/python # import libraries import csv class entry(): """A simple data structure for each contact.""" Name = '' Phone = '' Birthday = '' Address = '' class contacts(): """This class will contain pure input from the Juno contacts file.""" def __init__(self, input): # Open the input file readFile = open(input, 'r') # Put the header into list header = entry() header.Name = "Name" header.Email = 'Email' header.Phone = "Phone Number" header.Address = "Address" self.list = [header] # Put the input file into a list and close file self.rawContent = readFile.readlines() readFile.close() def parse(self): """Parse everything and put it in the list""" count = 0 while(count < = len(self.rawContent) -1): person = entry() count += 1 # Skips over the field specifying the contact as an entry # Get email address item = self.rawContent[count][6:-2] if (item == ''): person.Email = '' else: person.Email = item count += 1 # Throw alias into bit-bucket count += 1 # Get first and last name item = self.rawContent[count][5:-2] if (item == ''): person.Name = '' else: person.Name = item count += 1 # Get the phone number item = self.rawContent[count][14:-2] if (item == ''): person.Phone = '' else: person.Phone = item count += 1 # Throw birthday into bit-bucket count += 1 # Get the address item = self.rawContent[count][8:-2] if (item == ''): person.Address = '' else: person.Address = item # incriment count by four to get to the beginning of next entry count += 4 # add person to the list self.list += [person] def output(self): """Make a CSV file""" # Set up the output file outFile = open('output.txt', 'w') output = csv.writer(outFile, delimiter=',') # Iterate through self.list and write stuff for person in self.list: output.writerow([person.Name, person.Email, person.Phone, person.Address]) # Close the file outFile.close() |
SHA1 is epic fail (aka new keys)
I seem to have the worst of luck, in that shortly after I created new GPG keys and published them, someone found a new attack on the SHA1 hash algorithm. This attack is such that someone could probably pull it off if they had the financial resources of a government or large organization. Therefore, I’ve made a new key, 4096 RSA. The key is on the public internets, and is signed by my old key. I will be keeping my old key active until my purchase of 250 business cards runs out, at which point that key will expire. Please make sure to send all emails with my new key.
Also, it is a good idea to use better hash algorithms than SHA1. To do this automatically, simply put the following lines at the end of your .gnupg/gpg.conf file:
personal-digest-preferences SHA256
cert-digest-algo SHA256
Old key fingerprint: E1F6 ADF3 88B4 E5C4 E3B1
New key fingerprint: 37F9 E685 576A CFD3 B08C
P.S.
I had planned on having an inline signature with this blog post, but GPG and/or WordPress and/or Firefox and FireGPG have foiled my plans. Click here to see a text document containing this post plus valid signatures from my old new key and my new new key.
Does High Price Attract Mac Users?
I was on the #ubuntu-us-fl IRC channel recently, when one of my fellow geeks put forward an interesting theory: People are attracted to Apple products by a high price. The theory assumes that in our society people usually equate price with quality, and not always accurately. Today I decided to do a little price comparison. I gladly admit that I have a bias towards the Linux operating system, specifically the Ubuntu distribution. However, in this post I will try to let hopefully unbiased numbers speak for themselves, with the exception of my summary at the end.
Below I have the configurations and prices for four machines: an Apple Mac Pro, a Dell XPS 630, The Wild Dog performance desktop from System76, and finally a custom built machine with parts from Newegg (thanks to excid3 for the build specs). Though the machines are from four different OEMs (aka companies that build computers), I configured each to be as close as possible in specifications and performance.
Apple Mac Pro, $2,849.00
- Processor: One 2.66GHz Quad-Core Intel Xeon
- RAM: 8GB (4×2GB)
- Hard drive: 1TB 7200-rpm Serial ATA 3Gb
- Graphics card: NVIDIA GeForce GT 120 512MB
- DVD burner: One 18x SuperDrive
Dell XPS 630, $1,679
- Processor: Intel® Core™2 Q9550 (12MB,2.83GHz, 1333FSB) (Also a quad core)
- RAM: 8GB Dual Channel DDR2 SDRAM at 800MHz (4 DIMM)
- Hard drive: 1TB Performance RAID 0 (2 x 500GB SATA 3Gb/s 7200 RPM HDDs)
- Graphics card: SLi, Dual nVidia GeForce 9800GT 512MB
- DVD burner: 16X CD/DVD burner (DVD+/-RW) w/double layer write capability
System76 Wild Dog Performance Desktop, $1,089.00
- Processor: Quad Core Q6600 2.40 GHz FSB 1066 MHz L2 8 MB
- RAM: 8 GB – 4 x 2 GB – DDR3 – 1333 MHz
- Hard Drive: 1 TB SATA II 300Mbps – 7200 rpm 32 MB Buffer
- Graphics card: 512 MB ATI Radeon 4550 PCI-Express x16 GDDR3 (DVI, VGA, S-Video, DVI to HDMI, DVI to VGA)
- DVD burner: CD-RW / DVD-RW
Custom built machine, $608.90
Note: If you wanted Windows Vista on this machine (not recommended), just add $179.99 to the price. Also, the links to all the parts are listed below, seeing as there is a lot more customization that goes into a custom build.
- AMD Phenom 9600 Agena 2.3GHz Socket AM2+ 95W Quad-Core Processor Model HD960ZWCGDBOX – Retail
- Kingston HyperX 2GB 240-Pin DDR2 SDRAM DDR2 1066 Desktop Memory Model KHX8500D2/2G – Retail (x4)
- Antec earthwatts EA500 500W Continuous Power ATX12V v2.0 SLI Certified CrossFire Ready 80 PLUS Certified Active PFC Power … – Retail
- ASUS M4N78 Pro AM3/AM2+/AM2 NVIDIA GeForce 8300 HDMI ATX AMD Motherboard – Retail
- Western Digital Caviar Black WD1001FALS 1TB 7200 RPM SATA 3.0Gb/s 3.5″ Hard Drive – OEM
- NZXT HUSH Black SECC Steel/ Aluminum/ Plastic ATX Mid Tower Computer Case – Retail
- PLEXTOR 20X DVD Super Multi Qflix Drive Black SATA Model PX-806SA SW – Retail
Biased Summary
I’ll start off with the most obvious and least controversial conclusion: you’d be crazy not to get a custom built machine. Due to the geeky tendencies of this blog, most people reading this are likely to be fellow geeks. Any geek worth their weight in old CRT monitors can put that machine together. If however you are not a geek, surely you know someone who is. For $200 and a few hours to play with all the shiny parts, any geek would be glad to put this machine together for you, and you’d still be saving a huge amount of money.
Now for the slightly more controversial conclusions. I believe that a higher price does play a role in a person’s decision to buy a Mac. It is certainly not the only factor, since as far as OEM equipment goes, Apple is fairly nice. I agree that Apple has some very high quality hardware. However, the hardware in each of these machines is very similar, and all high quality, and yet the Apple machine is $1,170 more expensive than the second most expensive and yet very similar machine. You could even get any one of these machines and put OSX on it yourself if Apple would let you (or you felt like using The Pirate Bay).
Given the fact that all four machines are very similar, lets assume for a moment that the custom built machine represents the price each manufacturer pays to build their computer (not quite accurate, as the OEM’s save money by buying parts in bulk). This would mean that what you are really buying from an OEM is the convenience of having someone else put a computer together for you. That convenience costs you $2,240 if Apple builds it and $1,070 if Dell builds it. The lowest OEM service price is from System76, at $480, which is just over twice my recommended build price from the friendly neighborhood geek.
My numbers are certianly not perfect, especially since it is impossible to get an exactly identical machine from two OEMs. However, even after doing tweaking for any innacuracies in my calculations or configurations, I think your findings will be the same: all OEMs are expensive, but Apple is by far the most expensive.
New Web Host
This afternoon I took the plunge and transfered my website from BlueHost to Webfaction. There are two main reasons for this switch. First of all, I’ve been learning website programming with Python and the Django framework. My previous host does not support Django, and it seems Webfaction is the most popular host among Django geeks. Also, BlueHost does seem to oversell a litle too much, while I’ve heard good things about Webfaction in that regard. There is one good thing that I’ll say about Bluehost though, which is that their tech support is friendly and very fast.
This afternoon I purchased my Webfaction account, then made a dump of my MySql DB for Wordpress, created a tarball of the Wordpress site files, then downloaded both to my laptop. Webfaction supports full shell/SSH goodness, so I then SCP’d both files to the server. I had a bit of trouble with importing my MySql dump into a new database, so within minutes of submitting a support ticket, I recieved a responce containing two SED lines to fix the problem. A few minutes latter I was up and running.
30 minutes ago I pointed my domain name to the new servers, and I am waiting for the settings to propagate to DNS servers world wide. Meanwhile, Webfaction does not provide DNS hosting, so I purchased a Network Solutions account, and am waiting for crashsystems.net to transfer there. Once that happens, I’ll finally be able to create my own bloody cname records (DNS tunnel FTW!).
