Beginner Builder series 75% done! will probably never be finished. :(

Tuesday, January 12, 2010

Instantbird: Mozilla based Pidgin.

It seems like nowadays, XUL based freeware is spreading to every type of program, and instant messaging is no exception. Instantbird is a multi-protocol IM client that uses Pidgin's libpurple to deliver the messages, and Mozilla's XUL library to display the interface. In other words: Pidgin turned Firefox.

Of course, what would a multi-protocol client be without protocols?
  • AIM
  • Facebook
  • Gadu-Gadu
  • Google Talk
  • GroupWise
  • ICQ
  • IRC
  • MSN/WindowsLive
  • MyspaceIM
  • Netsoul
  • QQ
  • Simple
  • XMPP
  • Yahoo
 One of the nice things about Instantbird being built off XUL is that -like Firefox and Thunderbird- you have a plethora of addons you can get to further customize it to your liking. You can add Emoticons, Message Styles, Protocols, Themes, and more, just like Firefox, there's pretty much everything your heart could desire. Unfortunately, because Instantbird is so young, there are barely any addons, like in the case of Protocols, only one (and it's in development). So the addons are definitely a good feature, but they need some time to grow.

 Baby Steps.
To be honest, Instantbird kind of has a ways to go. You are unable to set the sound scheme (other than diving into a JAR file and manually replacing the WAV files), you can set a custom "Away" message, but you cannot have things like "Do Not Disturb" or Invisibility, and downloading Instantbird from the website presents only a ZIP file, which would be great if Instantbird was portable, but it's not. Things like a custom sound scheme (possibly even as an addon), custom Away messages (which Pidgin has mastered), or an Installer or Portable version of Instantbird are just several examples of the next steps that Instantbird needs to take. Don't get me wrong, that doesn't mean it's not a wonderful app. I downloaded it and it sits right along Pidgin and Miranda in my start menu. I can start it up, and have all of the basic functionality that I need from any of the other multi-protocol clients.

The good, and the future.
The things that I do admire about Instantbird is that it is open source and cross platform. In a way, Instantbird is much like Songbird: it's a non-Mozilla app built off XUL that has practically unlimited potential. The wonderful thing about Songbird is that with most media players, you think "Gee, I wish it had [this feature] or [that feature]," but Songbird fills that with the customization from addons. And that's what Instantbird could do. Imagine an Instant Messaging client with all the power of Pidgin, enhanced with hundreds of addons! An addon for webcam chat, an addon for browser integration, an addon for buddy pounces....the possibilities are endless! The only thing standing in Instantbird's path to being a truly magnificent piece of freeware (available on all three primary operating systems) is time. I personally can't wait to see what Instantbird will bring to the table when it's more mature. It's already a good client now. In a few years, it could be amazing.

Visit Instantbird website for download

Tuesday, January 5, 2010

Data Crow: Media cataloger that's simply caw-esome

Almost everyone owns media. Books, DVDs, CDs, Software, it's all around us. Sometimes it can get a bit messy of what you have or don't have, and you might be looking for a way to organize it, and Data Crow can do just that.

Data Crow is a multi-featured media cataloger, designed to make it extremely easy to keep track of you various types of media. Right off the bat, it handles CDs, Movies, Books and even Software. It's pretty straightforward and easy to use, but also has the ability to be extremely customizable to an experienced user.

 Almost every single area of Data Crow is extremely well organized. It has everything divided up into "Modules" that can be enabled and disabled, so you can choose your own list of items you want to keep track of (example, "CDs", "Movies", "Books", etc). Under each module, there is also sub-Modules, like "Actors" or "Directors" for the "Movies" module, or "Artist" for the "CDs" module. Furthermore, under a module, you have a list of the items, like for example, I have "Extreme Days....I-Robot....Monty Python....." under my Movies, but you can also choose different ways to sort, like by "Actors", "Year", "Director", or just even by "Title".

The thing that (A) most impressed me, and (B) drew me to Data Crow is the ability to import an item. There's a TON of information for media items. Instead of entering in a DVD's title, director, actors, front cover, play length and other stuff that you might want, you can also just import all that data with a few clicks. The "Item Wizard" lets you search various online databases for the item that you have right in front of you. You can use the ISBN for things like books, and the UPC (barcode) for CDs, Movies, Software, etc. It's extremely accurate (from when I've used it). It uses well known sites like Amazon, Barnes and Noble, IMDB, and gets almost every field available (depending on what site you choose). If the websites miss something or get it wrong, you can always manually edit a field.

The only other features I can think of to mention are Report and Filter. Data Crow can generate amazing reports in either PDF or HTML of an entire Module (ie, CDs, Movies). Very nice, if you need a detailed list of every CD/Book/DVD you own. It also has Filtering, which will bring up only the Movies/CDs/Books that match your filter, whether it be Actor, Author, Director, Title, etc.

The only thing that I was disappointed in was the ability to create your own module. Sounds great, right? Yeah, I thought the same thing too. I wanted to make a module dedicated to Steam games, but I found the process extremely difficult, and in the end, it just did not work out at all like I hoped. That being said, please don't let that taint your vision of Data Crow. I actually did create a good module, it just sorted the fields alphabetically, which put "Title" halfway down the list other than on top.

Otherwise, it really is a wonderful program. It's written in JAVA, meaning that it is cross platform. To be honest, Data Crow is the first program that's written in Java that I actually enjoy profusely. Other programs do their job well, but they still have that Java-y feel to them, and they're often slow. Not Data Crow. It can actually be skinned to where it hardly feels like Java, and it's extremely fast.
On top of that, Data Crow is portable, and open source. What more could you ask?

Visit Data Crow website for Download

Listmas: Just in time for next Christmas!

This last Christmas, I was searching for a freeware to create an extremely easy Christmas List, but I couldn't find any*. So I decided to write one. Listmas is a one-of-a-kind Christmas/year-round gift-planning freeware.

First off, let me say that Listmas saves everything to a file as you are typing it, so you'll never lose any data. That means that when you fire up Listmas for the first time, it will ask you to either create a new list, or open an old one. If you've never use Listmas before, you click "New". Listmas v1.0.2009 saves lists in a new format, LMF (stans for ListMas File). Anyway, once you pick a new file, you see Listmas! Yay! You'll see a bunch of fields at the bottom of the window with text like "Item", "Person", or "Store" above them, but don't type in them just yet.

In order to add a new item, right click in the Listview (the empty space) and click "New". You should see a new row added to the listview that's completely blank, except for 5 grey stars. Now you can hop on those edit fields. Make sure you have that new entry in the listview selected, and then you can start editing the fields below. As you type, you'll see that whatever you're changing is being updated in the listview row as well.
Here's the fields that are available:
  • Item: name of the item
  • Price: price of the item
  • Person: recipient of the gift
  • Priority: how important it is that you get this gift
  • Store: where you bought it from
  • URL: the web address to that item, if you're buying online. Can be launched by the button to the right
  • Note: any other information you want to remember
One of the nice things about listmas is that nothing is required. Instead of forcing you to enter an Item name or a Price, you can leave whatever fields blank that you want.

Once you get a gift, you can mark it "Got" by either checking its "Got it!" box when you have it selected in the listview, or you can right click on a row and click "Got it". A "got" gift will turn to a different color, making it very easy to see what you have and what you don't have.

That's about it! Pretty simple, eh?

There are a few more features that I made sure to throw in which are all available in "Preferences" under Options.
  • Currency: if you want, you can actually have Listmas keep track of those dollar signs (or whatever currency symbol you use). In version 1.0.2009, Listmas has dollars, cents, pounds, and yen. Or if you want to keep track of it yourself, you can choose "N/A".
  • Grid: if it helps you stay more organize, you can add a grid to the list.
  • Done color: by default, "got" items are yellow, but you can change that to a variety of colors, or even white, if you don't want the color to change.
  • Open last used file: Listmas is designed to work that you open list files either from the simple "New/Open" dialog, or by passing them as an argument. But if you want, you can just make it remember the last list that you had open, and it will open that one.
  • Show columns: the thing that I really wanted to add was customization. What if someone wants to create a list for just one person, so they don't need the "Person" column? Or what if someone doesn't shop online, so "URL" is irrelevant? Well, Listmas lets you hide whatever columns you want. This doesn't mean that the field will be hidden, just the column. That means that if you hide "Note", in the list, the "Note" column will be gone, but there will still be the "Note" space below the list. The reason for this is that I thought maybe the list could just be an "at a glance" view, and then if someone wanted to view all of the information, they click on the entry in the list and see the rest below.

It really is simple, but it's also very nice. It's not perfect, but from what I can see, it's the only list program out there. It's open source written in Autohotkey, portable (mostly, but I'll fix it all the way in the future), and it's very tiny, at only 250kb in size.

I still have a few ideas, if Listmas gets enough people to try it out and tell me they liked it. Here's a few plans that I am.....well, planning.
  • "Shipping" column (for online buyers. I always like knowing how much I'm spending on shipping vs the price of the item.)
  • "Date" column (for the year-round aspect of Listmas. Maybe even a reminder, like for birthdays.)
  • Remembering & restoring column placement and width. (That would actually be pretty tricky, but I'd like to get there some day.)
  • Generating an HTML report (I've already toyed with this, and it actually is not so hard. Just exporting everything to a very nice, presentable page that the user could print if they're going shopping, that also contains data like "Total amount spent". The problem is, the reports look....bleh. I'm really bad at HTML, so it looks very ugly. Plus, I'm having trouble coming up with enough data for an interesting report. I'd need some help on this one.)
-CodeByter: *The one list program I did find was by a site called CodeByter, and I drew alot of inspiration from it to make Listmas (like the colored rows, thought I actually didn't think I could pull that off.) It was a wonderful list program, but it had a few things that I wanted changed, so that's why I wrote Listmas. Otherwise, I owe alot to him. His website is down, for some reason, which makes me terribly sad.
-UselessDreamer: For helping to point me in the right direction for putting images in a listview....and for the stars....sorry for stealing!
-Titan: For his amazing anchor script, which is like the oxygen for my programs. My windows would never be resizable without you, Titan.
-tkoi: For his Image Button Script. My GUIs are pretty thanks to you, tkoi.
-evl: For his amazing Listview color script. Didn't believe it possible (in AHK) until you proved me wrong.
-PhilHo: For his astounding listview-column-swap script, allowing me to add the stars, and take Listmas to the next level in the future.

Visit FreewareWire Software Downloads page for Listmas v1.0.2009

Saturday, December 12, 2009

Function Grapher 2: Math + Freeware = Fun

Function Grapher 2 is a wonderful little app that graphs mathematical functions. It's extremely simple, but complex enough to be able to graph terribly difficult equations. You can plot almost any function you can type in, then plot its derivative, evaluate the function at some point, evaluate the derivative at some point, and even do integration over a period. You can also graph implicit functions, zoom in and out, and save to a file (which can then be opened with the click of a button, if you're working with a certain graph over an extended period of time). The last thing to mention is that it's very much like a workplace, in that you can have multiple graphs open and switch between them.

Function Grapher is very small, only 56kb, and runs at next to no resources. I'm somewhat convinced that it is not portable, since my system now has the FGR extension (the saved files from Function Grapher) associated with it, and I don't ever remember asking it to do that. So while it may or may not require any files outside of itself, it will leave traces in the registry.

It's a handy little app for students. The only feature I wish it had would be like Wzgrapher, where you can save the graph as an image. But otherwise, it could be a life saver in those Calculus courses.

Visit Function Grapher 2 (Madhavan's) website for download

Skeys: Specialize your Special Keys!

A while ago, I bought a keyboard to use with my netbook, and when it came it had many function keys that I was not used to ("Special" keys, if you will), because I had not used a keyboard with special keys for several years (certainly not since learning Autohotkey.) As I tested them out, I found that some of them opened a web browser that I would rather not use, or that brought up an e-mail client instead of Gmail (which I use), or even that the volume + and - seemed to be swapped. So I decided to do a little coding and rebind it to what I wanted. That was easy enough, but then I thought, "What if I wrote a program for this?"

Skeys (pronounced like "skiis") is the result of me itching to code and getting a new piece of hardware. It's actually been in the works for quite some time, even "Stable", per se, but I haven't written about it or posted it on FreewareWire Software for several reasons which I will not name. Anyway, I think it should be ready now.

Before you can jump in to using your special keys, you have to figure out which ones you want Skeys to use and which key is which. When I was thinking about how to do this best, I was a tad befuddled at first. Of course I could name them things like "E-mail" or "Web browser", but where's the fun in that? (Plus, I wasn't sure if every single keyboard had all those keys do the same thing.) So instead, I took a different approach for identifying the keys you want. On the "Setup Screen", there are 18 buttons that all have "Use This Key" on them. When you press one of the special keys, the button for that key will change to "!!!Use This Key!!!" letting you know that that is the button for that key.

In addition, I also threw in an "Autocheck" feature; if "autocheck" is on, when you press one of the special keys, it will automatically press down the button too, meaning that you can configure which keys you want in under 20 seconds, easily.

The last feature for setup is Nicknaming. Again, naming keys "E-mail" or "Play/pause" is so droll, so I thought "Why not let the user be able to name them?" So when you find which button is for the key you want to use, right click it, and you assign that key its "Nickname", which will make it 100 times easier to identify.

The Heart of Skeys.
Finally we've come to the heart of Skeys. I wanted to make Skeys straightforward for the less computer-savy, but functional enough to be customizable to the fullest potential. The reason that you check buttons and whatnot is because I was writing Skeys and I got to its "heart", and I thought "Why should the user be worried about 18 different keys when they maybe just want to use one?" So using the Setup screen, you can handpick which keys you want to use, and then from then point on, those are the only keys you have to worry about.

So anyway, you can select the keys that you picked in the setup from a drop down list, and every key will either have the Nickname that you gave it (aha! See? Isn't it handy already?) or it's "reference code". [Every "Special key" has a reference code that is "SC" followed by three letters/numbers.] When you pick one of the keys from the list, you can then add actions that will be performed when the key is pressed. And
There are a ton I threw in. I wanted it to be completely feature filled, so here they are:
  • Open File/Program
  • Power Function
    • Logoff
    • Switch User
    • Standby
    • Hibernate
    • Hibernate/Standby [uses Standby as a backup if Hibernation is turned off]
    • Shutdown
    • Restart
  • Send keystrokes
    • Send
    • Paste
  •  Volume Function
    • Mute
    • Unmute
    • Toggle mute
    • Up
    • Down
  • Popup
    • Center
    • Bottom right
    • Bottom left
    • Top right
    • Top left
  • Skeys
    • Show Skeys
    • Show Skeys setup
    • Disable Skeys
    • Disable this hotkey
    • Exit Skeys
  • Wait
 Most of those are self-explanatory and don't have any configurable options, but others also do, which I will talk about now.
-OPEN FILE/PROGRAM: Choose whatever file/program you want to open/run. You can either manually type in the path to the file, or click the ellipses button and navigate there. Please note that in the "Select File" dialog, you may choose either "Programs (*.exe)" or "All Files (*.*)" from the drop down list below the filename field.
-"SEND"/"PASTE" KEYSTROKES: Under the submenu of "Send keystrokes", "Send" will "type" whatever you want. The only difference between "Send" and "Paste" is that "Paste" types whatever you have specified instantly, like pasting from the clipboard, while "Send" types one character at a time. I'll talk more about this later, because it's so massive!
-"WAIT": Simply waits, doing nothing, forever however long you specify. The time is in seconds, but is accurate to milliseconds (0.001 seconds). Don't go below that accuracy, though (ie "1.000000000001"), because that is just beyond the limitations of Autohotkey (and it's just plain ridiculous).

Sending keystrokes.
I only make this a separate section because it is so completely massive, and I am quite proud of it. You can send just about anything in terms of keystrokes, every single key on the keyboard from "A" to "Z" and from "1" to "0". But wait, there's more! You can also pick the "Other" keys, ones that aren't as straightforward.
-COMMON: Basically standard keys that have one function, and the arrow keys. Examples: Enter, Escape, Tab, Delete, Space, etc.
-F KEYS: All F keys, up to 24. Even if you don't have a keyboard that has 1-24, you can still use 13-24.
-NUMPAD: All keys and variations on the numpad. Note that, in terms of textual output, a "Numpad 7" is the same as a regular "7". The difference is only if a game uses the Num keys, or such. Also note that these options are uneffected by Numlock.
-TOGGLE: Contains the "Locks" and the "Modifiers". Although it should be obvious "Shift down" will act as though Shift has been pressed down until "Shift up" is indicated. A regular "Shift" will stay down only until the immediate following character, such as "{Shift}rs" will produce "Rs" (if capslock is off.)  A regular "Shift" will act like the user pressed and release Shift before sending the next key. Essentially, sending something like "{Shift}rs" is the same as sending "{Shift Down}{Shift Up}rs". (Thanks to Tony for catching that for me!)
-BRACES: (or brackets....) Because braces/brackets are used for "other" keys, they also become "other" keys themselves. In order to use a brace, just put it inside braces! Example: {{}Hi there!{}}     will result in        {Hi There!}

The coolest part about the key sending function is that it's very well organized. There is a huge menu with sub-menus and options that you can press, but you can also just get the gist of most keys and be able to type them in yourself. For example,
Enter = {Enter}
F2 = {F2}
Numpad - = {Numpad -}
If that isn't simple, I don't know what is! But if you're ever confused about what a key should be, the menu is there.

While writing Skeys, I thought "You know what would be even cooler than Skeys being able to do one of those things? It being able to do more." Every single key in Skeys has not only one command it can execute, but a list of commands. For example, you can make one key (1) mute the volume, (2) send "I love FreewareWire!", and (3) send the computer to standby, in that order. You can add (theoretically) as many commands as you want, and Skeys will execute them from top to bottom.
But please let me make myself clear: Skeys is not meant to execute a long string of commands, and therefore is not supported in doing so. Please don't complain to me if you have a list of 20 commands that aren't being executed right.

Disabling Skeys.
If you want to temporarily disable a hotkey, go to the Skeys main window (NOT the Setup), and just uncheck the "Enabled" box for that key. The effect will be immediate, and the Special key will do its original intention outside of Skeys.

If you want to disable ALL of Skeys, Double click on the tray icon, or right click the tray and click "Enabled". If Skeys is disabled, the icon will be greyed out, and all of the Skeys will do their original purpose outside of Skeys. In other words, when Skeys is disabled, Special keys will act as if Skeys is not even running.

If you want to make a special key do nothing, mark in in Setup, then just check its "Enabled" box in the main window without adding any actions. This will make Skeys take over that key from its original purpose, but then give it 0 commands to do, meaning it will do nothing.

Icing on the cake.
On top of all that, there are options that I included to make Skeys as streamlined as possible.
-Start with Windows: If you get to the point where you love Skeys so terribly that you need it all the time, there's an easy menu option for that.
-Start Disabled: If for some reason you don't want Skeys to be active when it starts, you can make it start disabled.
-Skip Setup: This is where it really starts to make the experience great. Once you get the feel of Skeys and you routinely use the same special keys, you can make Skeys skip the "Setup" screen, meaning it will go straight to the "heart" window.
-Start in tray: Maybe you are so used to Skeys that you don't even need to see the configuration screen. That's ok, check this option, and it will will skip both the Setup screen and the Heart screen and will sit quietly in your tray.

Final notes.
Just a few things that I want to say.
-PORTABLE: Skeys is portable, in that it does not need any external files and it leaves nothing on your computer. However, certain things, like launching a program with a Skey, will not work because the path is not relative.
-Open Source: Yay for freedom!
-Untested/Unstable: I've tested Skeys to an extent, but not heavily. There's already things that I know that don't work amazingly well, like the popups.
-Messy code: To be honest, I am a messy code writer and it's been a while since I actually wrote Skeys, so the code is very messy. (Hopefully a few programming courses next semester will whip me into shape.)

Just a few people I want to thank.
Xoxide - For making a freakin sweet, glowy keyboard to write Skeys.       
Titan - For his ABSO-FRIKKIN-LUTELY A-MAZING anchor script, whichout which my programs could never be resized.
Yook - For his AMAZING Balloontip script, letting you display a balloon any current control.

That's about it. I really love Skeys, possibly the most out of all the programs I've written just because of how limitless it is (and because, honestly, I'm really proud of the keystroke sending.) I hope if you decide to take a look at Skeys that you'll enjoy it. It's a fun little app that I believe has great potential.

[NOTE: Over the last two days, I've compiled and recompiled more times than I can count because I keep finding problems that I thought I had fixed a long time ago. So what that means to you is, Skeys is way less stable than I thought, so if you find an error (or errors), don't be surprised, but also let me know. PLEASE let me know. I really want to make it the most usable it can be, and I can only do that if I fix the bugs.]

Visit FreewareWire Software Downloads page for Skeys v1.1