An Essay on Network Neutrality
Posted: October 17, 2008 Filed under: NEZzen Leave a comment »The History Behind Network Neutrality
Network Neutrality, usually just referred to as net neutrality, is a relatively new issue in the United States compared to some of the other problems that public policy has taken on and solved in the past. Unfortunately, this fact has caused many to regard network neutrality as a passing issue, one that would ultimately solve itself without any government intervention. In reality, however, net neutrality is a very serious issue that has the ability to affect nearly everyone in this quickly growing digital world.
Beginning with the invention of the telegram in the 1860s, the underlying ideas behind network neutrality became embedded in American communication systems. Under United States law, providers of telegram – and later telephone – services were classified as “common carriers”. This means that all communications that passed through them were treated with equal importance no matter what the source, destination, or contents of the message may be.
As electronic communication became widespread throughout America, Franklin D. Roosevelt created the Federal Communications Commission (FCC) via the Communications Act of 1934. The purpose of the FCC was to regulate all radio spectrum use and to manage interstate communications.
On April 30, 1993, the invention of the World Wide Web by Sir Tim Berners-Lee at CERN marked the beginning of the rapid growth in demand for consumer Internet service. At the time, Internet service was viewed by the FCC – and thus American law – as a subset of the telecommunications sector. This concept would last for only a short period of time.
With the growing demand for high-speed broadband connections, Internet Service Providers (ISPs) looked for mediums other than telephone-based dial-up over which they could deliver Internet connectivity. Such mediums included the cable in use by television services and unused spectrum on the copper wire in use by telephone companies. These two methods of providing connectivity became known as Cable Internet and Digital Subscriber Lines (DSL) respectively. Both of these Internet-capable mediums were already deployed widely throughout America and so they quickly became the primary choice for consumers seeking broadband connections.
An important difference between Cable Internet and DSL at the time, was that the FCC viewed Cable Internet as an Information Service, while DSL remained classified as a Telecommunications Service. Under current law, Information Service Providers were not subject to the obligations involved with being a common carrier. After intense lobbying from DSL-based ISPs, the FCC removed their common carrier obligations by reclassifying DSL as an Information Service on August 5, 2005 – thus putting it on the same playing field as Cable Internet. After DSL providers became free of the restriction of having to be a common carrier, the net neutrality debate suddenly became the center of attention for Internet, fair-market, and anti-censorship activists.
My ThinkPad T41 running Mac OS X 10.4 (Tiger x86)
Posted: October 6, 2008 Filed under: NEZzen Leave a comment »Colored text in Python using ANSI Escape Sequences
Posted: June 23, 2008 Filed under: NEZzen Leave a comment »Check it out – pretty.py is a miniature library that provides a Python print and stdout wrapper that makes colored terminal text easier to use (eg. without having to mess around with ANSI escape sequences). This code is public domain – there is no license except that you must leave the header intact.
Just import the module and make use of the printc(), writec(), or switchColor() functions in your own programs. A test sequence is included and can be invoked if you execute the script directly. Source code is after the break…
Mini Hashlib Replacement for Jython and Python below 2.5
Posted: June 19, 2008 Filed under: NEZzen Leave a comment »I’m back! I’d like to resume things here by giving you a solution to a problem others seem to have had (after searching online). It seems that Jython, a popular implementation of Python in Java, does not have Python 2.5′s hashlib module. This posed a problem to me when I was coding a small Jython application that needed one-way hashing.
Python has now-deprecated md5 and sha modules, so I was able to write a small wrapper for the hexdigest() functionality of the md5 and sha1 objects in hashlib. You are welcome to use the code all you’d like, and feel free to expand on it and send back the changes. Source code is after the jump…
Lightning Fast Boot on Asus EEE with Modified IceWM
Posted: February 23, 2008 Filed under: NEZzen Leave a comment »Many thanks to the people at wiki.eeeuser.com for insightful information on modifying the IceWM installation, to Debian for providing up-to-date packages, and to the IceWM developers for making such an awesome window manager.
What I Think About the MacBook Air
Posted: February 15, 2008 Filed under: NEZzen Leave a comment »Last weekend I went to the Apple Store to get the faulty burner in my MacBook Pro repaired. While I was waiting, I looked around and played with the various gadgets and gizmos in the room. Since I knew the MacBook Air had been recently announced, I decided to go take a look at it and form some opinions (as well as take some pictures).
The first thing that I noticed was that the MacBook Air is not so much small as it is light. The overall “airy” feeling you get when you lift the machine up reminded me of my Asus EEE. In addition, the lack of weight did not make the machine feel flimsy or cheap at all. Another thing that I really liked was the black keyboard. It has a very nice feel to it, and although the keys are close to the notebook, the gaps in between them allow for fast touch-typing. They are also backlit, but the ambient light sensor wouldn’t let me kick them on to see.
One thing I disliked about the machine was the screen. It is the same screen that the MacBook series uses, and the “reflective shield” over it makes glare when in lots of light. I much prefer the matte screen that the MacBook Pro uses. Another thing that bothered me is that other notebook manufacturers are using 13″ panels with 1440×900 resolution, yet the MacBook Air is only 1280×800.
Now the MacBook Air is a nice machine and all, but I feel that Apple skimped a little in terms of hardware. I can understand the lack of an optical drive, but only one USB port and no wired Ethernet? For an $1800 computer that lacks standard Ethernet, you’d at least expect Apple to throw in a USB Ethernet adapter for free – but instead they want to charge extra for it (just like the Mini-DVI to VGA adapter in the MacBook series). The standard processor is the Intel Core 2 Duo at 1.6GHz and can run typical Mac OS X applications with very acceptable speed.
Keeping in mind that the specs of the MacBook Air are much less than those of the similarly-sized MacBook, and that the PC alternatives (such as Lenovo’s X300) are much more feature rich, the MacBook Air might not be for you. However, if you’re looking for a very lightweight Mac OS X-capable notebook and have a chunk of money to spend, then the MacBook Air is a very suitable machine.
Slashdot comment from article on Perl 6
Posted: January 22, 2008 Filed under: NEZzen Leave a comment »(I was a Perl guy for 15 years, used to love it, now Perl and Ruby both look like line noise that’s been encrypted — compared to my new girlfriend, Python.)
I’ve been a fan of Perl ever since the 3.x era. A couple years ago I got a job at a place where the scripting language of choice is Python. My take on it is that Python is that cute, quirky goth chick you met at the bar. She’s fun for a while, but once you get to know her you realize that she’s got some pretty deep emotional issues that drive you absolutely nuts. And she’s really, really obsessive about her appearance.
No, I’m more than happy to stick with Perl. She may be a little older and not quite as attractive, but she has a wonderful personality. Plus, there’s more than one way to do her.
— Chelloveck (14643)
So Just What is Bashrc
Posted: January 15, 2008 Filed under: NEZzen Leave a comment »You’re most likely using it without even knowing, but .bashrc is a script in your home directory that gets executed every time you start a shell. You’ve most likely updated this file if you have ever wanted an alias to be created (like to enable colors when running ls), or an environment variable to be altered (for example, appending something to PATH) for each instance of bash you start.
Included in most Linux distributions are both .bash_profile and .bashrc. The difference between the two is that .bash_profile is executed for “login shells” (when you login at a TTY or RSH/SSH/Telnet session), while .bashrc is executed for interactive non-login shell (ie. starting a shell from within another program or by /bin/bash). There is also a related file that executed on logout called .bash_logout.
Typically, most people will probably never remember the difference between the two files, and normally it does not matter because they are generally set up so that one will call the other. If not, you can prepend the following lines to your .bash_profile:
if [ -f ~/.bashrc ]; then source ~/.bashrc fi
This should finally clears up for everyone! And don’t forget to check your man pages for more information.
Command-line iSight Capture
Posted: December 22, 2007 Filed under: NEZzen Leave a comment »Here is a small utility that I find useful for grabbing a look at what is going on near my Mac when I’m not around. Basically, you execute it with a command like this:
$ isightGrab > snapshot.png
I can access it securely via the lightweight SSH protocol when I’m not around, which makes this a useful little utility. The code is open-source and is part of the larger “iPhone Remote” project.
The source code can be found at their SVN repository. The only differences are that I compiled this for both X86 and PPC architectures, and I removed the mimetype header output transforming it from a CGI to a CLI program.
Have fun!
Calculating Sever Uptime in PHP
Posted: December 22, 2007 Filed under: NEZzen Leave a comment »This little bit of simple PHP code lets you determine the uptime of a machine in a human-readable format. Of course, you can pull the code apart and do other things with it. First I will start by just giving you the actual code, and then I will explain how it works.
<?php
function getUptime() {
// Calculate server uptime
$uptime = exec("cat /proc/uptime");
$uptime = split(" ", $uptime);
$uptime = $uptime[0];
$secs = intval($uptime % 60);
$mins = intval($uptime / 60 % 60);
$hours = intval($uptime / 3600 % 24);
$days = intval($uptime / 86400);
return($days . " days " . $hours . " hours " . $mins . " minutes " . $secs . " seconds");
}
echo("Server Uptime: " . getUptime()); // display the uptime
?>
The magic sauce that makes this all work is Linux kernel’s interface to get the system uptime: /proc/uptime. The first value it returns is the number of seconds the system has been up, so we split that out and store it in $uptime. The next thing we do is create integers for the days, hours, minutes, and seconds of uptime using a little bit of creative arithmetic. The final process is just a concatenation of the values into a human readable string, and then output it to the page.