Archive for the ‘Linux’ Category

AOTD – Songbird

Friday, December 5th, 2008

It’s been a while since I’ve done an application review.. so here is one! Songbird.. it’s more or less just an itunes clone, so what’s the big deal?  It’s Open Source! What’s that mean?  Anyone can improve it, write extensions for it, and change its theme.  This leads things open to numerous possibilities.

There are already extensions to make songbird communicate with your ipod, download song lyrics, cover art, make mash up disks, and fancy visualization effects. Oh, and did I mention it runs on Windows, Mac, and Linux?  Why not just download it and give it a try?  It’s free.

So, what’s the downside?  From what I can tell the program is currently very CPU and memory intensive.  I’ve looked at some of their bug reports and this is a problem they know about and are looking into.. so hopefully it will be fixed by version 1.1.

Overall, I think it’s a great program with a lot of features.  Tune it up a little bit and it will be perfect.  Give it a shot, you might like it!

And currently wordpress isn’t allowing me to upload images for some reason, so I’ll get a screenshot on here later.

Load Balancing

Thursday, November 20th, 2008

So, I got curious today as I do with most things and I decided to experiment with my laptop.  It occurred to me that since it has two network cards (wired, and wifi), that I could potentially load balance the two and get an increased speed overall, so I gave a shot.

My first attempt was bonding the interfaces (via the linux kernel bonding module), but that turned out to fail pretty badly since not only was each interface a different IP, but on a completely different subnet.

After trying that, I focused on more routing table type things.  I knew that the routing table had default entries, so I tried to just add two.. but that broke more than it fixed.  Then I discovered there is a method to add multiple default gateways.  Here’s what I came up with:

ip route add default equalize scope global nexthop via <GATEWAY> dev eth1 weight 2 nexthop via <GATEWAY> dev wlan0 weight 3

Just with that simple code (replacing the devices with your devices, and the gateways with your own gateways), it worked.  What linux ended up doing is giving priority to wlan0 (as shown by the weight), and then once that bandwidth got used up, it switched over to eth1.  This is perfect.  I could be downloading something off a webpage on one, and still be online without any bandwidth bottlenecks on the other.

Aside: For those of you who don’t know how to figure out your gateways, simply to connect to the network and type “route” in a command line.  You’ll see a list of different routes. Look for the one that says “default” on the left, and the proper device on the right.  In that row you’ll see the listed gateway for that interface.

I doubt this is something I will use every day, but it is nifty, and could come in use eventually.. maybe.

Analyzing Twitter

Monday, October 6th, 2008

For those of you who don’t know, twitter is a web application that allows people to tell any other “followers” what they are doing.  You can update it online, through many client applications, and by cell phone.

I’ve recently started a project (C++) that I hope will analyze twitter’s “tweets” (as they call them), and look for common positive and negative terms.  Through these terms, I want to try to make some sort of graphical display which presents the world’s current mood as a whole (and by the “world”, I mean twitter users of course).

Another goal of mine to be implemented eventually is to add support to learn new words and associate them with positive or negative statements.

I won’t pretend to be perfect in the algorithms I use to analyze the statements received from Twitter’s RSS feed.  Right now, the “analyzer” is fundamentally just a word search (with some fancy stuff added on that looks for derivatives of the words as well, i.e. past-present-future).

I should hopefully complete the project this week (if my school schedule doesn’t dramatically change).

The Curse of Boredom

Friday, September 26th, 2008

Well, late one recent night I was sitting around (at about 11 PM or so), and didn’t want to go to bed quite yet.  I’m a late-nighter.  So I decided I would test something.  Many (if not all) routers out there block incoming UDP packets unless the router has been “hole punched”, that is, if UDP packets are being sent both ways as if two computers are trying to send information between one another.

So, what did this result in?  If you know about nc (if you don’t, it’s a little linux/unix app to send data across the network), I started that up and started sending back and forth between my desktop here at school, and one of my servers.  So, this is fine.. I’m testing to see if routers actually allow hole-punching, right?

My Results:

(Click to see large version).
As you can see… I may have been a little too bored that night.

The good news is I discovered how hole punching works!

Adventures in XDMCP Land

Monday, August 18th, 2008

So, I’ve been trying to persuade some of my friends over to linux lately.  There are different technologies that give people a try of linux before using it.  One of the more popular ones at the moment is the live CD.

Over the past few days I’ve been researching and experimenting with XDMCP.  I installed debian on a Virtual Machine (VM), and then installed a base system with gdm, XOrg, and xfce4.  After that, I enabled gdm for XDMCP (just under the [XDMCP] section in /etc/gdm/gdm.conf, i added Enabled=true).

Then I connected, and what do you know? It worked!  Right away I can see problems with the potential technology.  Security concerns for XDMCP are high, but using it under a LAN condition should be fine.  The protocol is unencrypted, but if no one has access to the information, it shouldn’t be an issue.  The second issue is under slow networks, the OS might feel slow, giving the wrong impression of Linux as a whole.  The third issue – No sound.  Now, it’s not technically X’s job to provide sound with a session.. it’s the job of something else (i.e. ESD, OSS, or ALSA).  I may do a little research into sound forwarding later, but it isn’t a priority.

So, what’s the good part? Ease of use.  Keep using it like a real system! It keeps all your files and settings (unlike the live CD). It’s also supported natively by many linux OS’s (XDMCP is generally a native component of most X managers these days, including XDM, GDM, and KDM).  It’s also possible to connect to it on windows via XMing or Cygwin.

Personally, this has also given me some exercise in securing an operating system.  It taught me a few things, as well.  I implemented limits to prevent fork bombs and certain types of DOS attacks.  I also implemented user hard drive quota’s so one single user can’t use up a whole HD.  I also put a inbound/outbound firewall in place using iptables.  I edited /etc/profile and /etc/adduser to make each user’s home directory private (changing umasks and default folder mods). I believe it’s a pretty secure system.  When I actually give it out to other geeks, I guess I’ll find out whether that’s true or not.

I think XDMCP is worth my time, if only for learning purposes.  It also gave me a deeper understand on X forwarding and X in general.

AOTD – Miro

Tuesday, August 12th, 2008

Miro is an video feed aggregator.  It’s main function is to take many RSS feeds, parse then, and extract any videos they might link to.  This provides sort of a pseudo internet “TV”.

When I first downloaded it, I noticed it had hundreds of built in RSS feeds ready to use.  It also had the ability to search for videos in all the feeds.  So, I set it up to downloaded new movie trailers, some AdultSwim stuff (cartoons, such as Robot Chicken), and Linux.com video feeds.

So far I’m impressed with its design and its ease of use.  There really is no downside to the program itself, I’m just not sure how useful it would be to me.  I like the whole idea of automatically downloading new videos from the sources I specify, though, I’m not sure if this is a program I would use on a day to day basis.

The other downside, from a programming aspect, is I’ve found it has a tendency to crash from time to time, though it isn’t enough to convince me to stop using it for that single reason.  It also gets clogged up during a massive video search sucking up CPU time to do the search.

So, if you are into a program to take all the videos in RSS feeds, download them, and then view them, then this program is for you.  If you just watch some youtube videos from time to time, then check out the program, you may like it, or you may find that just hopping on youtube in firefox is easier than starting up this program.

PeerNet – Update

Wednesday, August 6th, 2008

Well, PeerNet is progressing.  I just began the programming of the Network Pool.  The network pool is a class to manage the creation of virtual sockets to connect to other peers within the network.  It also keeps track of all the peers in the network.

So, what’s been completed so far?  I’ve completed and tested the following:  Blowfish cipher, Network Socket (TCP), Encrypted Socket (bfSocket), Packet API, debugging API (including MemTest, and a logging system), and other simplistic API’s (Getting time, Packet Decoder, etc).

Here’s what I need to finish: Network Pool, the Main bootup system, and then any modules that are going to be added to the system (including a test module, chat, and statistics).

So, I hope I’ll be testing the system within the next few weeks!

PeerUFS becomes PeerNet

Wednesday, July 30th, 2008

The original system for a p2p filesystem was unstable, and to the point that I was unable to easily track down the bug.  Now, this didn’t call for a complete rewrite (given enough time and  effort I’m sure I could find the bug).  What made me want to do a complete rewrite was that I had some ideas on improving the system on a whole.

One of the main features of the new code is the extendability to more than just file sharing.  In example, I’d also like to add some sort of secure chat functionality to it.  This is why the name was changed, as well.  It is not longer just a file system, but a whole architecture for a LAN p2p system.  It also has a more modular design, making adding features and correcting bugs easier than the previous design.

I hope that this new rewrite is easier to find the bugs in, as well.  Though, I did just spend the last eight hours or so looking for a bug which turned out to be in a system that I thought was 100% bug free.  I guess not.  I hope to have this done by the end of the summer so I am able to test it in a real environment.

AOTD – Alltray

Friday, July 11th, 2008

The application of the day today is something I use every day, but often forget I use.  Alltray is a linux application used to store any other application within the system tray.  Pretty simple concept.

You may wonder what this could be used for.  I use Alltray with Thunderbird.  I like to keep my email client open at all times, but often it clutters space on the desktop that I want to use other windows.  Simply minimizing works, but that takes up room that I’d be using for other applications in the taskbar.  Thunderbird doesn’t have a plugin [for linux] that puts it in the tray, so I simply use alltray when I start it up.

It’s a very useful application.  Too bad I can’t supply a screenshot of it… as it’s a purely conceptual program.  I can tell you it works nicely though.
My only complaint (and this might not even be its fault) is that when using AllTray with Compiz, it won’t show whichever application on a different workspace than I started it on.  When I click the icon I want it to show the application on my current workspace, not the first one.  If you use metacity, however, it works perfectly.  I often forget I even use it.

AOTD – dvd::rip

Friday, July 4th, 2008

Well, I’ve been lazy the past few days.  It’s been tough with working so much.

Anyhow, the program of today is dvd::rip.  As you may be able to tell it rips dvd’s!  The program is for linux, and makes the whole process easy.  Just stick in the DVD, start up the program.  Rip the DVD to your computer, and then transcode it to whatever format you’d like (mpg, avi, etc).  Isn’t that easy?

I won’t go over the exact details of how to use it, but it is a pretty intuitive program for someone technically experienced in the area.  Even a little experience is enough.

So, check it out, it’s the only program I use for ripping dvds.