Deals

Most people probably like to read the comics in the Sunday paper. I like to read the circulars. Every week there are good deals. But sometimes, there are great deals. And this week, there are several. (N.B. that most of these have rebates attached to them.)

  • $600 buys an HP Pavilion notebook with a dual-core AMD Turion processor, 120 GB hard drive, 14.1″ LCD (“Brightview Widescreen” no less), CD/DVD burner (with “LightScribe Direct Disk Labling”), a built-in webcam, Vista Home Premium, and, get this, 2 GIG of RAM. This is a monster of a machine, and $600 is just insane. [Office Depot]
  • What I think is three reams of (store-brand) recycled paper, $16.99. [Office Depot]
  • eMachines Athlon 3800, 1 GB RAM, 160 GB disk, dual-layer CD/DVD burner, Vista Home Premium. No monitor, but an all-in-one printer/scanner/copier. Not a spectacular machine, but $299.98. [Office Depot]
  • Refurbished HP all-in-one machine, with a card-reader and 2.4″ LCD. I’m not a huge fan of refurbished stuff, but $49.99. [Office Depot]
  • Store-brand 75-pack DVD-R and 25-pack CD-Rs, $7.99. [Office Depot]
  • 300-amp jump starter kit, $19.98 at Pep Boys. Or pay $49.98 for a combination jump-starter (rated at 450 amps) and an air compressor.
  • Lexmark X1240 all-in-one machine (printer + scanner + copier). $27 at Target. Why shouldn’t I buy this? (The fact that I don’t need one is not a valid answer.)
  • $37 at Target gets you your choice of a Uniden 5.8 GHz cordless phone system (two phones!) with answering machine, or a Philips DVD player. Both seem absurdly cheap.
  • 30-pack DVD+R or DVD-R, just $4.99 at CompUSA.
  • 500 GB external Seagate FreeAgent drive (USB 2.0), $117.99 at CompUSA.
  • Intel Q6600, the quad-core 2.4 GHz processor. $289.99. I swear these were $600-900 a month ago.
  • 7-inch LCD digital picture frame (no brand mentioned), $49.99 at CompUSA. At several hundred dollars these picture frames were pretty silly. At $50, it’s a potential gift.
  • An Iomega 1 TB external drive (based on size, it looks like it may be 500+500 or something), for $249.99 at CompUSA.
  • A pack of eight good ol’ Dixon #2 pencils, one cent at Staples. Limit 3 per customer. I stopped using pencils when I realized that I’d just scribble out mistakes instead of erasing them, but 3 cents for 24 pencils…
  • Brother QL-500ec [on Amazon] computer-based label printer, $64.99 at Staples.
  • $750 at Staples gets you a dual-core AMD Athlon 4200+, 2 GB RAM, 320 GB disk, 19″ HP LCD, DVD burner (LightScribe), built-in tuner [no word on HDTV?], 15-in-1 card reader, and Vista Home Premium.
  • $19.98 buys a 1GB Micro SD, xD, or Memory Stick Pro Duo memory card for your cameras. (Or Treos!) If you’d rather 1GB in SD or CF, it’s just $12.98. [Staples]
  • Also at Staples, $69.98 gets you an HP all-in-one machine (apparently not refurbished).
  • 10-ream (5,000 sheet) boxes of paper are $29.99 at Staples.
  • Amazon has this nice OBDII reader for $69.99. Most of our cars are pretty new so we don’t have a lot of problems, but I’m still tempted…
  • Amazon also has my shoes for $30, which is an absurdly good deal. Considering that I’m perfectly happy with them and was going to spend like $90 on a new pair of shoes, it seems silly not to buy them.

I think I’m off to go shopping…

How to Fix the Internet

Okay, so this won’t fix the Internet, but I think it’s high time that what I’m about to suggest is implemented. It’s not exactly a revolutionary idea that I just came up with. It’s what people have been talking about for a decade.

ISPs need to start blocking crap from originating on their network. The only reason, as best as I can tell, that they’ve done anything about spam is that they were getting ‘collateral damage’ when huge chunks of their networks were being listed as spam havens, causing legitimate e-mails to bounce and really irritating all their customers.

Let’s say that your computer gets infected by a virus that causes it to ping flood a given Internet site. What should happen?  I think there are three courses of action. The ISP can do nothing, which is easiest. That’s the status quo. The second option is that some simple firewall rules could detect that your IP was suddenly generating hundreds of ICMP packets a second, have the system automatically realize that something fishy was going on, and remove you from the Internet, perhaps redirecting all your traffic to page indicating what was going on and how to fix it. Or, third, and easiest of all, they could simply firewall off the ICMP attack you were trying.

A lot of the viruses/worms are super-easy to detect. They try to connect to hundreds of computers at once on an obscure port. That alone is something that no ‘real’ user is likely to do. But you can go even further, and have your firewalls do some Layer 7 inspection. (But ooh, that would cost money, and ISPs don’t like that!) They could look at the ‘payload’ of the data and see if it matched the ‘signatures’ of known viruses.

I’m not proposing that your ISP should have people monitor your every move with packet sniffers. I’m proposing that ISPs implement the equipment that would let it detect blatant abuse of the network, which consumes not only their resources but the resources of countless other networks, and stop letting crap go on. Imagine if, once Nimda was known in the wild, your ISP prevented any incoming attacks from reaching you. And that a few of their clients got infected anyway, but that when they tried to use a web browser, all they got was a message indicating that their computer was infected with a virus that was trying to spread with other computers, so they lost their Internet connection until they fixed it, and, oh, here’s instructions on exactly how to do it.

I suppose some customers would be angry. But I think, overall, it’d be worth inconveniencing a few people who couldn’t keep a clean computer anyway.

(Okay, so Nimda was a bad example since it spread so quickly. But it’s not like it was over and done with by the end of the day.)

It wouldn’t block everything. Really clever, malicious stuff would get through. Obscure stuff would get through. Brand new exploits would get through. But it’s just absurd how many attacks go on that everyone was already aware of, and it strikes me as even more absurd that ISPs seem like they couldn’t care less. If nothing else, it’d save them a lot of bandwidth.

Ubuntu

Okay, this post is just for those who say that driver support in Linux sucks.

Windows detected that I’d put in a new wireless adapter, but couldn’t find drivers for it. I probably could have found them online, but that’s kind of a catch 22.

I booted the Ubuntu Live CD, and am now posting via the network card Windows didn’t have drivers for.

An Image Idea

Some of my favorite posts are the ones with images. I like to sometimes post photos I take, and they can really make a post much better. (As an example, Kyle’s recent headphones post.)

There are some ‘risks’ with allowing images, though:

  • Offsite images can change. You might post a little picture you found somewhere, and have the image on that server be replaced by a 1600×1200 porn image. Or an advertisement. Etc. Not a big deal with the way people are using them now, really.
  • Offsite images can slow the page down. Lately I’ve been working on benchmarking the site a lot, trying to get pages to load quickly. I can’t optimize the load times of images that aren’t on my server, though.
  • Offsite images can be used for tracking. The remote site gets the IP, and lots of other information, of the visiting site. This is probably a non-issue here, but images can be, and are, used for tracking purposes all the time.
  • I can’t really ‘regulate’ images: You could post a dozen 1600×1200 images as uncompressed TIFFs, and there’s nothing I can do about it. (Well, I could, and would, edit your post…)

It just occurred to me, though, that I could theoretically write some code to work around these issues, such as by doing the following:

  • Get the text from the database to display. (This is, of course, what happens so far.)
  • Scan the text for image tags.
  • If an image tag is found, see if we have the image cached already:
    • If so, we just change the image tag to point to our local cache instead.
    • If not, the server can go and download the image into its cache.
      • It can then ‘process’ it as needed, such as scaling it down and making sure it’s not an animated GIF.

An even better extension of this idea would be to enclose the image tag in links to the full original. (Although this falls apart if the image is already linked.)

I guess there are a few issues (besides taking the time to implement it):

  • There may be legal issues, as I’m essentially saving and redisplaying someone else’s images. I don’t think this would really be a big deal.
  • The post-processing can’t look like crap. I have no idea what to expect.
  • It would raise the server’s bandwidth usage. If someone links to a bunch of images, the bandwidth comes from that server. When they’re hosted here, it’s my bandwidth. But since I’ve been coming about 999 GB short of hitting my 1,000 GB limit, this isn’t a big issue right now. (Also, half the goal is to reduce the size of the images, so the impact wouldn’t be as big.) In extreme cases, it would also increase resource usage: normally serving up a couple small images is peanuts, but if the site were to be hammered with traffic, it’d slow things down somewhat.
  • We need to somehow limit the size of the cache. This can be done simply, by just setting a limit on how large the cache can grow and deleting the oldest images when it exceeds that size. This isn’t a perfect solution, though; for example, it has the implicit assumption that newer images are more important to cache. This is probably accurate more often than not, but it’s not always the case. (Example: an old post with images is linked to from other sites, or comes up a lot in searches.)

A Day in the Life of a Geek

I got my hair cut today. And I found myself thinking the same thing I usually think: why on Earth do they have ten appointment books, one for each stylist? And why is there a separate one to track sales?

I think you could write a pretty simple software solution. They just need a few database tables, really: one for the clients, one for the stylists, and one for appointments, which can just be a time, client ID and stylist ID. Then it’s all just stuff like code to find an open appointment within certain constraints (“Hi, I wondered if I could book an appointment with Joyce, ideally on a Monday, Friday, or Saturday, and ideally after 1 p.m.”), and to make sure that scheduling conflicts didn’t come up.

Surprisingly, I’m having a hard time finding a simple package to do this. Most of what I’ve seen is either ridiculously crappy, or it only supports scheduling, but doesn’t integrate with a client database. There are some medical practice software suites out there, some of them even free, but they’re way too complex. I don’t think my hairdresser keeps my ‘haircut history’ (although that would be a novel idea!). I’m really not concerned with HIPAA: if someone finds out that I was calling the hairstylist and the reason for my visit was that my hair was kind of long, I don’t think anyone will think of me differently.

By computerizing it, you can also pull out information easily. For example, they could pull up a ‘report’ of everyone they need to call on a given day to confirm appointments, and keep track of whether they reached someone, etc. The code could also work on trying to see to it that people get a roughly equal number of clients for those who don’t request anyone in particular.

It’d also be easy to track sales of hair products. I bought a new thing of hair gel today, for example. One of the other stylists was selling it. It seems like they have one money bag. (Why not a cash drawer?!) They could just record that it was sold, and the system would take care of crediting the income to the appropriate stylist. At the end of the night, they could just pull up a report on how much money went to each stylist.

If you had an Internet connection, it’d be a great idea to put this all on the Web. Clients could then book appointments themselves, and get reminder e-mails, rather than having to call. You could even have a client-side application at the hairdresser’s office (do they call it an office?) that would sync up every few minutes (basic replication) every few minutes, so if they lost their connection, they wouldn’t be dead in the water. And then you can play with AJAX for some auto-complete magic. (For example, when I call to book and they ask my name, they might start to type my name in and have it come up as the only match before they’re even done typing.)

The problem is that I have a very strong urge to roll up my sleeves and start working on a nice package to do this. Except that it seems pretty ridiculous, given that I don’t work for a hairdresser? I suppose I could sell the code? But it sounds like an Access 101 project, really. I’d probably end up giving it away.

This, my friends, is what it’s like to be a geek.

Wine

So as most of you know, WINE is a utility to allow Windows applications to be run in Unix. There are several commercial forks, such as CrossOver Office and Cedega, which supposedly work better. It seems like most anything works.

Here is a list of Windows programs that are good enough that I still have Windows installed:

  • Photoshop CS2. (The only thing slicker is CS3.) It’s an industry standard and, as nice as GIMP might be, I know Photoshop well.
  • iTunes. I buy music through the iTMS periodically, probably about 60 songs total. It looks like there are Windows apps to convert them all to MP3, but really, iTunes is just a phenomenal music player, so I’d like to keep it.
  • Office 2007. Prior versions were decent, but OpenOffice gave them a run for their money. (With emphasis, really, on the money portion?) 2007, though, is just so slick that I’ll keep Windows around for it.
  • Quicken, maybe. I don’t use it a lot, but I should.
  • Battlefield 2. The one video game I’m not awful at. It’s also a game my friends/roommates play frequently, so I’m in good company when playing it.

Here is a list of the very few programs that don’t work in Crossover Office / Cedega / WINE:

  •  Photoshop CS(2). Photoshop 7 and previous versions apparently work fine. I don’t have older versions, I don’t think, and even if I did, CS2 added some features I really like.
  • iTunes 7. I guess something like iTunes 4 ran fine. (And companies market that their product runs iTunes, which is technically accurate but very, very misleading: it’s like saying you support Windows when all you support is Windows 3.1.) I find this one a little odd, as OS X, its native platform, is UNIX-based.
  • Office 2007. Everything up to Office 2003 apparently works flawlessly. Office 2007 doesn’t work at all.
  • BF2. It apparently kind of works, but the anti-cheat technology needs some work, because it detects that it’s not a ‘normal’ Windows environment. This is sort of a big deal, since triggering the anti-cheat technology results in getting banned. But it’s a moot point, because it looks like it only works with nvidia cards anyway.

Really, everything else I use in Windows has something that works just as good in Linux. (In fact, most of it runs natively? Firefox and gaim Pidgin are, by far, my two most-used programs, and they both are standard Ubuntu programs. Picasa might come in third, but they now have a Linux version of that, too.)

Conclusion: I’m keeping a Windows partition on the new drive. I still have work to do, but I’ve been very impressed with Ubuntu + XGL + Compiz on the desktop thus far, so I really wish I could run all my favorite apps in it natively. But, sadly, they don’t work on Linux, and they don’t work under Wine.

It’s Fiesty

Posted from a native install of Ubuntu’s Fiesty Fawn on my new 160 GB drive. I’ve left room to copy over the contents of the old drive (e.g., Windows), but I think Ubuntu’s going to become my primary OS.

I still have lots of work to do, but here are some starting thoughts:

  • The install is ludicrously easy. I ‘had’ to do the partitions by hand, but maybe that’s because it was a virgin unformatted hard drive…
  • It named the computer n1zyy-laptop, which I accepted without thinking much of it at the time. As it was beginning to install, it occurred to me that I’d never indicated that it was a laptop. It’s not surprising that it’s able to detect it’s running on a laptop, but it is surprising that it’s so well-integrated that it can use that information in places like setting a hostname. It’s the little things that count, IMHO, and I give them a lot of credit for this one.
  • Less than an hour ago, I had just installed the hard drive and inserted the Ubuntu CD. I’m now posting from a complete install, over wireless, having installed some third-party updates by hand and letting Ubuntu download 99 software updates. (They’re all installed, BTW.)
  • It took me a while to get wireless working, but it was mostly my fault.
    • It automatically detected my network card, and warned me that the only drivers available were proprietary ones, and that they couldn’t make any guarantees about their quality.
    • I clicked on “Network” and it was set for “Roaming mode,” which I unchecked. It looked like I had to manually input all my information, but it turns out that it showed a drop-down box and I was just oblivious to it. I gave it my WEP key and… Nothing.
    • DHCP doesn’t work. I don’t get it. It works fine on other computers, but it’s not like we have some unusual DHCP setup going on. I just used a manual configuration and all was well. It somehow got the DNS servers from our DHCP server anyway, but not an IP.
    • The default mouse speed is really, really fast. At least coming from Windows.

NTP Pool?

I’ve always had a strange obsession with the exact time. It really, really annoys me when clocks are off. Especially when you’re surrounded by clocks, some fast, some slow, so you end up with like a 20-minute window: the time is somewhere between 2:50 and 3:10.

Unsurprisingly, then, I love NTP. And I’ve always thought that the pool.ntp.org round-robin cluster was a neat idea.

And then I read something about how they’re always looking for people to add their servers to the pool. I have lots of spare bandwidth.

I think I might just have to get an NTP server up and running and see about joining. The resource load isn’t that much, apparently, and it’d be great to share the gift of correct time with the world.

(As an aside, there are no NTP Pool servers in Africa right now. It’s tempting to try to start one in a few weeks when I go…)

Ubuntu Server

I’m downloading Fiesty Fawn (the latest version of Ubuntu), to put on my laptop when my new hard drive comes. (UPS, where are you?!)

I just noticed, while on their site, Ubuntu Server. And I’m itching to play with it. I’m currently running Gentoo as my server, because I’ve come to the conclusion that, even though I’m not a professional sysadmin, I’m way, way smarter than RPM is, and way, way smarter than cPanel is. Gentoo isn’t the easiest-to-use, but the easy-to-use tools I’ve worked with aren’t 1/10th as effective as the difficult-to-use tools that I’ve learned.

Except for Ubuntu, which is “stupid easy” to use, yet works great. Even though I’ve got lots of experience maintaining Gentoo, both as a desktop and server, my ‘new’ laptop installations will run Ubuntu, not Gentoo. (Windows is sticking around too, though.)

So I’m itching to try Ubuntu Server. It looks like setting up a webserver consists of clicking a couple things, rather than emerge‘ing 10 packages, wading through all sorts of config files, and so forth. And yet it’s based on Debian, and comes with nothing running by default: did they just design an OS that was secure by default and easy to use?

Anyone here have any experience with it? Does it hold up well, or can my semi-well-tuned Gentoo machine run circles around it? I’ve come to equate “simple” with “mediocre,” but Ubuntu’s the first thing that’s made me reconsider. (Well, actually, Apple too, but that’s neither here nor there.)