tech

Tech Blog

General purpose computing is under attack. Watch this presentation from Cory Doctorow and read this post from Read Write Web for the backdrop.

From the Read Write Web article:

Doctorow says that we haven't lost the war on general purpose computing, "but we have to win the copyright war first if we want to keep the Internet and the PC free and open." I don't disagree that winning the copyright war is important, but the first priority needs to be convincing the public at large that general purpose computing is important in the first place. Failing that, we are always going to be fighting a losing battle.

When I look at the perception of general purpose computing in the eyes of the public at large, what I see is a population who sort of knows it exists, but is unable to grasp the fundamentals or the importance. The good news in my observation is that they sort of know it exists, as opposed to being completely ignorant. Of course my evidence is my purely anecdotal experience based on interactions with luddite friends, family members, and coworkers - but that experience seems to be broad enough to be valid for anyone in the Western world.

If this "war" on general purpose computing is to be won by our side, the number one thing that has to happen is a ground up push for education in what computing really means and the level of enablement it provides everyone who has access to it; that number of people happens to be very large now compared to when I first got ahold of a computer in 1997.

The analog to the state of understanding computing is science before it became a mainstay in elementary education. Science is presently introduced to our children as a basic primitive building block of their education at a very early age. Of course, it has not always been this way. When the education system was all about "readin', writin', and 'rithmetic" there was at least a loose knowledge that scientific practices existed even though it may not have been thoroughly accepted or thought of as a tool to better understand the world and enabled the create marvelous things that have advanced human society.

We are at that stage with computing. The population, by in large, knows it exists but does not know what it entails. If that is to change, our young people must learn how to use computers at a young age. By "learn how to use computers" I mean not learning how to simply type and use Microsoft Excel and Word in elementary school for their homework or learn what appropriate email etiquette is, but be enabled to learn how to do things like write a program or understanding how operating systems and hardware works - even if both of those collections of knowledge are only understood at their rudimentary levels. Of course, the skill learned in this aspect of a young person's education isn't going to be a mainstay in everyone's day to day work, just like science isn't (especially in mine). But it is important that the foundation for what computing is, what it means, and what it allows be fully understood. We understand that for science... now it is time to do the same for computing in our education system.

But how? I don't have the answers, but things like NYC's new high school for Software Engineering or a program like Byte Works in St. Louis seem to be absolutely wonderful foundations to start and learn from.

If a service doesn’t have a way for me to support it directly, and isn’t depending on my support, I’m going to be very wary of depending on it. -- From "2011 The Year the Free Ride Died" on ReadWriteCloud

I use Amazon's EC2 for a multitude of things - including personal use as an IRC bouncer, a website host, and a SOCKS 5 proxy. Sure, there are more cost effective VPS providers out there for the types of things I'm using EC2 for when it comes to my personal usage pattern. However, I pay the extra money because I love the API and I totally grok Infrastructure as a Service.

Case in point, I open only ports 22 and my port for IRC bouncing to whatever my public IP address is at the time. I don't switch public IP addresses that often, so it was never onerous to do this through the AWS console.

But this morning I decided to sharpen my boto and python knife and script up this process too. What I have now is a script I can evoke on the command line that accepts two options, --port and --group. For whatever --group I specify, rules will be created to allow inbound traffic from my current public IP address on those ports to any instances that belong to the group I specify. Additionally, if any rules previously existed on that security group that have a port range that is upper and lower bounded by a port specified (meaning, a rule listing a single port instead of a true port range), then those rules are moved. This allows me to make sure access to the instance(s) in my security group is limited to only the public IP address that I'm coming in from.

Here's an example usage:

Here, 99.98.113.100 is the public IP I'm coming in from.

What this doesn't do (yet) is detect when my public IP address has changed and automatically change the security group rules to take my new public IP address in to account. There might be fun ways to do this - possibly by listening to OS events for changes to network interfaces. More crudely, the script could just run in the background and hit http://whatismyip.org periodically to check if the response body has changed since the last time it was run.

Anyway, here is the code on Github. Enjoy!

Apparently Adium attempts to use Safari in some way, shape, or form to initial authorize itself to Facebook to connect to Facebook chat. However, if you already have Facebook cookies from a previous session sitting in Safari, Adium goes in to a never-ending loop of authorizing Adium to use Facebook auth.

The trick around this is to simply just clear your Safari cookies for Facebook and then attempt to connect to Facebook chat via Adium again.

Here is a really fun blog post about how one developer swapped out his Macbook Pro for an iPad and Linode.

My first reaction upon reading this is "oh that's cool.. but that won't apply to me". This is mostly because I work in the Java enterprise/SOA space - this means working with lots of fat tools and IDEs. I don't quite have the luxury, nor the kung-foo yet in vi to even begin to pursue a work setup like this.

But do I need to?