One reason I hate iTunes.

I’ve always hated iTunes. It’s a huge pile of bloatware and it’s slow as poo. It’s like 100 mb or more for an mp3 player. I remember winamp playing mp3s when it was a 500k download. Anyway.

I keep all my music on a Linux machine running samba. This way it’s available to every machine in the house. When I had Winamp on all my machines this was wonderful. But now that I’m forced into iTunes (thanks to having an iPhone), it turns out to be a major pain. In iTunes I unchecked the box for “let iTunes keep my libary organized” to prevent it from copying the entire library to each computer’s local disk. Initially adding my library of ~4000 tracks to iTunes takes over an hour (100 mbit wire) – it would take about 5 minutes in Winamp, even reading the ID3 tags for each track as it was added (rather than lazily as the song was played).

But the thing that iTunes does that is so annoying it prompted me to write this whiny rant is:

iTunes "Song Not Found"
iTunes 'Song Not Found'

If, for some reason, my M: drive (where the Samba share is mapped) is not connected when iTunes starts, every song in the library gets this “!” exclamation point of doom. If I attempt to play any of these tracks, I am given the option to locate the file. Nice in theory, but locating all 4000 tracks isn’t realistic. If I quit iTunes, reconnect the M: drive, and reopen iTunes, the ! persists. The only solution I’ve found to this is deleting the entire library from iTunes and re-adding it, which as I said, takes an extremely long time.

I have other reasons for hating iTunes, this is a blog, not a book.

A less insidious way to use Facebook?

I deactivated my Facebook account a couple of months ago. I just kind of got tired of seeing silly updates from friends and “friends” – people I’d friended but wasn’t really friends with. I was also frustrated by the privacy implications of using such a service: you tell it about yourself, you tell it about who you know and how you know them, you keep adding more information about you and your friends to its huge brain that it’s free to use or abuse however it wants.

I don’t know if I’m anti-“Social” or just antisocial but most of the info streaming into my Facebook feed was just not interesting to me. I could have hidden those people, but then it seemed like it would make more sense simply to remove the connection to them, if I didn’t want to see their updates. I actually went through my list of connections and started removing people – people I knew from high school and hadn’t spoke to since then until they added me on Facebook, and then continued not talking to them, and other people who I knew but didn’t really interact with, online or offline. I didn’t really care about what they had to say and it occurred to me that they didn’t care what I had to say. Why did we friend even each other in the first place? Well, the friend suggester (suggestor?) makes it easy to friend people who are only tangentially related, since its whole purpose is to find new people for you to add.

I remember there was one person from school whom I hadn’t spoken to since probably 4th grade. This person attempted to friend me 5 times on FB (Soandso wants to be your friend…) and each time I clicked “Ignore,” but on the 6th time I finally relented. After 2 weeks of inane updates I unfriended the person. Within a month I was getting requests to refriend. Why? I don’t know you, you don’t know me, what’s to be gained by us pretending to be e-friends?

So I had some fundamental problems with Facebook. In addition to the friending of barely-friends, the feeding of so much information into the Facebook brain was starting to bother me. This is pretty similar to my worries about Google’s reach; basically every bit of information you post to Facebook to share with “friends” is also being added to Facebook’s marketing profile about you and your friends. The more you use the service, the more they know about you. And all those “Like” buttons all over the internet – a way for you to inform your Facebook friends that you like a blog post or news story – those are just a way for Facebook to know what sites you’re visiting. Whether you click the “like” button or not, your browser is loading the button of their servers, which means Facebook is reading your cookie and knows that YOU visited the page. This annoyed me so much that I edited my /etc/hosts file to redirect to (my own computer) where I’m running Apache, so the Like buttons just render as 404 errors now:

But I’m fine with that. I’ve also set my browser to reject all cookies from * I realize this is just a drop in the ocean of data for Facebook, but screw them. Even with my account disabled they were collecting data about me, and that just pissed me off. But much like Google, Facebook’s tracking ability transcends browsers and computers, since in order to use their service you need to log in, and thus your movements around the internet can be tracked regardless of which computer or device you’re using.

Facebook wasn’t a completely worthless service for me. I found the photo album feature very useful. It was a great way to upload pictures and share them instantly with whomever wanted to see them. In my case this was usually my family plus a few friends. I doubt anything will top Facebook for this because these people are already on Facebook, and for something to come along that’s better at this than Facebook, these people would need to move to the new platform, which as of today doesn’t seem likely.

Photo sharing is the one thing I miss. I haven’t stopped taking pictures but it’s a much clumsier process now to share them with people. I put them in an album in Picasa, upload it to PicasaWeb, set the permissions on the album, send out the invitations. The recipients then have to click on a private link to get to the pictures, and if they want to see them again in the future, they need to dig through their inbox to find the link and click on it again. Not everybody uses Gmail, and even for those who do, this is just a clunky process. With Facebook albums, if the album is shared with someone, all they have to do is click on me and then click on my list of albums to see the pictures. Easy. I’m considering returning to Facebook just to get the photo album back.

So I was thinking that if I could restrict myself to using only the Facebook iPhone app, I’d still be able to take the occasional picture with the phone, upload it for people to see, and not fall prey to the tracking cookie problems I described above, since (I’m assuming) the Facebook app and Safari don’t share data. At least, not yet.

That idea prompted me to write this post in the first place, but as I’ve been writing it it occurred to me that it’s not really a workable plan. If I’m using it I’ll eventually feel the need to login via browser, meaning I’ll have to tear down all the walls I’ve erected – the hosts file entry, the cookie blocking – and I’ll be right back where I was, feeding them all my info and letting them track me everywhere I go. So I guess it’s going to come down to a question of whether or not the costs outweigh the benefits, as it always does.

Unless I can just write a browser plugin to strip the “Like” button from non-Facebook websites. Maybe AdBlock can do this. Hmm… The dog woke me up early today and everyone else is asleep still, and this all sounded a lot better in my head before I started writing it down.

Vonage iPhone App Calls Facebook Friends Free, So What?

Lots of outlets seem to have picked up the story about the new Vonage iPhone app that lets you call your Facebook friends free. I don’t understand why this is even newsworthy. There are a bunch of free VOIP apps for iPhone already, with Skype being the one that comes to mind first. But a couple of other things have me scratching my head about this story:

  • AT&T doesn’t offer the unlimited data plan for iPhone anymore, so this “free” call could end up being pretty expensive over 3G.
  • If you’re making a call to another friend with the iPhone app, then your friend probably has an iPhone. They’re also probably also on AT&T, so a regular voice call to them would be free anyway. So just call them?

This might make more sense to me if your friend is outside the US, or they come out with a similar app for other platforms, but even then… so what? Free VOIP calls aren’t new. Is it just the Facebook tie-in? I don’t get the buzz. Maybe it’s because I have 5,000 rollover minutes with AT&T.

Linksys WAP54G died after 10 months.

I bought my first wireless access point a few years ago – a Linksys WAP54G (v 1.0). It lasted 2-3 years. When it died I bought another WAP54G – version 3.1. This one just died tonight. I was sitting here and I noticed that the wireless was down. I moved the plug to another outlet and it came back up for about 20 minutes. It’s now completely dead. I bought this one on 12/3/08 from Amazon and it died on 9/28/09. What a piece of crap. Guess I’m done with Linksys now. For $65 it should last longer than 10 months.

Evan's Semi-complete Aimster Saga

The following was written by me in my Slashdot journal on September 02, 2001. I have not edited it since then except for formatting.

This is long and rambling and will likely have parts that make no sense. I just finished writing it at 5:33 am right now Sunday morning, so that is my excuse. What’s yours?

In September 2000 I was gearing up to return to Dartmouth College in New Hampshire to begin my senior year. To say I wasn’t looking forward to it would be an understatement. I had two courses left in my Computer Science major: Theory of Computation and the “culminating experience,” a course that I guess takes the place of a senior thesis. The most theoretical aspects of Computer Science have never interested me, and since I know that I will never have a use for the vast majority of them. To graduate I still needed to take 8 more classes and none of the offerings were terribly appealing. For the fall term I enrolled in Theory of computation, an econ class, and a government class (the standard courseload is 3 classes). I wasn’t terribly thrilled with any of my classes.

At the beginning of October, a friend of mine who was attending RPI told me that there was an opening at Aimster for a Mac developer. The first version of Aimster’s client had recently been released and was met with tons of press. My friend talked to his boss, John Deep, and John was interested in meeting with me. So one day I drove to Albany and met with John and the rest of the Aimster crew. Aimster seemed like a great idea to me. Share files just like Napster, but only with the people on your AIM buddy list. Combine two of the day’s hottest applications and be useful at the same time. Seemed like a brilliant idea to me. I spent the night in my friend’s basement and the next day met with John who offered me the job. He told me what was offering, which included salary, a new Powerbook, health insurance, and stock options. The salary was generous, but less than six figures. I had recently read that the average salary for computer science graduates was about $46,000, and the offer was enough that I decided to give it a go.

I’ll leave out the battle that ensued with my mother. Suffice it to say that she wasn’t thrilled with my decision to drop out of an Ivy League school for no apparent reason.

I asked John for some kind of a contract. After all, I was taking a huge step by quitting school and it seemed that my mother would never speak to me again. I needed some kind of assurance that he wasn’t just making this all up. He was reluctant to do this. He said “That’s not the way I operate, you’re going to have to trust me.” I explained that I needed something, I couldn’t risk my whole future on his word alone. He said I should write up a contract and forward it to his secretary. I did, including the points John and I had agreed on. She wrote back saying that he said that looked fine. He would sign it when I arrived in Albany.

I did all the paperwork at school and withdrew from the college. I can go back at pretty much any time by filling out a 1 page form explaining why I was gone and what I did. I spent several weeks living in my friend’s basement until I got an apartment that would take me, my girlfriend, and our two dogs.

I get to Aimster and wanted to get my Powerbook as soon as possible. I should mention that I did not own a Macintosh, having sold my powerbook 4 months before in favor of an Athlon system. John said we’d go to CompUSA and get one. The day we were supposed to go, he never showed up. He put it off for several days and then one day said “Why don’t you just use the G4 in the office for now?” At this point I suspected something was up. Pretty much everybody else at Aimster had gotten brand new Sony VAIO laptops. At least 8 of them at ~$2600 each.

At the time, there were two other Mac developers. One (call him Mr. A) had been an RPI student who had taken time off to work for Aimster, and the other (call him Mr. B) was… well, I never really knew anything about his background. Let’s just say he wanted to write Aimster in AppleScript.

My own background in programming was pretty limited. Pretty much all my C++ experience was from class. I had experience with CodeWarrior but not with developing GUI apps. I had 2 or 3 classes that used codewarrior for development, and the rest were using gcc on Linux. I knew data structures, algorithms, STL, all that stuff, but only really in a class setting. And as I said, I’d never developed a GUI app before.

When I started going to the Aimster office, the first topic we discussed was what programming environment to use. Mr B wanted to use RealBasic, which was pretty simple to use and was basically Visual Basic for Mac, and Mr A said that real basic was too weak and we should use CodeWarrior. I played around with Real Basic and it was incredibly easy to use. I had a whole gui laid out in less than a day. However, Real Basic’s limitations showed themselves pretty quickly, mostly with regard to networking and threading.

Things were not going well. Around Christmas 2000 the “Mac team” and John had a meeting where we told him we had decided not to use Real Basic. It was simply too weak for our purposes. And since the Windows client was written in C++, developing in Real Basic would have made portability extremely difficult. There are ways to incorporate C code into Real Basic apps, but it’s a real pain. Anyway, John freaked out at this and said that if we couldn’t do it in Real Basic then we had to cancel the Mac version. This was something he had hinted at a few times so it wasn’t entirely a surprise. Every time I had asked him about my supposed Powerbook, he’d said “well, we don’t know if there’s going to be a mac version or not, so let’s hold off,” which I didn’t find especially reassuring. Anyway, we managed to convince him that we could do it in Codewarrior, though I’m sure he still didn’t believe us. And I can’t really say that I blame him, since things were really not going well. However, the computer I was working on was a piece of garbage. It would give random linker errors, wouldn’t even compile Metrowerks’s own sample code (nor Apple’s), crashed randomly, and when code did compile, the debugger didn’t work at all, so I couldn’t step through anything, making debugging a complete crapshoot. At least on Linux/windows you can write output to cerr so you know what the hell is going on. I resorted to putting ::SysBeep(30); calls throughout the program. If it beeped once, I knew it got to point X in the app. If it beeped twice, I knew it got to point Y, etc. It was absolutely awful. I wanted to format the hard drive but they did not have the CD. I borrowed Mr A’s powerbook CD and did a clean install (which for non-Mac users replaces all of the System files and leaves mostly everything else intact) and reinstalled codewarrior. This helped quite a bit, as I could now use the debugger, but the computer still crashed randomly and frequently. One day it crashed 37 times in 6 hours. I counted. I tried formatting the computer with mr A’s powerbook CD but it didn’t work for one reason or another. So I was somewhat better off than I had started.

Then Aimster’s office moved. I took this opportunity to take the G4 home with me since I was getting very little work done at the office. This was a bad move as I got even less done at home. One problem I had with this project was that there is very little, very poor documentation for CodeWarrior. The documentation that comes with codewarrior is not helpful at all and little else exists. The only printed material I found on the topic was from circa 1992.

For about a month I was held up on the problem of creating tables. If you’ve ever used a Mac, I wanted to create tables like the Finder’s list view, in which the search results would be displayed. This seemed to be something nobody ever wanted to do. Macster, the Mac Napster client (which has since been purchased by Napster and been renamed “Napster for Mac”), had beautiful tables for search results, and I wanted something very similar to that. However, I didn’t know whom to ask or even what exactly to ask. I posted several questions to the codewarrior.mac.* newsgroups begging for help with tables. A very few kind souls lent me a hand and I began to understand how tables worked, but things were not going the way I had planned. The problem was abruptly solved when Mr. A (who I only spoke to every 2-3 weeks or so) informed me he had a table working. (It turned out that I should have been using CodeWarrior’s LOutlineTable class all along instead of trying to use their LTableView class… ARGH).

At some point I decided to move the operation back to the office. The new office was absolutely awful. The carpet was nasty, we had only old broken up folding tables to work on. Not a single non-broken chair. Even the reporter who profiled Aimster for the Washington Post (article here) agreed. Mr. A was still MIA and Mr. B was still in AppleScript land. At some point around March, Mr. B was officially no longer working on Mac Aimster and became the webmaster. So it was Mr A with his Powerbook and me with 50% of a G4 desktop. We were getting a lot of pressure from the bosses to show something, since it had been about 6 months. However, we were told by the Windows team that it had taken them longer than that and they were significantly better equipped than we were… they actually got some support from management whereas we got nothing whatsoever.

Anyway, once the table fiasco was behind us, development proceeded at a much more appropriate pace. We were hampered somewhat by the myriad changes in Aimster’s encryption schemes and all the new features constantly being added to the service, which added countless days to our development time. A moving target and all that, blah blah blah.

To make this long story shorter, we released Aimster for Mac 1.001 on June 26 2001, well behind schedule. We quickly released a new version the next day due to a pretty big bug. We were getting about 3,000 downloads of the Mac client per day, which we thought was great. The reviews were in and most people thought it was great, if a bit unstable. Well, “a bit” is a bit of an understatement. However, we had only our two development machines to test on and the program ran pretty well on them. When I mentioned to John that we needed more machines so that we could test, he basically said to forget about that idea. If people have an incompatible computer (such as, for example, an iMac) then too bad for them. How can we be expected to support every idiosyncracy of every computer system? This was his attitude. I saw no logic in it whatsoever.

Aimster moved its office again to Albany’s business district. We got a T3 into the office and it was really quite nice. No birds living in the vents like at the previous office, they actually had toilet paper in the bathrooms, whereas at the old office we had to bring our own, nobody was selling crack on the corner outside the office, etc.

When the summer came, several RPI students were hired to do various tasks. One guy did sysadmin stuff, one did development, one took over the webmaster position (Mr B had been laid off), one was working on the Spanish version of the program), and there were (I believe) a few others. I didn’t understand why these guys were here, but they were good guys and I didn’t have any problem with them personally, so I didn’t really give it much thought. I was just wondering how much money we were spending on these guys. Back in November-december there were a couple of times we didn’t get paid on time. We always got paid sometime the next week so I never thought much of it, but I later learned that those were times the company was out of money and we were awaiting more money from investors. So every 2 weeks I wondered whether or not I would get paid. And every 2 weeks I was relieved when I checked my bank account and saw that my check had been directly deposited.

Until August 10, 2001, a day that will live in infamy as far as I’m concerned. Friday August 10th was a pay day. I checked my account online and saw that the money hadn’t been deposited. I panicked. I called the office manager, who told me to talk to the project manager. He said that the payroll “wasn’t going to happen” and when I asked him why he said “he didn’t know” and when I asked him if it was going to happen next week, he said “I can only hope.”

At that point I fled Albany. I drove down to Queens to be with my girlfriend and to figure out what to do. Everybody told me that I would probably get paid next week, which I was hoping, but deep down I knew it was the end. I still had not paid August’s rent in Albany and had several other debts that I was planning to pay with Aug 10’s paycheck. I stayed in queens for about 2 weeks, as I saw no reason to return to Aimster if they were not going to pay me. I should note that the pay cycle was lagged by 2 weeks, so that when you get paid, you’re not getting paid for the 2 week period ending that day, you’re getting paid for the 2-week period that ended 2 weeks ago. So when I didn’t get paid on August 10, Aimster owed me 2 paychecks. This is not a trivial sum of money.

I begged and borrowed money from family and friends. When I returned to Albany, there was an eviction notice from my landlord since I had still not paid my rent. I borrowed $1100 from the friend who had first told me about the Aimster job back in October 2000 and used that to pay my rent and some other bills.

It is now September 2, 2001, and Aimster is officially out of money. With the remaining funds, everybody was given a pro-rated paycheck (which was really a loan against future payroll so they could avoid deducting taxes for now) and we got a speech about all of Aimster’s great prospects for the future. Big corporation X wants to license Aimster, company Y does too and will tell all its friends to do the same, blah blah blah ad nauseum. The management is continuing on as if nothing has changed. Except all of the programmers have returned to school. Nobody is working there anymore save some sysadmins and John himself. A couple of people were laid off, but basically everybody else is still considered an employee even though they’re not being paid. I am going to have to somehow get out of my Albany lease as I cannot afford this place on $0 income. I have applied for unemployment as that’s the only option I can think of. As far as I’m concerned, I was laid off. I can’t quit because then I can’t collect unemployment. I have been applying for jobs since August 10th but nobody really seems interested. Part of the reason I took this job was to gain programming experience. But one year of programming experience isn’t really that helpful.

The thing that really infuriates me the most about this whole ordeal was the fact that we were given no warning whatsoever. Nobody even had the common courtesy to tell us, “The payroll will be late this week.” Then when nobody got paid, nobody would even tell us what was going on. No word from management, not even an apology. We had to infer that there was no more money (which was later confirmed by the execs). Not only that, but 2 days before we were supposed to get paid, 60 computers were delivered to the Aimster office. 60 1ghz, 1GB ram AMD Athlons. So that’s where our payroll went? Isn’t that illegal? I’m sure I read somewhere that payroll must be priority #1.

So now I can only imagine what’s going on in the Aimster office. There are no programmers, so maybe John Deep just sits there staring at his computer looking at all the people online and wondering what went wrong. His blunders alone are enough to fill a textbook for a business managent course. But that’s another story.

So in conclusion, I have to say that my experience with Aimster has been one of the worst episodes of my entire life. I will leave Albany with nearly $10,000 more debt than when I arrived, not including the student loans which have come due. I wish I had just stayed in school. It is too late for me to even go for the 2001-2002 year, so I guess a year from now I’ll go back, since it seems nobody wants to hire me. I have so little faith in humanity at this point that I am considering teaching, just so I can have the opportunity to help some kid avoid making mistakes like this one.

Finally, I would like John Deep to know that I deeply hate him and wish I had never met him.