Category Archives: Operating Systems

Regarding Android Malware

I’ve been reading a lot recently about 21 applications in the Android Market that contained malware, a potential timer, and other miscellaneous bad things. While I’ll agree that this is a very bad thing, I think it’s more of a failing of the Android Market than the device itself.

As phones are becoming more and more like full blown computers, it stands to reason that if the user of the phone installs an application (app)  and gives it the permissions it asks for, it’s going to be able to do what ever it wants. This is a given. The fact that this kind of thing is possible to me is a t estimate of the power of the platform. This isn’t necessarily a bad thing. In fact, I’d argue the inverse. The same thing is possible in any computer Operating System.

Where the real failing is here is the fact that these applications were available for download from the Android Market. I don’t advocate Google installing rules like Apple where developers survive at Apple’s whim, but I do think that some checks should be put into place to verify the quality and authenticity of the apps being distributed by the Market. Google is putting it’s name and the Android name on this market, and applications that come from the Market should be at the very minimum authenticated.

It should be noted that installing more stringent checks on the Market won’t prevent this type of thing entirely, as Android isn’t the iOS, and applications don’t have to go through Google to be installed (this is a GOOD thing). Because of that, it will always be important to verify that the apps you’re installing on your phone are trustworthy, but at least make the apps that are being distributed by the Market trustworthy.

Linux and the Command Line

In this day and age, pretty much anything in Linux can be done from the GUI. That being said, the command line holds such tremendous power that it really shouldn’t be ignored. If you’re not familiar with the Linux command line, and you have a Linux box that you can use, I’d highly recommend familiarizing yourself with it. Here’s some basic commands that I use almost every day. Keep in mind, some of the syntax may vary depending on distribution.

ls: ls is one of the most basic and important commands. It can give you a list of files in a specified directory, or the current one if you don’t specify. More or less information can be requested using flags. For example, I use “ls -alrt” almost constantly. This command and flags will show you all the files in a directory (even the hidden ones) in long listing format. Not only that, but it puts them in reverse order by modification time. In short, it puts the most recently modified files at the bottom. Very handy.

cd: cd is another of the most basic commands you’ll run at the Linux command line. It will change the current working directory to a specified directory, or if no directory is specified, take you to your home folder. Adding a dash to the end (cd -) will take you to your previous location, which can come in very handy if you’re moving around a lot, or if the path to that location is extremely long. It can also be used in conjunction with another command, which can be endlessly useful. For example, “cd /home/mike && runcommand.t”, which will take you to the directory /home/mike and execute the “runcommand.t” file, and then return you to the previous location.

cat: cat is useful in and of itself, but it doesn’t start to really shine until you add it to other commands. cat dumps the contents of a specified file out to standard out (your terminal) for your viewing. If the file is to large, then things can be a little overwhelming, but that’s really where other commands can come into play. grep and awk (which we’re getting to) are two of the more useful, but others that you’d never expect can be valuable. For example, using the command “time cat”, will start a stopwatch that will stop when ctrl-d is pressed.

find: This command does pretty much what you’d expect it to do. If you’re looking for a file, type of file, or basically anything in the file system, find can find it for you. This command is one that I’ve seen vary a lot over time and distribution, but it’s usefulness is hard to question. The one problem that I have with this command is that it searches the entire file tree you specify, so if you give it /, it will search any and every path you have permissions to, which can take a great deal of time. That is where locate really shines, so it may be a better choice if you’re not sure at least on a general location. I’m not going to go into examples for find, just because it’s such a powerful command, I couldn’t do it justice in a single paragraph.

locate: Searches a database of files on your computer to make finding files quicker. locate can be very handy, but it’s not always installed on a system, so it’s not as universal as the actual “find” command. A command (updatedb) has to be run to update the file location database, so files that are new to the system won’t be found until if you run the locate command without the updatedb command.

grep: If you’re looking for a pattern of some kind in a file, grep is the tool for the job. It can be used on it’s own to find a pattern in a single or multiple files, or it can be an amazingly handy tool to pipe output from other commands to. Using the grep command by itself, you can get things like “grep -n mike *”, which would go through all the files in the current directory and find the name mike in all of them. It will print out on the page every time it finds a match, and the file name, and the line number. Very handy. Also, the command can be used like “ls -alrt|grep mike”, which will give you a list of all the files in the current directory that have “mike” anywhere in their information (which could be in more places than just the file name).

awk: awk is kind of an interesting command, and one that’s hard to really get to know. It, like grep, is an excellent pattern matching command, but I’ve never used awk straight from the command line like I do with grep. awk can be used to find multiple different patterns in a single command. One example would be “awk ‘/string1/ || /string2/’ filename”. This would find any lines that contained either string1, or string2 in the file filename. Very cool if you spend a lot of time parsing information from text files.

wget: wget is a command that I use endlessly. I’m not sure it should be included here as a “command” in Linux since it’s really a stand-alone application, but it’s usefulness is so great that I feel like I have to include it. wget can be used to grab files from the Internet or Intranet in almost any way you want to do it. If there’s not a book on all the ways that wget can be used, there should be. My usual use is updating WordPress themes or plugins since I’ve never set it up to do automatic updates, but it can be used for downloading pretty much any kind of file as long as you’ve got the path to that file.

There really is so many more useful commands that I haven’t even touched on, I feel like I’m not giving the command line it’s due. I know that I could literally type for hours here going over the multitude of possibilities and uses for all these command line tools, so I’m not feeling super super guilty. Some I didn’t even touch on also so much functionality, it’s really kind of embarrassing to not mention them. sed, sort, touch, etc. This doesn’t even mention other applications, like ssh or ftp, which can be used to further extend the functionality of the command line.

If you’ve always been afraid of the command line, or you’ve never even tried to use it, now’s your chance. Fire it up and give it a shot. You’ll be glad you did.

Linux in 2011

Looking back on 2010, I think that it was a good year for Linux. Now that 2010 is over, what does 2011 have in store for Linux?

Android:

Android really took off in 2010, and it’s going to continue it’s meteoric rise in 2011. It’s going to be hard to read technology news that’s not going to mention Android. We’re going to be seeing Android running on anything and everything, including possibly the kitchen sink.

Tablets:

Tablet’s are really going to come into their own. Apple started the ball rolling, but it was an anemic first try. Little better than a glorified phone with a big screen. They’re going to probably try to correct their mistakes with an iPad 2, but by the time they do, the market will be saturated with Android devices that are cheaper and more capable. Don’t expect it to change Apple’s marketing any though. They’ll still try to take credit for everything up to and including the air we breathe.

Wayland:

Look forward to seeing Wayland starting to appear on your Linux desktop. Ubuntu and Fedora are already officially heading that direction, so it’s looking like we’ll probably see other distributions head that way as well. I’m expecting Mint and SuSE are probably going that direction, though that’s not been announced by either.

Unity:

2011 will probably be the year for Unity. Right now, Unity exists in almost a pre-release form, but 2011 will be the year that it comes into it’s own. Now well it’s received will be something to see, but after using it for a while on my NetBook, I’ve grown pretty used to it, and am actually starting to really enjoy using it. There is still quite a lot of work to do on it, but given a year I think it will really be an interface to contend with.

Cloud:

The Cloud will continue to grow and flourish, and it’s well being can only be a good with for Linux. The more applications that move to the cloud, the less that are application specific, further weakening Microsoft’s hold on the market, and freeing people to move to a better OS. I’ve already written a full post on this, so I’m not going to spend more time on it here.

Looking back, 2010 really was a good year for Linux, but based on the things that I see coming at us in 2011, I’m expecting 2011 to be even more so.

So, with that in mind, let’s begin.