Thursday, December 14, 2006

Adobe Flash Finally Free

Sick of finicky Macromedia Flash compatability for your Linux distribution? I know I've spent a significant amount of time installing the third-party, open-source plugins to Firefox in order to get Flash support in my browser. But now, that doesn't seem necessary anymore. Adobe released the Flash Player Scripting Engine last month, and in conjunction with the Mozilla Tamarin project, should result in an open-source, official Flash plug-in for Firefox.

Also, Acrobat Reader 8 is now available.

Wednesday, December 06, 2006

Home Linux Server Part 2: Web Server setup

This is the second installment of my series of posts on setting up a Linux-based server on your home network. In Part 1, we set up Debian 3.1 on an old system to run as the server, set up the telnet daemon, and installed a basic GUI but prevented it from running on boot.

Now in Part 2, we will configure our box as a Web server open to the public (if you want) using Apache. I am assuming your system is configured as per Part 1. Thus, you have a static internal IP address assigned to your server, and a unique hostname. Also, these instructions will allow you to create a publicly accessible web server even if you have a dynamic public IP address assigned to you by your ISP. For example, on my network, my server has hostname present-server and internal IP address However, my public IP address is dynamically assigned by my ISP, Verizon DSL, and changes unpredictably. Using these instructions, however, my web server is always available from outside my network via
  1. Log into your server as root, or use telnet to log in as a regular user and run su to enable root access.
  2. Install Apache with the command apt-get install apache. When prompted, do not enable suExec.
  3. Apache defaults to the main server directory being /var/www. In this directory should always be a file called index.html. When installed, Apache creates a default dummy index.html. To see this file, point your web browser to the internal IP address of your server. This causes the browser to connect to your server on the default HTTP port, port 80. Apache intercepts this, and directs the visitor to the index.html file found in /var/www. However, this is the highest directory the visitor can access.
  4. You probably want to keep the default index.html file around, but obviously do not want it to be the page your visitor sees when he navigates to your site. Thus, rename the file with mv /var/www/index.html /var/www/index.html.old. Now, you can use the /var/www directory to hold all of the files needed for your website. Be sure to create a new index.html file as the entrance page for your site.

Now your web server is fully functional if you want it to remain accessible only to those within your home network (i.e., to the intranet). Continue if you want to open it up to the internet.
  1. You need to tell your router to pass any HTTP requests from outside your network on to your server for Apache to handle. Thus, you need to forward port 80 in your router's Port Forwarding Settings to the IP and MAC address of your server. You can find the MAC address of your server with the command ifconfig. You may need to be logged in as root to run this command. The MAC address (also known as a hardware address, and is a unique number identifying your Network Interface Card to other computers) is shown next to HWaddr in the eth0 entry. Port forwarding differs from router to router. Consult your router documentation for this process.
  2. Now we need to find a Domain Name Server (DNS) to put our site in its zone. provides a free service that places dynamic public IP addresses in its zone, provided you use a sub-domain of theirs (that is why my site's address is To set this up,
    1. Create a free account on
    2. Click "Dynamic DNS" under "Services," and then click "Create Host."
    3. Set the hostname to the same thing as the hostname on your server, and select an upper-level domain of your choice. Go to, and put your public IP address in as the IP address in DynDNS. Click "Add Host" to complete the registration.
    4. You will not be able to test this domain if your router, like many, does not support loopback connections. Therefore, ensure there is a valid domain registration by asking a friend to point their browser to the domain you configured. They should see the index.html page you have put up if your ports are forwarded properly and the domain is set up correctly.

  3. Dynamic IP addresses, by definition, change sometimes. Thus, we need a way for our entry at to update with the new IP. We will use the ddclient service for Linux to manage the updating automatically.
    1. Install ddclient with apt-get install ddclient.
    2. Select dyndns from the list of services.
    3. Enter in the domain your registered at DynDNS as the "fully qualified domain name."
    4. Enter the username and password you use to log in at
    5. Enter the interface your webserver is using as an NIC. This is most likely eth0.
    6. Select No when asked if you want ddclient to run whenever a ppp connection is created.
    7. Enter 30d for a 30-day update cycle when prompted.
    8. Choose to run ddclient as a daemon so you do not have to start the service every time you reboot the server.
    9. Edit the configuration file /etc/ddclient.conf to enable access from behind a Cable/DSL router.
      • Run nano /etc/ddclient.conf as root to edit the file.
      • Replace the line use=if, if=ppp0 with the line use=web,, web-skip='Current IP Address: '
      • Press Ctrl-X, Y, Enter to save the configuration file and quit nano. Run ddclient to update the IP and make sure the daemon is working. This will run automatically every 30 days, but if you know your IP address has changed, run it manually to make the changes immediately effective.

Note: Some ISPs, including Verizon DSL, block listening on HTTP port 80 to try to discourage servers running with the less-expensive dynamic IP addresses, and get you to buy a static IP. If this is the case, you need to change the operating port to something besides 80. Edit the /etc/apache/httpd.conf file, replacing the port on the port 80 line with a different number. I recommend using port 8080. Then, change which port is forwarded by your router as well. When pointing web browsers to your site, you are no longer using the default port, so you need to tell which port to connect on. That is why my site is referred to with

Great. Apache web server should be up and running, and your DNS should be automatically updated and accessible from the internet. Have a friend check your site from the outside using the domain you registered with DynDNS, specifying the port you chose. If you need to view your site internally, you need to direct your browser to the internal static IP address on the specified port unless your router supports loopback addresing.

Sunday, December 03, 2006

Home Linux Server Part 1: Debian setup

I've decided to write a series of of posts on setting up a Linux-based server on your home network using Debian 3.1 ("Sarge"). Tonight is the first posting, detailing how to set up the base Debian system to later configure as a server. We'll set up only the critical installation files, the root account, one other account, and telnet and x-server.

I'm setting up my server on an old Dell Inspiron 3000 laptop. As you can tell, it is a terrible system. The only component I have added is a 100Mbit Ethernet card. Thus, pretty much any fairly recent machine you can find will work for what we want to do. I'm going to assume this machine also has a CD drive, and that it will be a dedicated server, in that you will not be dual-booting the system.
Debian server system

  1. Download and burn to CD the Debian 3.1 NetInstall disc image from here.
  2. Insert the NetInstall CD into the drive of the computer you'll be using as a server, and reboot the computer. Note: You will lose all data on the hard drive following these instructions. Be sure to back up anything you need.
  3. Start the installer with the linux netcfg/disable_dhcp=true debian-installer/framebuffer=false command, indicating we do not want to configure DHCP at this time, and we want the text-based setup (because it's easier, actually)
  4. Select your language, region, and keyboard layout
  5. Set up your network settings:
    • Choose an unused IP on your network. Check its availability using your router's status tools, or by using a different computer on the network to try pinging the desired IP. You will probably want to use Make sure, though, that the first two octets match those used on the rest of your network.
    • Enter your subnet mask. If your first two octets are 192.168, the mask is
    • Enter your gateway address. Normally, this is the IP for your router.
    • For a DNS or name server, enter in either your ISP's nameserver, or, if your router does name serving, re-enter your gateway address.
    • Create a unique hostname for the sever. I used present-server.
    • Enter a domain name of your choice. I used

  6. Partition your hard drive:
    • Create a 256MB swap partition.
    • Create a 700MB root partition.
    • Create a final /home partition with the remaining space.

  7. Allow the installer to run for a while. When prompted, install GRUB to the Master Boot Record.
  8. Remove the CD from the disc drive and enter Continue to reboot from the hard-drive. Configure your timezones, root account, and user account. Do not use PPP to install the system if prompted. Choose to obtain your repositories from http, and select a local mirror.
  9. Do not install anything at the software selection screen. When prompted, do not configure Exim.
  10. Use the default root username.
  11. Press Enter at the "Thank You" screen, and note you are at a login prompt.
  12. Login as root using the password you provided.
  13. Allow telnetting to the server by installing the telnet daemon with apt-get install telnetd
  14. Install a minimal GUI with apt-get install x-window-system:
    • Choose "autodetect hardware"
    • Use "xfree86" for the keyboard rule.
    • Maintain maximum compatibility unless you know what to use, and choose "pc101" for the keyboard model.
    • Select your layout language
    • Select /dev/psaux for PS/2 mice, and PS/2 from the list of mouse models.
    • Answer the prompt about the LCD screen, and configure the monitor settings in the next few screens.
    • Use a 16-bit color depth.
    • Use a printer resolution of 300dpi.
    • Prevent x-server from starting during boot by renaming the symbolic link in the startup directory with mv /etc/rc2.d/S99xdm /etc/rc2.d/_S99xdm.

  15. Remove the CD and reboot the system with Ctrl+Alt+Del. Login as root.
  16. Edit .bashrc to set virtual terminal sessions to VT100 terminal type:
    • Run nano .bashrc to begin editing .bashrc with nano.
    • Add to the end of the file the line export TERM='vt100'.
    • Hit Ctrl-X, Y, enter to save the file and exit nano.

So that's it. Test x-server is up and running by running the command startx, and test telnet by connecting to the server at the IP you specified from a different machine. Next time, we'll start adding some tools for your server to make it do something.

More information, as well as the rough plans I followed in setting up my server, are available from

Thursday, November 30, 2006

Ubuntu 6.10 Release: How did I miss it?

Wow, this was not something I thought I could miss. I completely failed to realize that Ubuntu 6.10 Edgy Eft came out over a month ago. I'm really quite embarrased.

The release announcement, dated October 26, is here. Looks good to me, I can't wait to try it out. You can download it from here.

I'm downloading Edgy now, when I install it I'll report on how it feels, although I'm regrettably pretty late.

Windows Command Line, I thought I knew Ye

I thought I knew a lot about how the Windows XP command line emulator worked. I've written a number of fairly complex batch programs, gotten pretty comfortable with a large number of command-line programs, and just today started working with the Borland C++ Builder 5.5, a command-line compiler for 32-bit Windows applications. But that led to me learning something new and surprising about the CLI today.

I have my My Documents folder on a different partition than my Windows installation. I installed XP to C:, but set My Documents to L:, which is my /home partition for my Linux OS on the same system (installed to U:). So when I was running the C++ Builder, and had to enter in files on the /home/My Documents partition as parameters to the C++ Builder, I got sick of writing the full file path.

Because I thought I had to. Until today, I couldn't figure out how to cd to another partition on my hard drive. I didn't realize that Windows was treating the partition as a virtual drive, even though it's obviously mounted as my L:. For some reason, it didn't occur to me to change drives like you switch to a directory on a floppy disk.

But that's all I had to do. Now, I don't need to write the full file path, because I can change drives and then cd to the proper directory. I'm basically an idiot for not realizing before that:
C:\> cd L:\ wouldn't work, and I need to type:
C:\> L: to change drives, and then:
L:\> cd programming\c++\helloworld to get to the directory containing my "Hello, World" source.

Moral of the Story: For those of you out there who, like me, couldn't figure out the obvious:
  • Windows treats mounted partitions as virtual disk drives, and not mounted directories like Linux and UNIX do.
  • You consequently need to change drives in a command prompt before you can change directories.
Hope this helps, it took me too long to figure it out.

C++ Compiler Predicament

I mostly program in Java and Visual Basic, but for some time I've been trying to become a bit more comfortable with C++. I had been compiling most of my programs under Ubuntu on my Linux partition using gcc, the free, open-source GNU C compiler. It's been working well, but I wanted to develop under Windows as well. That left me a two options.

First, I could run a Windows port of gcc through Cygwin (note to self: blog about Cygwin soon), a linux API emulator for windows. Cygwin effectively provides a bash shell from within Windows. Unfortunately, I couldn't easily set the Windows port of gcc up to run in Cygwin, although I admit I didn't try real hard.

My other option is to use a different compiler. Oh boy, which one to use. Well, Microsoft released the Visual C++ Express development platform for free (in fact, the entire MS Visual Studio 2005 Express suite is available for free download here) , so I set up VC++ and started developing under that. I guess I should note that I had to mess with some configurations and installations to set up the Windows Platform SDK and be able to compile native 32-bit executables without depending on the .NET framework.

So having to jump through hoops to use the VC++ compiler disappointed me. And I also didn't like working in the VC++ IDE. Sure, it's nice, and does a good job for someone who wants to produce working code quickly. But remember, my first goal is to learn and become comfortable with C++. Until I can write a bit more than a simple search algorithm or "Hello World" app, I don't want an IDE helping me along and handicapping me for later. Goodbye, VC++.

That left Borland C++ Builder 5.5. Honestly, I don't know why I didn't think of it before. It has all the functionality of gcc--maybe even more, but I'm no compiler guru. And it's entirely command-line based, which I like a lot. I feel that once you get a good sense of the tools available to you with a command line, the CLI is much more powerful and efficient for getting jobs done than a GUI. I don't have to deal with a bloated, albeit powerful, IDE like VC++. And, it's a free, small download.

Now, I can finally jump into Windows development and get a stronger foundation in C++, without being handicapped by an IDE I don't want or having to emulate an operating system that isn't what I want to use. Not to mention, C++ Builder is an easy to use but effective compiler.

Monday, November 27, 2006


Whew, three posts in a day. That's a record. Although I need to make up for not posting in over a month.

Anyways, I just finished cleaning up My Forty-Two Cents. I went through an deleted all of the comments that were spam, and added labels to every single old post. I like how the new beta of Blogger added those. They should add some relationships between posts, and make indexing services like Technorati do their job a bit easier.

Sounds Good

Over a month ago, I tried to figure out the best configuration for my Logitech Z-5500 Digital 5.1 Surround Sound speakers and Creative Labs SoundBlaster X-Fi XtremeMusic soundcard, and I finally got some answers. I ended up emailing Logitech support, and although a bit slow, were definitely helpful.

So, here's what I learned:
  • Use the sound card for Dolby Digital and DTS decoding, instead of the decoder on the Logitech control console.
  • Use the X-Fi instead of the speakers to upmix stereo and mono audio to 5.1
  • Use whatever is easiest to control volume. This is most likely turning the volume level on the soundcard to 100% and using the control knob on the speakers to make adjustments.
  • Tune the bass using the subwoofer control on the Logitech console, not the X-Fi control. Similarly, leave the THX Bass controls on the X-Fi alone and manage bass with the Logitechs.
I still need to find out from Creative Labs where to adjust Line-in, Mic, and Recording levels--with the software, with the source for the line-in itself (such as the radio plugged in, etc), or with the controls on the X-Fi panel.

Template Upgrade

Finally, I've got a chance to post again. College applications have been consuming my life, and my Thanksgiving break was wonderful, but busy.

Well, My Forty Two Cents has gotten a makeover. No drastic changes, I liked to old look, but when I logged in to post on something entirely different today, Blogger informed me of the new beta upgrades, including Drag-and-drop template editing, post labeling, and privacy controls.

I mostly stuck with the same template, and the transition was smooth. In about five minutes, I had my sidebar reconstructed, with the largest difference being the new hierarchical organization for the archive section. I used the Drag-and-drop template editing because it was there; most of my editing to the old template was done right in the HTML and CSS code, but I found the template and drag-and-drop tools to be adequate for what I wanted to do.

Tell me what you think. Or even better, tell Blogger what you think, and we might see some changes.

Friday, October 20, 2006

Surprise, Surprise. IE7's Got a Bug

Never saw this one coming. Microsoft's Internet Explorer 7.0, just officially released Wednesday, already has a security bug. According to the Register, the bug is a result of faulty code carried over from IE6. So if IE7 was supposed to be a rewrite, and it has IE6 bugs, what does that say about Vista, which is supposed to a complete rewrite as well? Will we see XP bugs showing up?

Eweek has written a fairly favorable review about IE7, that talks about some of the security features that are admittably an improvment. I think IE7 is certainly a worthy release (that's long overdue), but it doesn't make IE the best browser available.

Wednesday, October 18, 2006

IE7 Official Release: First Reactions

Internet Explorer 7 is officially released--download RC1 here, it is the same version being bundled as the official IE7 in a Yahoo package that went out today. (Edit 10/20/06: Now officially IE7, not referred to as RC1)

I downloaded IE7 RC1 and checked it out. Here is a screenshot of it showing My Forty-Two Cents, as well as a screenshot of Firefox 1.5 showing the same page:

IE 7:
IE 7
IE 7

My first reaction to the new IE was, "awkward." As soon as I opened it, it didn't feel good. This could be simply because it's new, and when it comes to computers I get used to things easily and like having them set up the way I'm used to them. However, the interface doesn't look real thought out.

Note in the screenshot the tab. Sweet, finally IE got tabs. But I have only one web site open, yet the tab bar is still there, wasting screen space. Looking at the top of the screenshot, and you'll see more wasted space--extra room between buttons, odd toolbar sizes, etc. And that screenshot is taken with "Small Button Sizes" enabled. One nice thing was a small button that shows a thumbnail of all the pages loaded in tabs, but a Firefox extension known as foXpose does this too.

My next reaction was surprise at a lack of a menu bar. At first, I found this odd, until I realized that I knew all of the shortcuts and don't use the menu bar anyways. And if I didn't it's easily enabled under the right-click context menu. However, as further evidence of the wasted space, the toolbar section in IE without the menu bar is just as large as my toolbar section in FF with the menu bar. Something's wrong here.

Next I navigated away from the display-once welcome page IE loaded the first time with. I went to Google. And the font was big. Too big. In the screenshot, the text size is set to "Smallest" in IE, and is still slightly larger than the lettering in FF when FF is set to "Normal." Also, when I shrunk the text down to "smallest," the font went out of wack. Now the letters look bolder than they should, and the line-spacing looks squished. Images were the same--too large (and there is no ImageZoom extension like in Firefox).

Microsoft, you really screwed up this next part. Pages do not render correctly. Look at the header of My Forty Two Cents in the IE screenshot, compared to the FF screenshot. Notice the style-sheet is clipped at the top in Internet Explorer. Whoops, guys. Even Firefox rendered the page correctly.

Next I started exploring the toolbar. It's pretty much the same as IE6, just rearranged. The forward, backward, home, refresh, and stop buttons, however, are scattered around and in weird places. I think they should be grouped together, but they aren't. The RSS feed controls look better, but not on par with a dedicated aggregator program. One nice thing is the Tools menu being available from a button, so you don't have to enable the menu bar to, say, clear your cache.

IE 7 includes a number of new security features, and only time will tell on their effectiveness. The most obvious is the new phishing protection. When pages load, IE7's status bar at the bottom shows an icon letting you know it's verifying the authenticity of the site. Other security measures remain less obvious, like the pop-up blocker, which continues to notify you of its actions with a bar that appears at the top of the page.

All in all, IE7 seems like an improvement over IE6, but doesn't quite reach the standard set by Firefox, or even Safari or Opera. It's behind the 8-ball on new features, doesn't offer as much customization (or extensions), and at first reaction doesn't seem particularly user friendly. After so much time between versions, I'd have thought Microsoft would have done better.

Now only a few more days until Firefox 2.0 becomes official. RC3 is out.

Saturday, October 14, 2006

So what's the best configuration, anyways?

I really like to listen to music. That's why, for Christmas I asked for (and Santa brought) a Creative Labs SoundBlaster X-Fi XtremeMusic soundcard. And then a couple of months ago I bought a new soundsystem: Logitech Z-5500 Digital 5.1 Surround Sound speakers.

And I love them. With the X-Fi processing and the Z-5500 power, my music (and games and movies and even mundane system noises) sounds spectacular. Bass rumbles in the floor--if the subwoofer's at more than 25%, it shakes dishes downstairs in the kitchen. And every noise, from the lowest bass drum to the highest screeching tire in a movie, to the quietest whisper to the loudest bang, is clear. Distortion simply does not exist.

But I've got a question, which arises from the presence of reduntant features in the speakers, the soundcard, and the software. What settings do I enable in which component to ensure the highest overall sound quality? Let me brake it down:

  1. Volume. Do I leave my speaker volume at 100%, and adjust the volume on my computer for the soundcard output? Do I leave both of them at 100%, and adjust the volume in whatever program is playing the sound? Or do I cap everything at say, 80%, and just adjust each one without regard? Basically, what volume controls should I leave alone, and what should I adjust?

  2. Stereo to 5.1 Upmixing. Do I turn off the upmixing in the Z-5500 decoder, and let the X-Fi CMSS-3D engine handle it? Or vica-versa?

  3. Multi-channel Decoding. Do I use the external decoder on the Z-5500s for Dolby 5.1 and DTS 96/24, or do I turn off digital bitstream out on the soundcard and let the X-Fi decoders work their magic?

  4. Recording/Line-in/Microphone. This is just on the X-Fi, because obviously the speaker system is pure output (and quite powerful at that, too). Where do I adjust the input volume, on the recording level in the program, such as Audacity, or in the X-Fi's line-in volume knob, or on the microphone or amp itself?

Because I love my setup, but I'm OCD enough to want to get every last peanut of perfection out of it. I know both the X-Fi and the Z-5500s are great pieces of hardware, but for each of those categories, which one is better? Where do I make my adjustments: the speakers, the soundcard, or the software?

If anyone has some advice, please comment. I'm going to keep experimenting and researching, and maybe call up Logitech or Creative Labs.

Wednesday, October 11, 2006, I forget about you

There's one website in particular that I use regularly but haven't given much thought. I almost take it for granted that everyone knows about it. It's Take a look at it yourself, you'll see why it's so great.

It's a fast and easy way to send files to people, without needing email addresses or setting up direct connections in P2P programs like Limewire. Their FAQ will do a better job describing it than I probably can; basically, you enter the path you want to upload, and it it returns a download link you can distribute.

There isn't much more to it. Rapidshare is simple to use, and effective. Like me, you might not see a need for it, but once you try using it you'll realize it's more useful in more places than you'd expect.

Thursday, September 14, 2006

An excuse for my lack of readers.

My Statcounter statistics are pretty poor. Only 16 unique visitors in the past thirty days. And I can't tell how many of them are me, because I clear my cache and cookies frequently, and my dynamic IP changes fairly often. I'm not really disappointed with my low hit-count, because my goal with My Forty Two Cents wasn't to commandeer the blogging world and snatch millions of daily hits. I write mostly because I find something that interests me, and if there is one other person who reads it and finds it interesting, then it was worth my posting.

My low hit-count is most likely a result of my infrequent posting, and possibly uninteresting or poorly presented material. I hope the last two aren't the case, but opinions are opinions, and I do the best I can.

However, I came across a possible mathematical explanation for my low amount of readers (of course, I appreciate those of you out there who do read). It has to do with Power Laws, which shows how there are very few blogs with the majority of readers, and more and more and more blogs with fewer readers.

This is contrary to our first instinct to attribute population distributions (in this case, blogs, and measuring the number of readers) to a Normal Curve, where most blogs have a moderate amount of readers, and very few blogs have many or little readers.

Of course, it made perfect sense. The blogosphere operates mostly through links, and the number of people clicking that link. So until this site is linked to by enough blogs, and those blogs are popular enough that enough people see and click those links, My Forty Two Cents will not have the exposure necessary to rise in popularity. And because more blogs link to popular blogs than blogs like mine, the popular blogs (commonly called "A-List" blogs) become more statistically biased in the power distribution, and all the other blogs in the "tail" remain with low numbers of readers.

This raises interesting questions as to the true "equality" in the blogosphere. Mathematically, there is a natural and inevitable hierarchy that forms between popular and unpopular blogs. Even a spectacularly well written blog (which I know mine isn't--it's sparse and often behind the times) will falter until there are enough links to it.

For me, and according to Technorati, nobody links to my blog. So my 16 unique visitors are all people who've clicked links I've posted places, such as sig lines in forums, or profiles on or AIM. And I really don't want to solicit links to my blog, or spam forums with it. Hit-count isn't important to me. I personally operate my blog as more of a public diary of interests than a media outlet.

Friday, September 08, 2006

Facebook Update: An Open Letter from Mark Zuckerberg

It was quicker than I expected. Facebook's creator Mark Zuckerberg released a blog statement announcing the addition of new privacy controls for the News Feed and Mini-Feed, saying:
"We really messed this one up. When we launched News Feed and Mini-Feed we were trying to provide you with a stream of information about your social world. Instead, we did a bad job of explaining what the new features were and an even worse job of giving you control of them. I'd like to try to correct those errors now."

The new controls don't allow Facebook users to completely hide their feed from other users, or hide others' feeds. However, what is shown in the Feed can be limited to a bare minimum of items that can hardly be construed as privacy-invasive. This include groups, events, networks, profile removals, status updates, notes, and photos you are tagged in. The Feed obeys the "rules" of profile and limited profile privacy settings, as well, so only people who can see your profile can see items about you on their feed.

It's not perfect, because you can't completely remove the feed. You can, however, remove individual items from your feed. So if you don't make changes too often, and you click the "X" next to them in the feed when you do, you can get pretty close to completly voiding the effects of the Feed.

Good job, Facebook community.

Wednesday, September 06, 2006

Facebook, I don't need to know that.

So MySpace is the rage right now, but the social networking site I use most is Facebook. It's got a clean interface, without all the flashy, wannabe-javascript-junkie crap on MySpace.

Or at least it used to.

The other day, Facebook implemented a new "feature." The Facebook News Feed. The Feed shows you when you log in a summary of every action any of your Facebook friends made over the last few days. It shows who joined what groups, who became friends with whom, who posted pictures of what, who changed what in their profile, and even who wrote what on anyone's wall. There is also a "Mini-Feed" in your profile, which shows all of your friends what your other friends are doing.

Simply put, I don't need to see this. Ever. If I'm curious as to who did any of these things, I'll take a look at that friend's profile and see for myself. Facebook, I ask you not to clutter my screen space with junk I don't care about.

A number of Facebook users have complained about an invasion of privacy, going so far as to make Facebook a tool for stalkers. I wouldn't say that much; the information is public, and posted on the web. Only logged in members who are your friends can see your Feed.

That said, I think users should at least be given the option of both disabling the Feed on login, and hiding the Mini-Feed from their profile. It isn't an invasion of privacy, but I understand why users (myself included) wouldn't want that much shown off so blatantly.

The Facebook communinity has responded; a number of protest groups have been created. I recommend joining Students against Facebook News Feed (Official Petition to Facebook). I'd also recommend signing the petition to revert Facebook back or add a hide option. And of course, express your complaints to Facebook's feedback page.

Even if you personally like the new Feed feature, for the rest of us, please help fight for the option to hide it. After all, that's what a community does.


By the way, Facebook Me!

Thursday, June 22, 2006

Slimming down Ajax

Ajax is an impressive technology--both in appearance and potential. Already, it's infiltrated the web in Gmail, Flickr, meebo, Writely, and thousands of other sites that use a combination of Javascript and XML to dynamically refresh page components.

However, that combination, specifically the XML, provides a major drawback to Ajax applications. Each broswer--IE, Firefox, Opera, Safari, etc--parse XML differently. Thus, Ajax-coded webpages need a large amount of browser-specific code to make it work. The program becomes larger and consequently slower on the net. That's bad.

So how can it be fixed? How can we make Ajax work the same on every browser. Webmonkey reports one idea, called Fjax, that uses Flash to parse the XML and thus remove all browser-specific code forking. The result is a much smaller and more streamlined program--all of the XML parsing, for every browser, is done in less than 4Kilobytes. When was the last time you saw something less than 4K?

Already, Ajax provides much of the functionality as desktop programs. Maybe with technologies such as Fjax, we'll start seeing the same speed.

Monday, June 05, 2006

Alex's Lemonade Stand

This weekend (June 10-11), is the official fundraising weekend for Alex's Lemonade Stand. "Fighting childhood cancer one step at a time."

Alex was a 4-yr-old cancer patient who set up a lemonade stand in July 2000 with her brother Patrick to raise money to help fund cancer research. She continued her stand for four years, until passing on August 1, 2004 at the age of 8. By May 2006, the Alex's Lemonade Stand Foundation raised over $6-million for childhood cancer research.

I am organizing with three others an Alex's Lemonade Stand event at the New Hope-Solebury High School (map here) on Saturday, June 10, 12:00pm - 4:00pm. We have scheduled live outdoor music from
  • Universtity of California at Santa Barbara Boys Wind Ensemble
  • Dodge City
  • The Scenic
  • Limeskin
  • Blue Sky Invention
  • Glaa
  • Omar
  • Rhythm's Crew (some sweet breakdancers)
There will be some simple games that everyone can play--you know you love wiffleball. And kickball. And four-square. And knockout. And Ping-Pong. And Ultimate Frisbee. There will be facepainting, waterice, and carnival games for younger kids. There will be hamburgers, hotdogs, and hoagies. And lemonade. Lots and lots and lots of lemonade.

Hope to see you there. New Hope-Solebury High School, New Hope, Pennsylvania, 18938. Saturday, June 10, 2006. 12:00pm to 4:00pm, with some bands playing later.

If you don't live near New Hope (in Bucks County, PA, just north of Philadelphia), keep an eye out for other Lemonade Days around you. Alex's Lemonade Stand is a great cause. Help fight pediatric cancer.

FOLLOWUP: NHS Lemonade Day was a huge success. We raised over 2,000 dollars, way more than any of us expected. Thanks to everybody who came, to all the bands, to everybody who helped out, and to everybody who donated money and supplies and food. It couldn't have happened without you. See you all again next year--this is going to be annual.

Sunday, June 04, 2006

Registered with Technorati

I claimed my blog with Technorati this morning. Blogger, my blog host, automatically put me in Technorati's registry already, but by registering I added tagging support and accessibility to a few more features. For example, on the sidebar now there's a Technorati box, search, and profile.

Mostly, I added my blog to Technorati to try to get some more visibility. According to Statcounter, there are only a few IPs who regularly visit my blog for any length of time greater than 5 seconds. Thanks to those of you who do; I'm glad you like what you read.

Saturday, June 03, 2006

OSS 3D Modeling with Blender

Blender. It doesn't sound like a real significant piece of software. Maybe it sounds like a little sound mixer, or maybe a small photo editor. But Blender is none of that. It's a full-fledged, surprisingly powerful, and inspiringly agile 3D Modeling program, complete with a thorough manual, wiki, support forum, and tutorial collection to get you well on you way towards professional modeling.

From the Blender website,

Blender is the open source software for 3D modeling, animation, rendering, post-production, interactive creation and playback.

And Blender more than lives up to it.

Just look at some of the screenshots of renderings made with Blender I snatched from the gallery:

Blender is released under the GNU Public License, and the source code is easily available on the main site. The Windows executable is small (only 6.5MB!), so it's no big deal to download Blender to give it a try. The entire GUI is OpenGL, and the interface is spectacularly intuitive; don't let the initially daunting appearance fool you. It is one of the easiest programs to use once you get a hang of the shortcuts and redundancies, in spite of the plethora of features in such a small program. Blender seems to be one of those golden OSS programs that has not become bloated or inefficient or buggy, and is the epitomy of what Open-Source should give the world.

I don't want to try to describe the beauty (both art-wise and programming-wise) and power of Blender. Download it yourself, and start experimenting. It's so natural, that even a complete non-artist like myself can create some pretty sweet renderings. Have fun!

Thursday, June 01, 2006 Social Music Revolution

I just signed up with, a social networking music community. I think it's going to be really cool. It uses open-source plugins and players (under the Creative Commons license) to integrate with your media library and current media player (support for WMP, iTunes, Winamp, and a bunch more), to automatically send anonymous listening information to your account. It synthesizes the data it recieves, and builds a set of "Neighboring" users who like the same music as you. You can listen to their songs if they have a paid account. also has web radio stations of a bunch of different genres at 128kbps (CD-quality) that stream through an opensource, extremely small player. supports tagging, blogging, etc.

It also generates listening statistics for you, following trends automatically.

To me, however, it's the community surrounding that seems most wonderful. I never jumped on the MySpace bandwagon--I'd rather stick with real friends, not virtual avatars. But is your "music friends." I like that: it's a way to find out about bands that I'd never find otherwise.

Which is the other plus of There's a massive library of full-streaming and 30-second sample streaming indie songs that are really good, but don't get publicity because they aren't on a major label.

Finally, here's my profile. If you like what I listen to, add me to your friends list. also generates a list of the most recent songs you listened to. Here's mine as of this posting:

Edit: Actually, the above list isn't as of the posting; it changes automatically as I listen to more music. What you're looking at now is the most recent songs I've played on my computer.

Wednesday, May 31, 2006

Ubuntu 6.06 Release

Sorry I haven't posted in a while. Junior year in high school two weeks before summer break--what can I say, between AP tests, SATIs, SATIIs, finals, final projects, paper....

Anyways, good news: Ubuntu 6.06 "Dapper Drake" is scheduled for official release tomorrow.

I've been using Ubuntu since version 5.04, and using 6.06 since its third testing phase, codenamed "Flight 3." After trying various Linux distributions, Ubuntu helped me through the learning curve (although I've got a long long long long long way to go before I can even call myself "advanced").

I've set up Dapper Flight 3 as an FTP server for my home WLAN, so I can vouch for its base-server functionality as well as its desktop user functionality. Superb.

Dapper, as of tomorrow, will be out of testing and in its full support cycle. I highly recommend grabbing the LiveCD to check it out, and then at least switch an old Windows box to dual boot--the partitioner in the installer is one of the easiest to use I've ever seen. Download the .iso files with BitTorrent--for the file sizes, it's extremely fast. Or use Ubuntu's ShipIt requests--they'll send you a free CD, and extra copies to give your friends (if you're willing to wait, which I'm not).

All downloads, in ISO and TORRENT formats, for x86, PowerPC, and AMD64 architectures, available here.

Ubuntu uses GNOME to power its GUI, but KDE-club members can download Kubuntu. Check out for all the information you want. And if you want more, check out their forums--it's the best web community I've come across.

Thursday, March 23, 2006

Writely Aquired by Google

The AJAX-based online word-processing application Writely has been acquired by Google. I wrote about Writely a few posts back, and still give it my praise--it's a great program that really fills a niche.

But what does the merger mean for us users? Well for one, Writely has temporarily discontinued new registrations until the transition to Google's servers is completed. Writely claims to not change things--for now-- and the merger should allow the start-up to make some serious improvements under Google's massive budget. The team working on the Writely project should increase as well.

I'm wary about Google's AdSense program slipping in on Writely, however. Google has had the habit of providing useful, streamlined, and powerful services with their trademark clean interfaces, but then adding their text ads later down the road. Look at Gmail, for example. Writely claims this will not happen until users are notified, but how much good will that do once the users have established a portfolio of work on Writely?

From the looks of it, no major changes are occuring to Writely as a result of the merger for some time. Nonetheless, I'm not certain if this was the best decision for Writely. I'm a believer in the *nix philosophy: Do one thing and do it right. Since Google went public in 2004, it has been straying from its own domain--web searching. Hopefully Google can keep doing Writely "right" (write?).

Wednesday, March 01, 2006

Wikipedia Hits 1,000,000

Slashdot reports that Wikipedia, the online, user-edited encyclopedia, has reached its one-millionth article today at 6:09pm EST. The article is about the Jordanhill Railway Station.

Here are few highlights that caught my attention in the Slashdot thread:

  • znx writes, Even if you consider only 10% of the wiki as "useful content", that still means 100,000 articles. Which is just below that of Encyclopedia Britannica (which was established way back in 1768!). This is a milestone along the way, the wikipedia isn't perfect but it is a great project that should be celebrated for its success.

  • fm6 writes, I find it interesting that the "official" one millionth article is one of those obscure geographical articles that help justify Wikipedia's existence. It's the sort of narrow topic that old-fashioned encylopedias would never get to, but which is actually useful to certain people. But it's a little strange that the counter hit 1 million on such an article. By percentages it should have been a vanity article, a topic that exists mainly in the mind of the author, or a summary of a TV episode.

  • niktemadur writes, 1,000,000 articles in English. If you take all articles in all languages, Wikipedia surpassed the magic number a long time ago, and has by now actually gone beyond 2,000,000 articles.

Also, interestingly enough, Wikipedia user Mészáros András predicted that today (i.e., March 1, 2006) would see the official authorship of Wikipedia's one-millionth article.

The count to one-million does not include redirects and stubs. If those were included, Wikipedia would have over 2.5 million articles.

There is of course the expected debate (seeing as it is a Slashdot thread) on the value, accuracy, and reliability of Wikipedia. One Slashdotter posted a link to Uncyclopedia, a parody of Wikipedia with the slogan "The content-free encyclopedia that anyone can edit," compared to Wikipedia's slogan "The free encyclopedia than anyone can edit."

Tuesday, February 28, 2006

Infrared Webcam

A while ago I came across this page. It is instructions on converting a standard webcam from the visible light spectrum to the infrared spectrum. I finally got around to attempting the project myself.

I chose an old Intel CS330 webcam, no more recent than 1998 (yeah, it's pretty old-skool). You'll also need some exposed camera film, a small screwdriver, and a knife.

The basic plan is to open up the webcam, remove the lens housing, remove the Infrared filter from the lens, and replace it with film to filter visible light. Be prepared to damage the webcam--I did not have any problems taking mine apart, modifying, or reassembling, but I cannot vouch for other models.

  1. First we'll remove the case of the webcam. Take off any mounts, unscrew any screws, and otherwise pry the case off. Try not to break any clips, but instead gently remove them with a screwdriver. I also unscrewed and unclipped the USB cable from the circuit board, just to get it out of the way; be careful not to bend any pins.
    Disassembly 1Disassembly 2Disassembly 3

  2. Next unscrew the lens assembly from the circuit board, and unclip it from the mount. Now the CMOS sensor on the circuit board is exposed, so be careful not to scratch it, get dust on it, or even touch it.
    Lens mount disassembly 1Lens mount disassembly 2

  3. If you're lucky, there should be a small red piece of glass against the lens that is the IR filter. Simply remove it. If you are unlucky like me, the filter was painted directly onto the lens. Gently scratch (I know it sounds terrible) the lens with the tip of a knife blade until the red coating flicks off. This is the most difficult part; you need to apply enough pressure to chip off the filter coating, but avoid scratching the glass beneath. I found that it requires more pressure on the knife than you might expect, but it is better to be cautious.
    Filter removal 1Filter removal 2Filter removal 3

  4. Cut a piece of exposed, black photographic film to cover the lens; this will filter visible light, but allow IR wavelengths through. Use film that is as dark as possible, and that does not have a picture negative on it. One can usually find such pieces at the beginning of the roll, before actual pictures have been taken.
    Visible spectrum filter sizing

  5. Use a single fiber of duct tape (one of the grey strings), and lay it over the edge of the lens. Push the film you cut onto this to hold it in place. It will not be the "tightest" of seals, but it will prevent glue from getting caught on the lens, etc. Reassemble the lens mount.
    Lens mount reassembly

  6. Screw the lens assembly back onto the circuit board. Before doing this, blow gently on the CMOS sensor to remove any dust specks that will greatly degrade picture quality. Continue to replace the board in the case, reattach the USB cable, and close the case back up. Don't forget to screw in the screws.
    CMOS sensor

That's it. Now plug your webcam back into your computer and use it like you always have. Except now, the images will be in the IR spectrum. At first glance it will simply look like a black-and-white image of the regular shot, but look closer. You will see that some inks and dyes remain transparent, and others show up nicely. Take a look at a dollar bill, or your arm (the arm is weird--all the veins show up).

If the image looks too dark, you may need a stronger source if IR light. Daylight is normally sufficient, and occasionally an incandescent bulb will overlap into the IR spectrum adequately. However, try pointing a TV remote at the subject and holding down a button if you need more light.

Good luck!

PS. Thanks to for the image hosting.

Sunday, February 26, 2006

StatCounter Tracks My Hits

Take a look on the right-hand column of this page. Scroll down. See the little icon that says "StatCounter?" It looks like this:


StatCounter is a tool I found to see the usage statistics for this web site. It seems to be able to provide some pretty insightful information, including

  • Unique, Returning, and Total visitors
  • Browser, Javascript enabability
  • Operating system, resolution
  • IP address (so yes, I am logging you right now. I guess I should let that be a disclaimer of some sort.)
  • Referring pages, exiting pages
  • Search engines--and the search terms--that users found the site with
  • Length of visits, pages visited
  • Location, ISP

There's probably more I haven't found out yet. But best of all, the service is completely free. If you're looking for some basic demographic information for your blog or site, I'd recommend it.

Saturday, February 25, 2006

Earth's Population 6.5 Billion

Today Earth's population is projected to hit six-and-a-half billion people at 7:16pm EST, according to the U.S. Census Bureau and its World Population Clock.

As of this post's writing, the world population is an estimated 6,499,923,849 people.

The article on Wired (linked above) also has an interesting commentary on how many people the Earth can actually support.

Here seems like a good place to insert one of my favorite Frank Zappa quotes:
The problem with the world is stupidity. Not saying there should be a capital punishment for stupidity, but why don't we just take the safety labels off of everything and let the problem solve itself?

Friday, February 24, 2006

Torrent Sharers: Beware

Macworld posted an article today about the latest string of MPAA lawsuits.

Now the Motion Picture Association of America is targeting BitTorrent search engines. These sites provide users with the location of meta-data files known as Torrents that instruct a client program (such as uTorrent) on where to find data on a peer-to-peer network.

BitTorrent has until now managed to avoid lawsuits, despite its popularity in sharing movies, music, and other copyrighted material. But the MPAA is filing lawsuits against a number of the most popular Torrent search engines, including TorrentSpy, IsoHunt, and others.

The BitTorrent method of filesharing is quite ingenious. Users gather in a "swarm" around a file. A meta-data text file known as a "torrent" instructs members of the swarm on where pieces of the target data file (such as a software program, movie, music, etc) exist. Consequently, people who are downloading the file can simultaneously upload pieces they already have--these people are known as "peers." Swarm members who are uploading the entire data file are known as "seeds." A server known as a "tracker" keeps track of the swarm members.

BitTorrent users can expect to download things much faster than other P2P users, as long as they contribute to the network by keeping their downloaded:uploaded ratio high; otherwise, BitTorrent throttles their download.

It should be noted that BitTorrent, like all P2P networks, has legitimate uses. In fact, BitTorrent is perhaps the most legitimently used network. Many large files or PDF documents are often just hosted as torrents to keep server bandwidth down and file download time lower.

Writely Shows the Potential of Web2.0

The Web2.0 and AJAX craze is showing us dozens of potential web-based applications that might one day bring the desktop-based computing world as we know it to its knees. AJAX programs include meebo for instant messaging, Gmail for email and chat, and more.

But one AJAX application has really caught my eye: Writely, a web-based word processor.

While only in beta, Writely can seem a little rough around the edges, and occasionally makes a few mistakes. But it has the potential to rival desktop-based solutions such as and Microsoft Word. In fact, Writely can upload existing HTML, plaintext, rich-text, MS Word Documents, and OpenOffice .odt and .sxw documents. It can support .gif, .png, .jpg, and .bmp images for embedding in your files.

I experimented a bit with Writely, but came away happy. I only had a few minor problems, as is expected from a beta service. I lost some tab formatting in an rtf document that I uploaded. I had trouble getting cut/copy/paste to work, but the problem appears to be a compatibility issue with Firefox that can be fixed. And the Undo button wouldn't work for autocorrections made by the spell-checker. Also, Writely provides an RSS feed of documents you made public (i.e., available for others to see), but this proved a bit finicky. I did not experiment with Writely's vast set of collaboration tools, but they seem easy to use and powerful.

I successfully created a test document from scratch online, applied various special formatting, bulleted and numbered lists, tables, page breaks, horizontal lines, hyperlinks, and just plain content. I exported it to MS Word .doc successfully.

Overall, Writely as it stands provides a free, efficient, clean solution to most word processor users. I look forward to it coming out of beta as a functioning and streamlined product. If more web developers can create applications (and I don't use that term lightly; Writely came across as equally powerful to many desktop programs) with Writely's potential, then Web2.0 might succeed.

EDIT: Slashdot recently posted a thread about Web2.0 that features some more AJAX examples worthy of mention.

Thursday, February 23, 2006

What is Happening, Google?

Google is both the web surfer's and the investors dream. With a clean interface that provides quick and accurate search results, and a stock that closed today at $378.07/share, the search giant is an unquestionable technological powerhouse. It has filled the niche once occupied by Yahoo, and is considered on par with Microsoft and Sun Microsystems.

But Google's been claiming some poor press lately, and not all unwarranted. Recently, Google has been taking fire from human-rights advocates worldwide for its self-censorship in China. The domain has existed for some time under the same technology as the common engine, but Chinese users became frustrated with their government's blocks on sensitive material. Now Google has gone public, and it has decided to save costs by doing the censoring itself. How can a company devoted to finding accurate and unbiased information perform such an unethical act to limit freedom of information?

On the domestic front, Google has launched to wide public support a number of services that are undermining the company's slogan of "Don't be Evil." But privacy and security concerns have constantly been raised. Google's AdSense advertising scheme targets text-based ads to users search queries. But it also reads the contents of Gmail users' private email messages to match relevant ads for the user. AdSense also scans users' Atom feeds if they use Google's feed aggregation--both embedded in Gmail, and independent in the user's Google account.

Recently Google also began logging a user's searches if he is signed into his Google account. This is while the company is fighting court subpoenas in federal cases for search logs (scroll in the link to the second excerpt: "...Demographics of its users"). Google, you can't sit on the fence. Either keep all the information and make it available to whoever needs it and notify users they are under surveillance, or delete any record of me. I shouldn't have to exempt myself from logging routines. Play it safe--let the users choose to opt-in, not be forced to opt-out.

And Google's Desktop Search service has just entered version 3. And for the third time security analysts scream out warnings. An index of files on your computer like DS keeps is like a treasure map for hackers--and Google is notorious for not securing this index file adequately. If the index is found by a malicious hacker, he can use it to find personal information, credit card information, browsing histories, and a myriad of other private items that you don't want public.

Despite all of this, I still use Google. And I use many of Google's other services, including Gmail, Google Maps and Earth, and Picasa (I don't use Desktop Search; I use Copernic's instead). Even with the privacy and security concerns, Google's services do their job well. The search is clean and efficient, the services are fast, and all of them carry small but handy features that just makes a users life easier. But I also run a tight ship on my computer. It is heavily firewalled (both software and hardware), I'm very careful with spam and what information I make available, I scan for viruses and malware every few days, and I don't go all gung-ho downloading whatever I see online. Most users aren't this careful, and it is for these people that Google may pose a security and privacy risk.

My Forty-Two Cents is Live!

Hello, World!

I finally decided to join the hordes of internet junkies known as "bloggers" today. Actually, I decided at 6:24pm EST.

So anyways, welcome. I'm glad to see somebody is reading this blog. I can tell you now that its content will vary. My interests vary, so whatever happens to catch my eye in the news, on an Atom feed, in another blog, etc. is fair game for me to post about.

When you look at my blog site, one of the most prominent features is the title: My Forty-Two Cents. In Douglas Adams' humorous and enlightening commentary on "life, the universe, and everything," The Hitchhikers Guide to the Galaxy, the answer is simply 42. Much emphasis is also put on the fact that nobody actually knows the question to which the answer is 42, but that's an entirely different matter. And of course, "My Forty-Two Cents" is a pun on "My Two Cents."

I'll try to post as often as I can, but sometimes these types of things slip through the cracks. Please be patient, because I know the entire cyber-community is simply on the edge of its seat to read what I have to say. But then again, that's what Stephen Hawking thought when he said his book The Universe in a Nutshell belonged on every person's coffee table. And he's a lot smarter than I am.