I am going to preface this post by stating once again that I am a computer science student with the intention to some day to become a software developer. As such, it is no surprise that most of the desktop applications that I can’t live without have something to do with programming. It might also be necessary to mention that my use of “desktop application” might not be what the traditional user would consider a Desktop application. Not all of them are launched by double clicking on an icon. But all of them are, in my opinion, amazingly developed pieces of software that make my life as a fledgling software developer much easier. I am labelling them “desktop applications” because they are software applications that I run on my desktop computers. As opposed to “apps” that I use on my tablet and smartphone.
1. Surprise surprise! To start out on the list of applications that are absolutely and completely awesome programs that most computer users never use: the terminal! I have run Ubuntu on my laptop since I turned 18, but it just in the last year or so that I have really come to appreciate the power that the terminal gives to a user. I use the standard GNOME terminal that comes packaged with all Ubuntu installations, and I find it absolutely fascinating. There are so many cool programs that can only be run in the terminal (three of which also made this list and will be listed later). The commands grep, wget, and cat are just some of the commands that I run on a regular basis. In addition, I’ve also learned how to write a few basic bash scripts which makes the terminal more powerful. It is so much fun to write scripts! I wrote a script for a friend which automatically converts her audio files from her cellphone into .wav files so that she can burn them onto a cd. I also wrote a script which downloaded all of the XKCD comic, and today I wrote a script just for fun that turns the display on my netbook to full power. And, if you add a bunch of aliases to the .bashrc file in your home folder, you can make the command line much more fun to use.
2. I’ve already written a ton of posts on how awesome Dropbox is, so I don’t think I’ll go into great detail here. Check out my post on how I use my Dropbox, if you are interested. Pretty much everything that I am currently working is saved into my Dropbox so that I can have access to it on my three computers, tablet, and cellphone. And Dropbox plays nice with a lot of other software which makes your life so much easier.
3. One of the applications that I am currently psyched about is Sublime Text 2. It is one of the coolest text editors that I have ever seen. I love the gorgeous user interface. There are a ton of cool features, most of which I haven’t learned yet, but I am looking forward to the learning curve. I’m going to have to try the software for longer before I will know if it is sufficient for larger projects, but for now I use it to write small scripts, small programs, or miscellaneous notes of any kind. Sublime Text 2 recently replaced gedit (the native text editor for GNOME) as my number one choice for a simple text editor. It is free to test, but to get a licensed version, it costs $59. Still, the software is obviously well designed and some programmers obviously spent a good amount of time working on it, so if I had the money, I’d totally go for it. Without the license, a window pops up every so often to remind you to buy the software, but you aren’t actually forced to do so. Still…it is maintained by an active community, and available for Windows, Mac, and Linux.
4. Git is what I have used at work for about the past year. It is an awesome version control software which makes programming so much easier, especially since I usually am working the same project as two other people at my work. If you are interested, you can find my github profile here, although I haven’t actually started my own repositories or anything like that. Git pretty much means one thing: you can concentrate on the fun stuff, like programming, without having to worry about the organization stuff. If you accidentally delete something, you can always restore the files. If someone works on the same file as you and therefore there is a merge conflict, you can fix the conflict with one commit. You can create new branches in your repository if you want to do some major refactoring without adding compiler errors to some file that you colleague is currently trying to use to solve another problem. In short, it is awesome. I personally have also become a fan of using the git software to create my own personal repositories which I sync using Dropbox. Here is the code I use to create a new repository:
~/project $ git init
~/project $ git add .
~/project $ git commit -m "first commit"
~/project $ cd ~/Dropbox/apps/git
~/Dropbox/apps/git $ git init --bare project.git
~/Dropbox/apps/git $ cd ~/project
~/project $ git remote add origin ~/Dropbox/apps/git/project.git
~/project $ git push -u origin master
5. I’ve just started learning Prolog this semester, and I can honestly say that I don’t think that I have had this much fun since I began to learn Java. I have the privilege of taking Introduction to Logical Programming this semester, and we are learning Prolog. It is based on predicate logic and resolution, and…it is just so cool! I would try to explain it further, but unfortunately I don’t understand everything well enough yet to explain it all. If you are interested, I highly recommend looking it up. One of the reasons that Prolog is so cool is because it is a completely different concept than almost every other classical programming language out there (think Java, C, Python, etc). It requires you to really think, and rethink, pretty much everything you’ve learned about programming.
6. I also added my current second favorite programming language to the list: Groovy. I’ve been lucky enough to be able to use Groovy a lot of the time at work (although the majority of the code is still in Java). We have integrated a groovy shell into our tool, and it is simply awesome. One of the coolest things about Groovy is that it is to some extent an overclass of Java. That means you can write syntactically correct Java code and it is also correct Groovy code. This makes learning Groovy extremely easy for somebody who already knows Java, because you can write your code in Java and slowly integrate “groovy-esque” features into the code. Like automatic type recognition, closures, and editing of existing Java classes. The groovy shell is also really cool, because you can test out short snippets of code quickly to see if they work the way that you intend them to.
7. When I learned Java, I used a normal text editor. But when I started working, I learned how to use Eclipse. It was honestly a pretty steep learning curve. Eclipse is a huge piece of software. In fact it is so large, that I tend to avoid using it on my laptop at home because I have less than a GB of ram. However, once you’ve programmed Java with an IDE (Integrated Development Environment), you won’t ever want to go back. It is actually only in the last couple of months that I have really gotten the hang of some of the keyboard shortcuts (Ctrl+1, Ctrl+Shift+o, Alt+Shift+l, …), but they made programming so much easier. In combination with the code completion of course. Why would you want to type System.out.println(); when you can type syso+space? I also like that the eclipse project separates the class files from the source files. This is especially nice when you are programming with Groovy, because Groovy somehow creates an extraordinarily large amount of class files (because it creates a separate class file for every closure that you write. Which could be a lot). Because of this, I’ve taken to using Eclipse for my school work in addition to at work.
8. I use WordPressto power my blog. And if you are currently reading this blog, you are also currently interacting with WordPress. Isn’t it cool? This is the first program on the list which doesn’t make me a complete nerd. After all, millions of other people use WordPress, and I am assuming a good many don’t have the technical knowledge to know what actually goes on underneath the hood. But that is actually what I find so awesome about WordPress. It is easy enough that anyone with a minimal amount of knowledge of how to use a graphical interface should be able to get the hang of it in a very short time. And I’ve actually taken the time to peek under the hood a bit, and I was very impressed with the software itself. It is pretty well organized, simple to understand, and easy to modify and adapt. It’s an amazingly intricate piece of software, and I give the WordPress community some major props.
9. Inkscape is one of my toys. It is a really cool piece of software that allows you to create pretty cool graphics and vector graphics. I’d like to get around to using it more during the next couple of years. I’ve taught myself the basic things: making layers, editing paths, grouping and ungrouping objects. But I think it is really fun. If I were ever to actually get around to making a web comic, I’d highly consider doing it in Inkscape. Mainly because it is relatively easy to make incredibly cute vector drawings.
10. Firefox is my browser of choice. Although if I must be completely honest, it might very well be because Firefox is the default browser in the Ubuntu distribution. But I’ve gotten used to it, and I like it. No complaints. I can google anything in the main search bar, and have another search bar in the upper right corner with which I can search Wikipedia. I’ve bookmarked all of the pages that I use most often, and I have no intention to switch browsers any time soon. One negative is that due to the large header section of the browser, there isn’t that much room for viewing on my netbook. But I’ve gotten used to always hitting F11, so it isn’t an issue.